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