在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 ...
随机推荐
- oracle 表查询(一)
通过scott用户下的表来演示如何使用select语句,接下来对emp.dept.salgrade表结构进行解说. emp 雇员表字段名称 数据类型 是否为空 备注-------- ...
- 再探Spring IOC
这次做了提纲 下面再来一个case study case描述: 这是工具类 //bean的配置信息略去 class MyUtil{ private static UserDao userDao; p ...
- 记录maven 整合SSM框架
一.新建maven项目 建好的项目结构如下图: 还需要做以下配置: 勾选上这两项后,就会自动生成 "src/main/java" 和 "src/main/resour ...
- 我的第一个python web开发框架(3)——怎么开始?
小白与小美公司经过几次接触商谈,好不容易将外包签订了下来,准备开始大干一场.不过小白由于没有太多的项目经验,学过python懂得python的基本语法,在公司跟着大家做过简单功能,另外还会一些HTML ...
- 51 nod 1521 一维战舰 时间复杂度O(n),同 Codeforces 567D. One-Dimensional Battle Ships 有详细注释
题目:51nod: 题目Codeforces: 题目注意到两个战舰不能挨在一起就可以了. // 每一段 struct node{ int left; // 段的左端点 int right; // 段的 ...
- PIC32MZ 通过USB在线升级 -- USB HID bootloader
了解 bootloader 的实现, 请加QQ: 1273623966(验证填bootloader); 欢迎咨询或定制bootloader; 我的博客主页 www.cnblogs.com/geekyg ...
- FPGA与PCI-E
从并行到串行: PCI Express(又称PCIe)是一种高性能.高带宽串行通讯互连标准,取代了基于总线的通信架构,如:PCI.PCI Extended (PCI-X) 以及加速图形端口(AGP). ...
- Android 设备兼容性(1)
引用: Android官网 > 开发 > API 指南 > Introduction > Device Compatibility 1. 基本概念 Android被设计成能在各 ...
- 使用 Newtonsoft.Json 操作 JSON 字符串
一.把实体类转化为 JSON 字符串 1. 为实体类赋值 SenderFromMQSearch senderFromMQSearch = new SenderFromMQSearch(); sende ...
- win10 uwp 绑定多数据
经常我们需要绑定的数据有多个,当添加到集合控件的对象类型结构比较复杂,我们希望自己来定义排版布局,这时可以使用ItemTemplate用资源的定义 现在有数据 public class caddres ...