表单数据自动封装到javaBean中
页面表单数据的自动封装到javaBean中
先定义一个Bean类
package com.test;public class Bean {private String name;private Integer sex;public String getName() { return name;}public void setName(String name) { this.name = name;}public Integer getSex() { return sex;}public void setSex(Integer sex) { this.sex = sex;}}
?
再定义一个封装数据类用于把数据封装到Bean中
package com.test;import java.lang.reflect.InvocationTargetException;import java.util.Enumeration;import javax.servlet.http.HttpServletRequest;import org.apache.commons.beanutils.ConvertUtils;import org.apache.commons.beanutils.PropertyUtils;/*** 取得request对象中* 所有的参数值并生成* 一个相应的对象返回* @author admin**/public class ParseHtml {/*** * @param request存储着表单的HttpServletRequest对象* @param bean要封装的表单Bean* @return 封装好的表单Bean*/public Object parseRequest(HttpServletRequest request,Object bean){ //取得所有参数列表 Enumeration enum = request.getParameterNames(); //遍历所有参数列表 while(enum.hasMoreElements()){ Object obj = enum.nextElement(); try { //取得这个参数在Bean中的数据类开 Class cls = PropertyUtils.getPropertyType(bean, obj.toString()); //把相应的数据转换成对应的数据类型 Object beanValue = ConvertUtils.convert(request.getParameter(obj.toString()), cls); //添冲Bean值 PropertyUtils.setProperty(bean, obj.toString(), beanValue); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return bean;}}
?
生成表单页面
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body> <form action="Dispose" method="post"> <input type=text name="name"><br> <input type=text name="sex"><br> <input type=submit value='submit'> </form></body></html>
?
定义一个Action用于处理表单传过来的数据
package com.test;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Dispose extends HttpServlet {/*** Constructor of the object.*/public Dispose() { super();}/*** Destruction of the servlet. <br>*/public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here}/*** The doGet method of the servlet. <br>** This method is called when a form has its tag value method equals to get.* * @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response);}/*** The doPost method of the servlet. <br>** This method is called when a form has its tag value method equals to post.* * @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //调用方法完成对表单数据封装到Bean中 Bean bean = (Bean)new ParseHtml().parseRequest(request, new Bean()); response.getWriter().write("name="+bean.getName()+"sex="+bean.getSex()); }/*** Initialization of the servlet. <br>** @throws ServletException if an error occurs*/public void init() throws ServletException { // Put your code here}}
?
?
本文转载自:http://hi.baidu.com/tianlong1569/blog/item/7d6cff03317027723812bb9b.html