建议去看一下孤傲苍狼写的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' >修改&nbsp;</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' >修改&nbsp;</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

最新文章

  1. Nova PhoneGap框架 第九章 控件
  2. Java Class.cast方法
  3. Android测试之Monkey
  4. gbdt推导和代码
  5. Log功能
  6. javascript中怎样验证密码是否含有特殊符号、数字、大小写字母,长度是否大于6小于12
  7. RabbitMQ学习总结 第五篇:路由Routing
  8. 《JavaScript高级程序设计》第4章 变量、作用域和内存问题
  9. android app性能优化大汇总(google官方Android性能优化典范 - 第1季)
  10. 【转】oracle Sequence
  11. 《JS原型》
  12. [转]Mac OS X local privilege escalation (IOBluetoothFamily)
  13. JS input file 转base64 JS图片预览
  14. java算法 蓝桥杯 乘法运算
  15. SharePoint 2016 配置用户请求应用程序
  16. Nginx 错误处理方法: bind() to 0.0.0.0:80 failed
  17. Main Steps to Setup an ODI data sync
  18. Ajax原生四大步骤
  19. MACD底背离选股公式——通达信、同花顺
  20. TCP三次握手,四次分手

热门文章

  1. 第一个asp.net MVC5+ExtJS6入门案例项目
  2. 【转】 IntelliJ IDEA像Eclipse一样打开多个项目
  3. C语言程序设计第一作业
  4. 【转】FTP主动模式和被动模式的比较
  5. ZPL条码打印类
  6. commons-pool与commons-pool2连接池
  7. 全球多个 TOP 网站藏挖矿代码,5 亿 PC 沦为矿工
  8. PHP开发要点与技巧总结(一)
  9. win10 UWP 申请微软开发者
  10. win10 uwp InkCanvas控件数据绑定