BeanServlet 访struts

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;
}
}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值