在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 ...
随机推荐
- AngularJS -- 指令(创建自定义指令)
点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ 什么是指令 注:本指南是针对已经熟悉AngularJS基础知识的开发人员.如果你才刚 ...
- 【Java】关于Java8 parallelStream并发安全的思考
背景 Java8的stream接口极大地减少了for循环写法的复杂性,stream提供了map/reduce/collect等一系列聚合接口,还支持并发操作:parallelStream. 在爬虫开发 ...
- mysql操作sql的小技巧
本篇集中整理一下执行sql的小技巧,这种方式不仅带来了操作上的便捷,也可以保证数据可以数据的安全性. 1:查询数据(保证查询性能) 首先想先解释一下 SELECT * 和 SELECT t.id , ...
- 第6章 Overlapped I/O, 在你身后变戏法 ---Win32 文件操作函数 -2
Win32 之中有三个基本的函数用来执行 I/O,它们是: i CreateFile() i ReadFile() i WriteFile() 没有另外 ...
- pdf点击超链接后返回:alt+ 向左 /向右
pdf点击超链接后返回:alt+ 向左 /向右
- Cow Exhibition 变种背包
Cow Exhibition Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Subm ...
- 渣渣学QT
初学QT,自己的一些小总结,错误之处,望大神指点一二: 1,添加资源文件时想应用在界面的背景,但是发现用不了,后来才知道是没有"构建"?应该是要在构建之后才将所添加的资源文件真正的 ...
- vue环境搭建
1.Window 上安装Node.js 1.Windows 安装包(.msi) 32 位安装包下载地址 : https://nodejs.org/dist/v4.4.3/node-v4.4.3-x86 ...
- VB.NET 打开窗体后关闭自己
第一:要实例化打开的窗体 Dim bb As New frm_Main 第二:打开窗体 show 第三:释放自身 Finalize() '赋值另一窗体的控件值,先实例化,再进行操作 Dim bb ...
- 多个activity跳转保留内存使用intent传递数据问题_新手
/////本来是做的activity跳转,普通那种,但是会在调回来会销毁原来的,重新调用onCreate方法, 后来参考[http://blog.csdn.net/qq_26918031/articl ...