最好把他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提交表单的参数封装到一个方法里的详细内容。
