在jsp提交表单的参数封装到一个方法里
建议去看一下孤傲苍狼写的Servlet+JSP+JavaBean开发模式(http://www.cnblogs.com/xdp-gacl/p/3902537.html),
最好把他JavaWeb学习总结全部看完会有很大的收获哦! 而把jsp专递的参数封装到一个方法里面也是从他那里学到的.
我觉得特别有用,尤其是在做项目的时候能省很多的代码
一: 需要的包

根据上一篇JDBC+Servlet+jsp(http://www.cnblogs.com/zhu520/p/6913650.html)的内容为基础,增加新功能代码.
如下所示:
一:代码的编写
1. zhu.jdbc.unit
在zhu.jdbc.unit包下创建一个WebUtils.java的类(用来存放参数定义的类)

WebUtils代码如下:
package zhu.jdbc.unit; import java.util.Enumeration;
import java.util.UUID; import javax.servlet.http.HttpServletRequest; import org.apache.commons.beanutils.BeanUtils; /**
* 把request对象中的请求参数封装到bean中
*
* @author Xiao_Zhu
*
*/
public class WebUtils { /**
* 将request对象转换成T对象
*
* @param request
* @param clazz
* @return
*/
public static <T> T request2Bean(HttpServletRequest request, Class<T> clazz) {
/*
* JDK中,普通的Class.newInstance()方法的定义返回Object,要将该返回类型强制转换为另一种类型;
* 但是使用泛型的Class<T>,Class.newInstance()方法具有一个特定的返回类型;
* java反射就是从Class<T>类开始的,Class<T>是没有公共的构造方法,虽然没有构造方法,但是有相应的方法可以获取类的变量和类型
* “?”是一个匹配字符,匹配任意类型;“T”匹配的是某一具体的类型,如String。如果知道Class的具体类型,可以直接使用Class<T>,
* 如Class<String>
*/
try {// 创建对象(这里的是创建Tb_User的对象)
T bean = clazz.newInstance();
// 使用枚举获取 参数-->key-value 键值对
Enumeration<String> e = request.getParameterNames();
while (e.hasMoreElements()) {
String key = (String) e.nextElement();
String value = request.getParameter(key);
BeanUtils.setProperty(bean, key, value);
}
return bean;
} catch (Exception e) {
throw new RuntimeException(e);
}
} /**
* 生成UUID
*
* @return
*/
public static String makeId() {
return UUID.randomUUID().toString();
}
}
为了更明了点,我再建一个servlet和jsp
2. zhu.jdbc.servlet
在zhu.jdbc.servlet包下创建一个Servlet_TbUser2.java的类(用来存放参数定义的类)

主要的差别是: 在没有调用WebUtils类的方法request2Bean时,专递参数是这样的

调用了之后是这样的:

Servlet_TbUser2代码如下:
package zhu.jdbc.servlet; import java.io.IOException;
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import zhu.jdbc.domain.Tb_User;
import zhu.jdbc.service.ITb_UserService;
import zhu.jdbc.service.imp.ITb_UserServiceImpI;
import zhu.jdbc.unit.WebUtils; public class Servlet_TbUser2 extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
ITb_UserService myITb_UserService = new ITb_UserServiceImpI(); @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
} @Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");// 解决乱码
String type = request.getParameter("who");
// 新增
if ("Insert".equals(type)) {
Insert(request, response);
}
//查询所有数据
else if("queryAll".equals(type)){
queryAll(request, response);
}
} // 新增
public void Insert(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*注册字符串到日期的转换器
* ConvertUtils.register(new DateLocaleConverter(), java.util.Date.class);
* */
//将jsp页面专递参数封装到 domain层的 Tb_User对象中
Tb_User tb_User=WebUtils.request2Bean(request, Tb_User.class);
System.out.println(tb_User.getName());
// 把获取到的这些值放到user里
Tb_User user = new Tb_User();
try {
// 下面两句是把 string 转换为 sql类型的 时间格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String time=sdf.format(tb_User.getBirthday());
user.setBirthday(new Date(sdf.parse(time).getTime()));
user.setEmail(tb_User.getEmail());
user.setName(tb_User.getName());
user.setPassword(tb_User.getPassword());
user.setSex(tb_User.isSex());
// 最后调用服务来添加
String message = null;
if (myITb_UserService.insertData(user) == true) {
queryAll(request, response);
} else {
message = "新增失败!!!";
request.setAttribute("msg", message);
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
} catch (Exception e1) {
e1.printStackTrace();
}
}
//查询所有的数据
public void queryAll(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
List<Tb_User> lis=myITb_UserService.queryAllData();
request.setAttribute("list", lis);
request.getRequestDispatcher("/jsp/WebUtils_User.jsp").forward(request, response);
} }
3.jsp
创建一个WebUtils_User.jsp

WebUtils_User.jsp的代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!-- c标签要使用,那么就必须要有它 -->
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set scope="page" var="url"
value="${pageContext.request.contextPath }"></c:set> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'WebUtils_User.jsp' starting page</title>
</head> <body>
<div align="center"
style="width: 400px; position: relative;left:450px">
<form action="${url}/zhu/Servlet_TbUser2?who=Insert" method="post">
<h4>新增用户</h4>
姓名: <input type="text" name="name"><br />
密码: <input type="text" name="password"><br />
出生日期 : <input type="text" name="birthday"><br />
性别: <select name="sex">
<option value="0">男</option>
<option value="1">女</option>
</select><br />
<input type="submit" value="新增"/>
<hr />
</form>
</div>
<div align="center"style="width: 400px; position: relative;left:450px;">
<form action="${url}/zhu/Servlet_TbUser2?who=queryAll" method="post">
<input type="submit" value="查询所有的数据"/> <br/>
<table border="1" cellspacing="0">
<thead>
<tr><td>ID</td><td>姓名</td><td>密码</td><td>日期</td><td>性别</td><td>操作</td></tr>
</thead>
<tbody>
<c:forEach items="${list}" var="list">
<tr>
<td>${list.id }</td>
<td>${list.name }</td>
<td>${list.password }</td>
<td>${list.birthday }</td>
<td><c:if test="${list.sex==false }">男</c:if>
<c:if test="${list.sex==true }">女</c:if></td>
<td><a href= "${url}/zhu/Servlet_TbUser?who=queryById&id=${list.id}" style='text-decoration:none' >修改 </a>
<a href= "${url}/zhu/Servlet_TbUser?who=delete&id=${list.id}" style='text-decoration:none' >删除</a> </td>
</tr>
</c:forEach>
</tbody>
</table>
<hr />
</form>
</div>
</body>
</html>
效果如下

二:使用jQuery提价表单
应用jquery-2.1.4.min.js的文件

在刚刚的WebUtils_User.jsp中应用jQuery-2.1.4.min.js的文件即可应用jQuery的了
WebUtils_User.jsp的完整代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!-- c标签要使用,那么就必须要有它 -->
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set scope="page" var="url"
value="${pageContext.request.contextPath }"></c:set> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'WebUtils_User.jsp' starting page</title>
<script type="text/javascript" src="${url}/js/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
function funInsert(){
//专递的参数和定义的变量必须要遵循驼峰形式的格式
var userName=$("#name").val();
var userPassword=$("#password").val();
var userSex=$("#sex").val();
var userBirthday=$("#birthday").val();
//那面的专递的参数 如:name,password...必须要与domain层的表的名称对应,
$.post("${url}/zhu/Servlet_TbUser2",{who:'jQueryInsert',name:userName,password:userPassword,sex:userSex,birthday:userBirthday},
function(getData){
console.log(getData);
alert(getData.msg); },"json");
} </script>
</head> <body> <div align="center"
style="width: 400px; position: relative;left:450px">
<form action="${url}/zhu/Servlet_TbUser2?who=Insert" method="post">
<h4>新增用户</h4>
姓名: <input type="text" name="name"><br />
密码: <input type="text" name="password"><br />
出生日期 : <input type="text" name="birthday"><br />
性别: <select name="sex">
<option value="0">男</option>
<option value="1">女</option>
</select><br />
<input type="submit" value="新增"/>
<hr />
</form>
</div>
<div align="center"style="width: 400px; position: relative;left:450px;">
<form action="${url}/zhu/Servlet_TbUser2?who=queryAll" method="post">
<input type="submit" value="查询所有的数据"/> <br/>
<table border="1" cellspacing="0">
<thead>
<tr><td>ID</td><td>姓名</td><td>密码</td><td>日期</td><td>性别</td><td>操作</td></tr>
</thead>
<tbody>
<c:forEach items="${list}" var="list">
<tr>
<td>${list.id }</td>
<td>${list.name }</td>
<td>${list.password }</td>
<td>${list.birthday }</td>
<td><c:if test="${list.sex==false }">男</c:if>
<c:if test="${list.sex==true }">女</c:if></td>
<td><a href= "${url}/zhu/Servlet_TbUser?who=queryById&id=${list.id}" style='text-decoration:none' >修改 </a>
<a href= "${url}/zhu/Servlet_TbUser?who=delete&id=${list.id}" style='text-decoration:none' >删除</a> </td>
</tr>
</c:forEach>
</tbody>
</table>
<hr />
</form>
</div> <div align="center"
style="width: 400px; position: relative;left:450px">
<h4>不用使用form标签提交表单,使用jQuery的post来提交表单</h4>
<h5>新增用户</h5>
姓名: <input type="text" id="name"><br />
密码: <input type="text" id="password"><br />
出生日期 : <input type="text" id="birthday"><br />
性别: <select id="sex">
<option value="0">男</option>
<option value="1">女</option>
</select><br />
<input type="button" value="新增" onclick="funInsert()"/>
<hr /> </div>
</body>
</html>
Servlet_TbUser2完整代码如下:
使用JSON*方法来把数据从servlet专递个jsp中
JSON*需要的用用到的jar包是

package zhu.jdbc.servlet; import java.io.IOException;
import java.sql.Date; import java.text.SimpleDateFormat;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONObject; import zhu.jdbc.domain.Tb_User;
import zhu.jdbc.service.ITb_UserService;
import zhu.jdbc.service.imp.ITb_UserServiceImpI;
import zhu.jdbc.unit.WebUtils; public class Servlet_TbUser2 extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
ITb_UserService myITb_UserService = new ITb_UserServiceImpI(); @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
} @Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");// 解决乱码
String type = request.getParameter("who");
// 新增
if ("Insert".equals(type)) {
Insert(request, response);
}
//查询所有数据
else if("queryAll".equals(type)){
queryAll(request, response);
}
//使用jquery提交表单新增
else if("jQueryInsert".equals(type)){
jQueryInsert(request, response);
}
} // 新增
public void Insert(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*注册字符串到日期的转换器
* ConvertUtils.register(new DateLocaleConverter(), java.util.Date.class);
* */
//将jsp页面专递参数封装到 domain层的 Tb_User对象中
Tb_User tb_User=WebUtils.request2Bean(request, Tb_User.class);
System.out.println(tb_User.getName());
// 把获取到的这些值放到user里
Tb_User user = new Tb_User();
try {
// 下面两句是把 string 转换为 sql类型的 时间格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String time=sdf.format(tb_User.getBirthday());
user.setBirthday(new Date(sdf.parse(time).getTime()));
user.setEmail(tb_User.getEmail());
user.setName(tb_User.getName());
user.setPassword(tb_User.getPassword());
user.setSex(tb_User.isSex());
// 最后调用服务来添加
String message = null;
if (myITb_UserService.insertData(user) == true) {
queryAll(request, response);
} else {
message = "新增失败!!!";
request.setAttribute("msg", message);
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
} catch (Exception e1) {
e1.printStackTrace();
}
}
//查询所有的数据
public void queryAll(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
List<Tb_User> lis=myITb_UserService.queryAllData();
request.setAttribute("list", lis);
request.getRequestDispatcher("/jsp/WebUtils_User.jsp").forward(request, response);
} // 新增
public void jQueryInsert(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { /*注册字符串到日期的转换器
* ConvertUtils.register(new DateLocaleConverter(), java.util.Date.class);
* */
//将jsp页面专递参数封装到 domain层的 Tb_User对象中
Tb_User tb_User=WebUtils.request2Bean(request, Tb_User.class);
System.out.println(tb_User.getName());
// 把获取到的这些值放到user里
Tb_User user = new Tb_User();
try {
// 下面两句是把 string 转换为 sql类型的 时间格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String time=sdf.format(tb_User.getBirthday());
user.setBirthday(new Date(sdf.parse(time).getTime()));
user.setEmail(tb_User.getEmail());
user.setName(tb_User.getName());
user.setPassword(tb_User.getPassword());
user.setSex(tb_User.isSex());
// 最后调用服务来添加 JSONObject json=new JSONObject();
response.setCharacterEncoding("UTF-8");//解决乱码
if (myITb_UserService.insertData(user) == true) {
json.put("msg", "新增成功!");
} else {
json.put("msg", "新增失败!");
}
//使用了JSONObject就必须这句代码
response.getWriter().write(json.toString());
} catch (Exception e1) {
e1.printStackTrace();
} } }
效果:

源码下载地址: http://pan.baidu.com/s/1c1V00s4
在jsp提交表单的参数封装到一个方法里的更多相关文章
- JSP提交表单的几种方法
1.通过<form action="url"><input type="submit"></form>按钮方式提交 这种方式 ...
- 【转】JSP提交表单
设计表单页面,它是静态页面,使用HTML编写,而且使用了JavaScript脚本语言来验证填写表单数据,表单页面为form.htm,代码如下: <html><head>< ...
- jsp提交表单问题
以form形式提交的话 String usernameInForm = hreq.getParameter("username");String passwordInForm = ...
- Ajax在jQuery中的应用 (4)向jsp提交表单数据
ajax技术带给我们的是良好的用户体验,同时,使用jquery可以简化开发,提高工作效率. 下面就介绍一下大致的开发步骤. 工具/原料 本文中使用的是 jquery-1.3.2.min.js 方法/步 ...
- EasyUI加zTree使用解析 easyui修改操作的表单回显方法 验证框提交表单前验证 datagrid的load方法
带参提交一次查询,从服务器加载新数据.这是一个神奇的方法 $('#dg').datagrid('load',{ code: '01', name: 'name01' }); easyui修改操作的回显 ...
- ssm框架使用jsp提交表单到controller
jsp代码: controller代码:
- jquery实现ajax提交表单
一般情况下,我们提交form表单采用的是submit的方法,典型的场景如下. <form id="thisForm" method="post" acti ...
- Django--post提交表单内容
本节目标:①.提交表单内容②.通过客户端提交表单新增一篇文章③.通过Django的forms组件来完成新增一篇文章 =======提交表单内容======== 1.前端html:login.html ...
- jQuery.Form.js 异步提交表单使用总结
jQuery.Form.js 是一个用于使用jQuery异步提交表单的插件,它使用方法简单,支持同步和异步两种方式提交. 第一步:引入jQuery与jQuery.Form.js <script ...
随机推荐
- 黑马程序员Java基础班+就业班课程笔记全发布(持续更新)
正在黑马学习,整理了一些课程知识点和比较重要的内容分享给大家,也是给自己拓宽一些视野,仅供大家交流学习,大家有什么更好的内容可以发给我 ,现有黑马教程2000G QQ 1481135711 这是我总 ...
- win7旗舰版最新激活密钥
Win7旗舰.企业.专业版的激活密钥(32位.64位均可用).FJGCP-4DFJD-GJY49-VJBQ7-HYRR2 AcerVQ3PY-VRX6D-CBG4J-8C6R2-TCVBD Alien ...
- Codeforces 845 C. Two TVs 思路:简单贪心算法
题目: 题目原文链接:http://codeforces.com/contest/845/problem/C 题意:现在我们有一个电视清单,有两个电视,电视清单上有每一个节目的开始时间和结束时间. 电 ...
- 偏置-方差分解(Bias-Variance Decomposition)
本文地址为:http://www.cnblogs.com/kemaswill/,作者联系方式为kemaswill@163.com,转载请注明出处. 机器学习的目标是学得一个泛化能力比较好的模型.所谓泛 ...
- 移动WEB 响应式设计 @media总结
第一种: 在引用样式的时候添加 <link rel="stylesheet" media="mediatype and|not|only (media featur ...
- (原)怎样解决python dataframe loc,iloc循环处理速度很慢的问题
怎样解决python dataframe loc,iloc循环处理速度很慢的问题 1.问题说明 最近用DataFrame做大数据 处理,发现处理速度特别慢,追究原因,发现是循环处理时,loc,iloc ...
- Oracle Database 10g Express Edition系统文件损坏的解决办法
1.检查错误代码:ora-10010 亦或是ora-10003,上网找响应的解决办法: 异常状态:登陆不上 常用的方法解决 (1)进入Oracle命令行模式 (2)Shutdown immedaite ...
- Java面向对象 Object类 内部类
Java面向对象 Object类 内部类 知识概要: 一:Object类 二:内部类 匿名内部类的写法 1.Object O ...
- 数据库表反向生成(一) MyBatis-generator与IDEA的集成
在Dao层,通过数据库表反向生成,可以节省我们很多的精力,把更多的精力投入复杂的业务中. 数据库表反向生成,指的是通过数据库如mysql中的库表schema生成dao层读写表的基础代码,包括model ...
- jQuery form插件使用详解
点击打开: jquery选择器全解 jquery中的style样式操作 jquery中的DOM操作 jquery中的事件操作全解 jquery中的动画操作全解 jquery中ajax的应用 自定义jq ...