首页> Java> java教程> 正文

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

巴扎黑
发布: 2017-06-23 15:54:05
原创
2063 人浏览过

建议去看一下孤傲苍狼写的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 request2Bean(HttpServletRequest request, Class clazz) {26 /*27 * JDK中,普通的Class.newInstance()方法的定义返回Object,要将该返回类型强制转换为另一种类型;28 * 但是使用泛型的Class,Class.newInstance()方法具有一个特定的返回类型;29 * java反射就是从Class类开始的,Class是没有公共的构造方法,虽然没有构造方法,但是有相应的方法可以获取类的变量和类型30 * “?”是一个匹配字符,匹配任意类型;“T”匹配的是某一具体的类型,如String。如果知道Class的具体类型,可以直接使用Class,32 * 如Class33 */34 try {// 创建对象(这里的是创建Tb_User的对象)35 T bean = clazz.newInstance();36 // 使用枚举获取 参数-->key-value 键值对37 Enumeration 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 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  7 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 8 10 11 12 13 14  15 My JSP 'WebUtils_User.jsp' starting page 16 
17 18 19
21
22

新增用户

23 姓名:
24 密码:
25 出生日期 :
26 性别:
30 31
32
33
34
35
36
37 38 39 40 41 42 43 44 45 46 47 48 50 52 53 54 55
ID姓名密码日期性别操作
${list.id }${list.name }${list.password }${list.birthday }49 修改 51 删除
56
57
58
59 60
登录后复制

效果如下

二:使用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  7 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 8 10 11 12 13 14  15 My JSP 'WebUtils_User.jsp' starting page 16 17 34 
35 36 37 38
40
41

新增用户

42 姓名:
43 密码:
44 出生日期 :
45 性别:
49 50
51
52
53
54
55
56 57 58 59 60 61 62 63 64 65 66 67 69 71 72 73 74
ID姓名密码日期性别操作
${list.id }${list.name }${list.password }${list.birthday }68 修改 70 删除
75
76
77
78 79
81

不用使用form标签提交表单,使用jQuery的post来提交表单

82
新增用户
83 姓名:
84 密码:
85 出生日期 :
86 性别:
90 91
92 93
94 95
登录后复制

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 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提交表单的参数封装到一个方法里的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!