BeanUtils数据封装与表单JavaBean
jopen
10年前
一.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