`
mengdejun
  • 浏览: 408745 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

BeanServlet 访struts

    博客分类:
  • Jav
阅读更多
package org.whvcse.jsp.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.whvcse.jsp.bean.DynamicBean;
import org.whvcse.jsp.bean.Form;
import org.whvcse.common.Character;
/**
* 该类覆盖HttpServlet的doPost方法.用户使用时需继承该类,该类会带入一个加载完毕的Bean对象.<br>
* 用户需在页面中用Bean标签指定相应的加载类.
* @author 武汉软件工程职业学院 计算机应用工程系0701 孟德军
*
*/
public class BeanServlet extends HttpServlet
{
/**
* 
*/
private static final long serialVersionUID = 1L;

private String classpath = "com.jsp.bean.Form";

@Override
protected final void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
    throws ServletException, IOException {
   doPost(arg0, arg1);
}

@Override
protected final void doPost(HttpServletRequest arg0,
    HttpServletResponse arg1) throws ServletException, IOException {
   Form f = null;
   String temp arg0
     .getParameter("beanname"));
   this.classpath = temp;  
 if (this.classpath != null || !this.classpath.equals("false")) {
    Class c = null;
    try {
     c = Class.forName(this.classpath);
    } catch (ClassNotFoundException e) {
     e.printStackTrace();
    }
    f = DynamicBean.get(c, arg0);
    arg0.setAttribute(this.classpath, f);
   } else {
    f = new Form();
   }
   beanPost(f, arg0, arg1);
}
/**
* 使用时需覆盖此方法.此方法会带入一个JavaBean对象.
* @param f 加载完毕的Bean组件
* @param request HttpServletRequest
* @param response HttpServletResponse
* @throws ServletException
* @throws IOException
*/
protected void beanPost(Form f, HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {

}

protected final void beanGet(Form f, HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
   beanPost(f, request, response);
}

}


//更多请下载该jar包
package org.whvcse.jsp.bean;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import javax.servlet.http.HttpServletRequest;
/**
* 动态Bean类:会将HttpServletRequest信息注入到一个存在的JavaBean对象中.该对象必须存在一个与之对应的字段.
* @author 孟德军
* 
*/
public class DynamicBean
{

private DynamicBean()
{
  
}
public static Form get(Class c,HttpServletRequest request)
{
   Object object=null;
   try
   {
    object=c.newInstance();
    Method[] methods=c.getDeclaredMethods();
    Field[] fields=c.getDeclaredFields();
    for(int i=0;i<methods.length;i++)
    {
     if(methods[i].getName().indexOf("set")!=-1)
     {
      String key=beankey(methods[i].getName());
      String value=request.getParameter(key);
      if(value!=null)
      {
       try
       {
        String type="string";
        for(Field f:fields)
        {
         if(f.getName().equals(key))
         {
          type=f.getType().getSimpleName();
         };
        }
        methods[i].invoke(object,new Object[]{getValue(type, value)});
       } 
       catch (IllegalArgumentException e)
       {
        e.printStackTrace();
       } 
       catch (InvocationTargetException e)
       {
        e.printStackTrace();
       }
      }
     }
    }
   } 
   catch (InstantiationException e)
   {
    e.printStackTrace();
   } 
   catch (IllegalAccessException e)
   {
    e.printStackTrace();
   }
   return (object==null)?null:(Form)object;
}
private static String beankey(String methodName)
{
   String s="set";
   String ups=methodName.toLowerCase();
   String key=null;
   if(ups.indexOf(s)!=-1)
   {
    key=ups.substring(s.length());
   }
   return (key==null)?null:key;
}
private static Object getValue(String s,String value)
{
   Object temp=null;
   String st=s.toLowerCase();
   if(st.equals("int"))
   {
    temp=new Integer(value);
   }
   else if(st.equals("string"))
   {
    temp=new String(value);
   }
   else if(st.equals("double"))
   {
    temp=new Double(value);
   }
   else if(st.equals("float"))
   {
    temp=new Float(value);
   }
   else if(st.equals("boolean"))
   {
    temp=new Boolean(value);
   }
   else
   {
    temp=value;
   }
   return (temp==null)?null:(temp);
}
}


package org.whvcse.jsp.bean;

import java.io.Serializable;
/**
* JavaBean对象标识,对象需继承此类.无其他作用.
* @author 孟德军
*
*/
public class Form implements Serializable
{
private static final long serialVersionUID = 1L;
private boolean reset()
{
   return true;
}
}
 

 

分享到:
评论

相关推荐

    Servlet和Struts2的交互(转载)

    Servlet和Struts2是两种在Java Web开发中广泛使用的框架,它们在构建动态Web应用程序时起着关键作用。Servlet是Java EE规范的一部分,提供了一种服务器端编程模型,用于处理HTTP请求并生成响应。而Struts2是一个基于...

    JSP,Servlet,Struts2,struts1,数据库乱码处理

    JSP,Servlet,Struts2,struts1,数据库乱码处理

    servlet模拟struts1工作原理

    本文将通过使用Servlet来模拟Struts1的工作流程,深入理解其核心机制。 首先,让我们探讨Struts1的基本架构。Struts1框架的核心组件包括ActionServlet、ActionForm、Action、Tiles以及配置文件(struts-config.xml...

    Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)

    《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇...

    jsp servlet struts hibernate spring

    【标题】: "Java Web开发中的JSP、Servlet、Struts、Hibernate和Spring技术详解" 【描述】: "本文深入探讨Java Web开发中常见的技术,包括JSP、Servlet、Struts、Hibernate和Spring,讲解它们的工作原理和实用技巧...

    servlet与struts简介

    ### servlet与struts简介 #### 一、Servlet概述 Servlet是一种服务器端的Java技术,用于扩展Web服务器的功能。Servlet能够动态地生成Web页面,并且可以处理来自客户端的HTTP请求。Servlet是Java EE的重要组成部分...

    JSP-servlet-struts-sqlserver开发的网上购物商场

    3. **Struts配置**:学习struts-config.xml文件的配置,包括Action映射、Form Bean定义、数据校验规则等。 4. **MVC模式**:理解模型、视图和控制器之间的协作,以及它们在Web应用中的作用。 5. **SQL Server数据库...

    四个小系统,运用jsp,javabean,servlet,struts

    【标题】:“四个小系统,运用jsp,javabean,servlet,struts”揭示了四个基于Web开发的小型应用,它们分别使用了不同的技术栈来实现各自的功能。这四个系统包括在线订购系统、信息发布系统、公告管理系统以及BBS论坛...

    ExtJS4+Accordion+SERVLET/STRUTS2+JSON+Ext.tree.Panel实例

    这个实例结合了多个技术,包括Accordion布局、Servlet、Struts2以及JSON数据交互,以及Ext.tree.Panel组件,以创建一个功能丰富的用户界面。 Accordion布局是ExtJS中的一个布局管理器,它允许在一个区域内组织多个...

    JavaWeb整合开发王者归来JSP+Servlet+Struts+Hibernate+Spring.part3

    JavaWeb整合开发王者归JSP+Servlet+Struts+Hibernate+Spring共分五部分。这是第三部分。

    Java.Web开发 JSP Servlet. Struts Spring Hibernate Ajax

    Java.Web开发 JSP Servlet. Struts Spring Hibernate Ajax

    java web 实战宝典_JSP+Servlet+Struts_2+Hibernate+Spring+Ajax

    根据标题、描述和部分内容,知识点覆盖范围主要集中在Java Web开发领域,并且包括了JSP、Servlet、Ajax以及SSH框架(Struts 2、Spring、Hibernate)的技术整合和实战案例分析。 JSP(Java Server Pages)是一种动态...

    Java.Web整合开发王者归来.JSP+Servlet+Struts+Hibernate+Spring.part2.rar

    Java.Web整合开发王者归来.JSP+Servlet+Struts+Hibernate+Spring.part2.rar

    Java Web技术整合应用与项目实战 JSP+Servlet+Struts2+Hibernate+Spring3_13336769.zip.003

    Java Web技术整合应用与项目实战 JSP+Servlet+Struts2+Hibernate+Spring3_13336769.zip.003 Java Web技术整合应用与项目实战 JSP+Servlet+Struts2+Hibernate+Spring3_13336769.zip.003

    Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax)(全)

    Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax) 作者: 李兴华 王月清 共5部分,共17章和2个附录,只有源文件代码,所以资源小。(代码全) 第1部分 Web开发前奏 1~4章 第2部分 Web基础开发 5~8章 第3部分...

    2010毕业设计ebook(servlet+struts2.0)

    【标题】"2010毕业设计ebook(servlet+struts2.0)"揭示了这个项目是一个2010年的毕业设计作品,主要采用了Servlet和Struts2.0两个核心技术来构建。这个设计可能是一个电子书平台或者涉及到Web应用程序的开发。 ...

    servlet+struts源码

    Struts的核心概念包括Action、Form Bean、Action Mapping和Action Forward。在源码中,`org.apache.struts.action.Action`是所有Struts Action的基础,它定义了`execute`方法,这是处理用户请求的主要入口点。`...

    servlet和struts2对比案例

    Servlet和Struts2都是在Java Web开发中广泛使用的框架,它们各自有其特性和优势,同时也存在一些区别。本篇文章将深入探讨两者的差异,并通过实际案例进行对比,以帮助开发者更好地理解它们的工作原理和适用场景。 ...

    servlet,struts_src,源文件

    Servlet 和 Struts 是Java Web开发中的两个重要技术。Servlet 是 Java 定义的一套用于扩展Web服务器功能的接口,而Struts则是一个基于MVC(Model-View-Controller)设计模式的开源框架,它简化了Java Web应用的开发...

    用servlet模拟struts_mvc框架

    **Servlet模拟Struts_MVC框架详解** 在Java Web开发中,MVC(Model-View-Controller)模式是一种广泛应用的设计模式,它将业务逻辑、数据处理和用户界面分离,提高了代码的可维护性和可扩展性。Struts是Apache组织...

Global site tag (gtag.js) - Google Analytics