BeanUtils数据封装与表单JavaBean

jopen 9年前

一.BeanUtils工具的解释

(1)Apache的Commons组件中,提供了一个有用的工具类BeanUtils,利用它能够方便的将表单数据值填充值Bean中;

(2)javax.servlet.ServletRequest.getParameterMap()

在ServletRequest接口中,getParameter()方法的作用在于将客户端传来的参数封装在一个Map对象中,致谢参数可以通过GET POST

方法提交;

(3)org.apache.commons.beanutils.BeanUtils.populate()

这个方法的作用是将存储在Map中的参数填入给定的一个JavaBean对象中;

BeanUtils.populate(),第一个形参是一个bean对象,也就是表单的JavaBean,第二个形参是一个Map对象,也就是存储有表单圆度的Map对象;

二.举例详解

(1)编写一个JavaBean程序类RegForm

    package my;        public class RegForm         {            private String userName;            private String password;            private String sect;            private String hobby[];            private String memo;                        public void setUserName(String s)            {                userName=s;                }            public String getUserName()            {                return userName;                }            public void setPassword(String s)            {                password=s;                }            public String getPassword()            {                return password;                }                       public void setSect(String s)            {                sect=s;                }            public String getSect()            {                return sect;                }                                 public void setHobby(String s[])            {                hobby=s;                }            public String[] getHobby()            {                return hobby;                }              public void setMemo(String s)            {                memo=s;                }            public String getMemo()            {                return memo;                }         }  
(2)新建一个填写数据的表单
    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">        <html xmlns="http://www.w3.org/1999/xhtml">        <head>        <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />        <title>无标题文档</title>        </head>                <body>        <jsp:useBean id="my" class="my.RegForm" scope="page"/>        <jsp:setProperty name="my" property="*"/> //反射机制将表单自动填到‘my’表单中        <br>您的用户名是:<jsp:getProperty name="my" property="userName"/>        <br>您的口令是:  <jsp:getProperty name="my" property="password"/>        <br>您的性别是:<jsp:getProperty name="my" property="sect"/>        <br>您的爱好是:        <%             String h[]=my.getHobby();             if(h!=null)             for(int i=0;i<h.length;i++)               out.print(h[i]);        %>        <br>您的附言是:<jsp:getProperty name="my" property="userName"/>        </body>        </html>  
(3)新建一个Servlet程序    reformServlet处理表单
    package my;        import javax.servlet.*;        import javax.servlet.http.*;        import java.io.*;        import java.util.*;        import org.apache.commons.beanutils.*;                public class RegFormServlet extends HttpServlet         {            protected void doGet(HttpServletRequest request,HttpServletResponse response)                                 throws ServletException,java.io.IOException           {              ServletContext application=getServletContext() ;              ServletConfig config=getServletConfig() ;              response.setContentType("text/html;charset=gb2312");              PrintWriter out=response.getWriter();               HttpSession session =request.getSession();              request.setCharacterEncoding("gb2312");                            RegForm form=new RegForm();              Map  map=request.getParameterMap();              try              {                 BeanUtils.populate(form,map);              }catch(Exception e)              {                System.out.println("表单处理出错:"+e);                }                        out.print("<br>您的姓名是:"+form.getUserName());            out.print("<br>您的口令是:"+form.getPassword());            out.print("<br>您的性别是:"+form.getSect());            out.print("<br>您的爱好是:");            String h[]=form.getHobby();            if(h!=null)             for(int i=0;i<h.length;i++)               out.print(h[i]);            out.print("<br>您的附言是:"+form.getMemo());            }                       protected void doPost(HttpServletRequest request,HttpServletResponse response)                                        throws ServletException,java.io.IOException          {               doGet(request,response);            }        }  
(4)还有一个创建数据的界面
    <%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">        <html xmlns="http://www.w3.org/1999/xhtml">        <head>        <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />        <title>无标题文档</title>        </head>                <body>        <form id="form1" name="form1" method="post" action="exam.jsp">          <p>会员注册信息</p>          <p>用户名:            <label>            <input name="userName" type="text" id="userName" />            </label>        </p>          <p>口令:            <label>            <input name="password" type="password" id="password" />            </label>          </p>          <p>性别:            <label>            <input name="sect" type="radio" value="男" checked="checked" />            </label>          男          <label>          <input type="radio" name="sect" value="女" />          </label>          女</p>          <p>爱好:            <label>            <input name="hobby" type="checkbox" id="hobby" value="篮球" />            </label>          篮球          <label>          <input name="hobby" type="checkbox" id="hobby" value="排球" />          </label>          排球          <label>          <input name="hobby" type="checkbox" id="hobby" value="足球" />          </label>          足球</p>          <p>附言:            <label>            <textarea name="memo" id="memo"></textarea>            </label>            <label>            <input type="submit" name="Submit" value="提交" />            </label>          </p>        </form>        </body>        </html>  
来自:http://blog.csdn.net/xlgen157387/article/details/39346121