• BeanUtils数据封装与表单JavaBean


    一.BeanUtils工具的解释

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

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

    在ServletRequest接口中,getParameter()方法的作用在于将client传来的參数封装在一个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>您的username是:<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>username:
        <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>
    


    (5)关于servlet的部署省去过程


    (6)ok!


  • 相关阅读:
    [LeetCode 题解]: Remove Duplicates from Sorted List
    [LeetCode 题解]: Merge k Sorted Lists
    [LeetCode 题解]: Insertion Sort List
    [LeetCode 题解]:Candy
    求任意多边形面积 python实现
    C++飞机大战
    version robot
    python一段代码 感受一下
    微机原理上机第四次实验内容
    初步的百度爬虫
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5176008.html
Copyright © 2020-2023  润新知