您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

在jsp提交表单的参数封装到一个方法里

2024/2/29 22:48:16发布26次查看
建议去看一下孤傲苍狼写的servlet+jsp+javabean开发模式(),
最好把他javaweb学习总结全部看完会有很大的收获哦! 而把jsp专递的参数封装到一个方法里面也是从他那里学到的.
我觉得特别有用,尤其是在做项目的时候能省很多的代码
  一: 需要的包
根据上一篇jdbc+servlet+jsp()的内容为基础,增加新功能代码.
如下所示: 
一:代码的编写  1. zhu.jdbc.unit  在zhu.jdbc.unit包下创建一个webutils.java的类(用来存放参数定义的类)
webutils代码如下:
1 package zhu.jdbc.unit; 2  3 import java.util.enumeration; 4 import java.util.uuid; 5  6 import javax.servlet.http.httpservletrequest; 7  8 import org.apache.commons.beanutils.beanutils; 9 10 /**11  * 把request对象中的请求参数封装到bean中12  *  13  * @author xiao_zhu14  *  15  */16 public class webutils {17 18     /**19      * 将request对象转换成t对象20      *  21      * @param request22      * @param clazz23      * @return24      */25     public static <t> t request2bean(httpservletrequest request, class<t> clazz) {26         /*27          * jdk中,普通的class.newinstance()方法的定义返回object,要将该返回类型强制转换为另一种类型;28          * 但是使用泛型的class<t>,class.newinstance()方法具有一个特定的返回类型;29          * java反射就是从class<t>类开始的,class<t>是没有公共的构造方法,虽然没有构造方法,但是有相应的方法可以获取类的变量和类型30          * “?”是一个匹配字符,匹配任意类型;“t”匹配的是某一具体的类型,如string。如果知道class的具体类型,可以直接使用class<t>,32          * 如class<string>33          */34         try {// 创建对象(这里的是创建tb_user的对象)35             t bean = clazz.newinstance();36             // 使用枚举获取 参数-->key-value 键值对37             enumeration<string> e = request.getparameternames();38             while (e.hasmoreelements()) {39                 string key = (string) e.nextelement();40                 string value = request.getparameter(key);41                 beanutils.setproperty(bean, key, value);42             }43             return bean;44         } catch (exception e) {45             throw new runtimeexception(e);46         }47     }48 49     /**50      * 生成uuid51      *  52      * @return53      */54     public static string makeid() {55         return uuid.randomuuid().tostring();56     }57 }
为了更明了点,我再建一个servlet和jsp
 2. zhu.jdbc.servlet  在zhu.jdbc.servlet包下创建一个servlet_tbuser2.java的类(用来存放参数定义的类)
主要的差别是: 在没有调用webutils类的方法request2bean时,专递参数是这样的
调用了之后是这样的:
servlet_tbuser2代码如下:
1 package zhu.jdbc.servlet; 2  3 import java.io.ioexception; 4 import java.sql.date; 5 import java.text.parseexception; 6 import java.text.simpledateformat; 7 import java.util.list; 8  9 import javax.servlet.servletexception;10 import javax.servlet.http.httpservlet;11 import javax.servlet.http.httpservletrequest;12 import javax.servlet.http.httpservletresponse;13 14  15 16 import zhu.jdbc.domain.tb_user;17 import zhu.jdbc.service.itb_userservice;18 import zhu.jdbc.service.imp.itb_userserviceimpi;19 import zhu.jdbc.unit.webutils;20 21 public class servlet_tbuser2 extends httpservlet {22     /**23      *  24      */25     private static final long serialversionuid = 1l;26     itb_userservice myitb_userservice = new itb_userserviceimpi();27 28     @override29     protected void doget(httpservletrequest req, httpservletresponse resp)30             throws servletexception, ioexception {31         dopost(req, resp);32     }33 34     @override35     protected void dopost(httpservletrequest request,36             httpservletresponse response) throws servletexception, ioexception {37         request.setcharacterencoding(utf-8);// 解决乱码38         string type = request.getparameter(who);39         // 新增40         if (insert.equals(type)) {41             insert(request, response);42         }43         //查询所有数据44         else if(queryall.equals(type)){45             queryall(request, response);46         }  47     }48 49     // 新增50     public void insert(httpservletrequest request, httpservletresponse response)51             throws servletexception, ioexception {52         /*注册字符串到日期的转换器  53          * convertutils.register(new datelocaleconverter(), java.util.date.class);  54          * */ 55                 //将jsp页面专递参数封装到 domain层的 tb_user对象中56                  tb_user tb_user=webutils.request2bean(request, tb_user.class);  57                  system.out.println(tb_user.getname());  58                 // 把获取到的这些值放到user里59                 tb_user user = new tb_user();60                 try {61                     // 下面两句是把 string 转换为 sql类型的 时间格式62                     simpledateformat sdf = new simpledateformat(yyyy-mm-dd);63                     string time=sdf.format(tb_user.getbirthday());64                      user.setbirthday(new date(sdf.parse(time).gettime()));65                     user.setemail(tb_user.getemail());66                     user.setname(tb_user.getname());67                     user.setpassword(tb_user.getpassword());  68                     user.setsex(tb_user.issex());69                     // 最后调用服务来添加70                     string message = null;71                     if (myitb_userservice.insertdata(user) == true) {72                         queryall(request, response);73                     } else {74                         message = 新增失败!!!;75                         request.setattribute(msg, message);76                         request.getrequestdispatcher(/index.jsp).forward(request,    response);77                     }78                 } catch (exception e1) {79                     e1.printstacktrace();80                 }81     }82      //查询所有的数据83      public void queryall(httpservletrequest request,httpservletresponse response)throws servletexception,ioexception{84              list<tb_user> lis=myitb_userservice.queryalldata();  85              request.setattribute(list, lis);86                  request.getrequestdispatcher(/jsp/webutils_user.jsp).forward(request, response);87         }88       89 }
3.jsp 创建一个webutils_user.jsp
webutils_user.jsp的代码如下: 
 1 <%@ page language="java" import="java.util.*" pageencoding="utf-8"%> 2 <% 3 string path = request.getcontextpath(); 4 string basepath = request.getscheme()+"://"+request.getservername()+":"+request.getserverport()+path+"/"; 5 %> 6 <!-- c标签要使用,那么就必须要有它 --> 7 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 8 <c:set scope="page" var="url" 9 value="${pagecontext.request.contextpath }"></c:set>10  11 <!doctype html public "-//w3c//dtd html 4.01 transitional//en">12 <html>13   <head>14     <base href="<%=basepath%>> 15     <title>my jsp 'webutils_user.jsp' starting page</title> 16   </head>17   18   <body>19     <div align="center"20 style="width: 400px; position: relative;left:450px">21         <form action="${url}/zhu/servlet_tbuser2?who=insert" method="post">22             <h4>新增用户</h4>23             姓名: <input type="text" name="name"><br />24              密码: <input type="text" name="password"><br /> 25              出生日期 : <input type="text" name="birthday"><br /> 26              性别: <select name="sex">27                 <option value="0">男</option>28                 <option value="1">女</option>29             </select><br /> 30             <input type="submit" value="新增"/>31             <hr />32         </form>33     </div> 34     <div align="center"style="width: 400px; position: relative;left:450px;">35         <form action="${url}/zhu/servlet_tbuser2?who=queryall" method="post"> 36              <input type="submit" value="查询所有的数据"/> <br/>37             <table border="1" cellspacing="0"> 38                  <thead>39                   <tr><td>id</td><td>姓名</td><td>密码</td><td>日期</td><td>性别</td><td>操作</td></tr>40                  </thead>41                  <tbody>42          <c:foreach items="${list}" var="list">43          <tr>44                 <td>${list.id }</td>45                 <td>${list.name }</td>46                 <td>${list.password }</td>47                 <td>${list.birthday }</td> 48                 <td><c:if test="${list.sex==false }">男</c:if>49                 <c:if test="${list.sex==true }">女</c:if></td>50                  <td><a href= "${url}/zhu/servlet_tbuser?who=querybyid&id=${list.id}" style='text-decoration:none' >修改 </a> 51                     <a href= "${url}/zhu/servlet_tbuser?who=delete&id=${list.id}" style='text-decoration:none' >删除</a>  </td> 52          </tr>53          </c:foreach>54                  </tbody>55             </table>56             <hr />57         </form>58     </div> 59   </body>60 </html>
效果如下
二:使用jquery提价表单应用jquery-2.1.4.min.js的文件
在刚刚的webutils_user.jsp中应用jquery-2.1.4.min.js的文件即可应用jquery的了
   webutils_user.jsp的完整代码如下:
1 <%@ page language="java" import="java.util.*" pageencoding="utf-8"%> 2 <% 3 string path = request.getcontextpath(); 4 string basepath = request.getscheme()+"://"+request.getservername()+":"+request.getserverport()+path+"/"; 5 %> 6 <!-- c标签要使用,那么就必须要有它 --> 7 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 8 <c:set scope="page" var="url" 9 value="${pagecontext.request.contextpath }"></c:set>10  11 <!doctype html public "-//w3c//dtd html 4.01 transitional//en">12 <html>13   <head>14     <base href="<%=basepath%>> 15     <title>my jsp 'webutils_user.jsp' starting page</title> 16   <script type="text/javascript" src="${url}/js/jquery-2.1.4.min.js?1.1.11"></script>17   <script type="text/javascript">18   function funinsert(){19   //专递的参数和定义的变量必须要遵循驼峰形式的格式20   var username=$(#name).val();21    var userpassword=$(#password).val();22     var usersex=$(#sex).val();23      var userbirthday=$(#birthday).val();  24      //那面的专递的参数 如:name,password...必须要与domain层的表的名称对应,25   $.post(${url}/zhu/servlet_tbuser2,{who:'jqueryinsert',name:username,password:userpassword,sex:usersex,birthday:userbirthday},   26   function(getdata){27         console.log(getdata);  28         alert(getdata.msg);  29         30      },json);31   }32   33   </script>34   </head>35   36   <body>37   38     <div align="center"39 style="width: 400px; position: relative;left:450px">40         <form action="${url}/zhu/servlet_tbuser2?who=insert" method="post">41             <h4>新增用户</h4>42             姓名: <input type="text" name="name"><br />43              密码: <input type="text" name="password"><br /> 44              出生日期 : <input type="text" name="birthday"><br /> 45              性别: <select name="sex">46                 <option value="0">男</option>47                 <option value="1">女</option>48             </select><br /> 49             <input type="submit" value="新增"/>50             <hr />51         </form>52     </div> 53     <div align="center"style="width: 400px; position: relative;left:450px;">54         <form action="${url}/zhu/servlet_tbuser2?who=queryall" method="post"> 55              <input type="submit" value="查询所有的数据"/> <br/>56             <table border="1" cellspacing="0"> 57                  <thead>58                   <tr><td>id</td><td>姓名</td><td>密码</td><td>日期</td><td>性别</td><td>操作</td></tr>59                  </thead>60                  <tbody>61          <c:foreach items="${list}" var="list">62          <tr>63                 <td>${list.id }</td>64                 <td>${list.name }</td>65                 <td>${list.password }</td>66                 <td>${list.birthday }</td> 67                 <td><c:if test="${list.sex==false }">男</c:if>68                 <c:if test="${list.sex==true }">女</c:if></td>69                  <td><a href= "${url}/zhu/servlet_tbuser?who=querybyid&id=${list.id}" style='text-decoration:none' >修改 </a> 70                     <a href= "${url}/zhu/servlet_tbuser?who=delete&id=${list.id}" style='text-decoration:none' >删除</a>  </td> 71          </tr>72          </c:foreach>73                  </tbody>74             </table>75             <hr />76         </form>77     </div> 78 79      <div align="center"80 style="width: 400px; position: relative;left:450px"> 81             <h4>不用使用form标签提交表单,使用jquery的post来提交表单</h4>82             <h5>新增用户</h5> 83             姓名: <input type="text" id="name"><br />84              密码: <input type="text" id="password"><br /> 85              出生日期 : <input type="text" id="birthday"><br /> 86              性别: <select id="sex">87                 <option value="0">男</option>88                 <option value="1">女</option>89             </select><br /> 90             <input type="button" value="新增" onclick="funinsert()"/>91             <hr />92          93     </div> 94   </body>95 </html>
servlet_tbuser2完整代码如下:
    使用json*方法来把数据从servlet专递个jsp中
    json*需要的用用到的jar包是
1 package zhu.jdbc.servlet;  2   3 import java.io.ioexception;  4 import java.sql.date;  5    6 import java.text.simpledateformat;  7 import java.util.list;  8   9 import javax.servlet.servletexception; 10 import javax.servlet.http.httpservlet; 11 import javax.servlet.http.httpservletrequest; 12 import javax.servlet.http.httpservletresponse; 13  14 import net.sf.json.jsonobject; 15  16   17  18 import zhu.jdbc.domain.tb_user; 19 import zhu.jdbc.service.itb_userservice; 20 import zhu.jdbc.service.imp.itb_userserviceimpi; 21 import zhu.jdbc.unit.webutils; 22  23 public class servlet_tbuser2 extends httpservlet { 24     /** 25      *   26      */ 27     private static final long serialversionuid = 1l; 28     itb_userservice myitb_userservice = new itb_userserviceimpi(); 29  30     @override 31     protected void doget(httpservletrequest req, httpservletresponse resp) 32             throws servletexception, ioexception { 33         dopost(req, resp); 34     } 35  36     @override 37     protected void dopost(httpservletrequest request, 38             httpservletresponse response) throws servletexception, ioexception { 39         request.setcharacterencoding(utf-8);// 解决乱码 40         string type = request.getparameter(who); 41         // 新增 42         if (insert.equals(type)) { 43             insert(request, response); 44         } 45         //查询所有数据 46         else if(queryall.equals(type)){ 47             queryall(request, response); 48         }   49         //使用jquery提交表单新增 50                 else if(jqueryinsert.equals(type)){ 51                     jqueryinsert(request, response); 52                 }   53     } 54  55     // 新增 56     public void insert(httpservletrequest request, httpservletresponse response) 57             throws servletexception, ioexception { 58         /*注册字符串到日期的转换器   59          * convertutils.register(new datelocaleconverter(), java.util.date.class);   60          * */   61                 //将jsp页面专递参数封装到 domain层的 tb_user对象中 62                  tb_user tb_user=webutils.request2bean(request, tb_user.class);   63                  system.out.println(tb_user.getname());   64                 // 把获取到的这些值放到user里 65                 tb_user user = new tb_user(); 66                 try { 67                     // 下面两句是把 string 转换为 sql类型的 时间格式 68                     simpledateformat sdf = new simpledateformat(yyyy-mm-dd); 69                     string time=sdf.format(tb_user.getbirthday()); 70                      user.setbirthday(new date(sdf.parse(time).gettime())); 71                     user.setemail(tb_user.getemail()); 72                     user.setname(tb_user.getname()); 73                     user.setpassword(tb_user.getpassword());   74                     user.setsex(tb_user.issex()); 75                     // 最后调用服务来添加 76                     string message = null; 77                     if (myitb_userservice.insertdata(user) == true) { 78                         queryall(request, response); 79                     } else { 80                         message = 新增失败!!!; 81                         request.setattribute(msg, message); 82                         request.getrequestdispatcher(/index.jsp).forward(request,    response); 83                     } 84                 } catch (exception e1) { 85                     e1.printstacktrace(); 86                 } 87     } 88      //查询所有的数据 89      public void queryall(httpservletrequest request,httpservletresponse response)throws servletexception,ioexception{ 90              list<tb_user> lis=myitb_userservice.queryalldata();   91              request.setattribute(list, lis); 92                  request.getrequestdispatcher(/jsp/webutils_user.jsp).forward(request, response); 93         } 94       95       96     // 新增 97         public void jqueryinsert(httpservletrequest request, httpservletresponse response) 98                 throws servletexception, ioexception { 99             100             /*注册字符串到日期的转换器  101              * convertutils.register(new datelocaleconverter(), java.util.date.class);  102              * */  103                     //将jsp页面专递参数封装到 domain层的 tb_user对象中104                      tb_user tb_user=webutils.request2bean(request, tb_user.class);  105                      system.out.println(tb_user.getname());  106                     // 把获取到的这些值放到user里107                     tb_user user = new tb_user();108                     try {109                         // 下面两句是把 string 转换为 sql类型的 时间格式110                         simpledateformat sdf = new simpledateformat(yyyy-mm-dd);111                         string time=sdf.format(tb_user.getbirthday());112                          user.setbirthday(new date(sdf.parse(time).gettime()));113                         user.setemail(tb_user.getemail());114                         user.setname(tb_user.getname());115                         user.setpassword(tb_user.getpassword());  116                         user.setsex(tb_user.issex());117                         // 最后调用服务来添加  118                         119                          jsonobject json=new jsonobject();120                         response.setcharacterencoding(utf-8);//解决乱码121                         if (myitb_userservice.insertdata(user) == true) {122                             json.put(msg, 新增成功!);   123                         } else {  124                             json.put(msg, 新增失败!);   125                         }126                         //使用了jsonobject就必须这句代码  127                            response.getwriter().write(json.tostring());128                     } catch (exception e1) {129                         e1.printstacktrace();130                     }131                 132         }133       134 }
效果:
源码下载地址:
以上就是在jsp提交表单的参数封装到一个方法里的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product