文章目录
4.Servlet实战
4.1 需求概述
完成人员信息表的数据CURD的练习
4.2 具体实现
4.2.1 项目初始化
需求 :
理财产品 需要进行会员信息管理
1) 整理数据库
数据库 : userdb
2) 整理表
数据表 : user_info
-- 创建表
create table user_info(
u_id int not null PRIMARY key auto_increment,
u_name VARCHAR(32),
u_regdate date,
u_money double
)
-- 验证数据
select * from user_info;
会员信息 :
1) 会员编号 2) 会员姓名 3) 会员注册时间 4) 会员金额
3) 创建项目
项目类型 : Dynamic Web Project
导入jar包
4) 创建各类包在src下
com.hnxy.dao 数据层接口
com.hnxy.entity 实体类
com.hnxy.service 业务层接口
com.hnxy.util 工具包
com.hnxy.web 控制器包
com.hnxy.test 测试包
4.2.2 entity层-用户数据实体类 UserInfo.java
我们将用户数据的实体类UserInfo.java放在com.hnxy.entity 文件夹下
package com.hnxy.entity;
import java.util.Date;
/**
* 用户数据
* @author My
*
*/
public class UserInfo {
// 属性
private Integer uid; // 主键ID
private String uname; // 会员姓名
private Date regDate; // 入会时间
private Double money; // 会员余额
// 对外方法
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public Date getRegDate() {
return regDate;
}
public void setRegDate(Date regDate) {
this.regDate = regDate;
}
public Double getMoney() {
return money;
}
public void setMoney(Double money) {
this.money = money;
}
}
4.2.3 utils层-数据库连接工具类 JdbcUtil.java
我们将数据库连接工具类 JdbcUtil.java放在com.hnxy.uitls 文件夹下
package com.hnxy.utils;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSource;
/**
* 数据库连接工具类
* @author My
*/
public class JdbcUtil {
// 四大属性
private static final String CONN_DRIVER = "com.mysql.jdbc.Driver";
private static final String CONN_URL = "jdbc:mysql://127.0.0.1:3306/user_db?characterEncoding=UTF-8";
private static final String CONN_USER = "root";
private static final String CONN_PASS = "root";
// 创建数据源
private static DruidDataSource dataSource = new DruidDataSource();
// 数据源绑定四大属性 方便创建连接
static{
dataSource.setDriverClassName(CONN_DRIVER);
dataSource.setUrl(CONN_URL);
dataSource.setUsername(CONN_USER);
dataSource.setPassword(CONN_PASS);
// 开启druid的web监控功能 开启SQL监控
try {
dataSource.addFilters("stat");
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 获取数据源的方法
* @return
*/
public static DataSource getDS(){
return dataSource;
}
}
4.2.4 DAO层-数据库操作类 UserDAO.java
DAO层UserDAO.java编写底层SQL程序语言作为接口,放在com.hnxy.dao 文件夹下
package com.hnxy.dao;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import com.hnxy.entity.UserInfo;
import com.hnxy.utils.JdbcUtil;
/**
* user_info表的数据库操作类
* @author My
*
*/
public class UserDAO {
// 编写SQL执行对象
private QueryRunner qr = new QueryRunner(JdbcUtil.getDS());
//更新
public int updateUser(UserInfo user)throws Exception{
// 创建方法的返回值
int count = 0;
// 编写SQL语句
String sql = "update user_info set u_name=?,u_regdate=?,u_money=? where u_id = ?";
// 占位符赋值
Object[] params = {user.getUname(),user.getRegDate(),user.getMoney(),user.getUid()};
// 执行
count = qr.update(sql,params);
// 返回
return count;
}
//删除
public int deleteUser(UserInfo user)throws Exception{
// 创建方法的返回值
int count = 0;
// 编写SQL语句
String sql = "delete from user_info where u_id = ?";
// 占位符赋值
Object[] params = {user.getUid()};
// 执行
count = qr.update(sql,params);
// 返回
return count;
}
//查找ID
public UserInfo findUserByID(Integer uid)throws Exception{
// 创建方法的返回值
UserInfo user = null;
// 编写SQL语句
String sql = "select u_id uid,u_name uname,u_regdate regDate,u_money money from user_info where u_id = ?";
// 占位符赋值
Object[] params = {uid};
// 执行
user = qr.query(sql, new BeanHandler<UserInfo>(UserInfo.class),params);
// 返回
return user;
}
//批量查找
public List<UserInfo> findUserListByPage(Integer start,Integer size)throws Exception{
// 创建方法的返回值
List<UserInfo> list = null;
// 编写SQL语句
String sql = "select u_id uid,u_name uname,u_regdate regDate,u_money money from user_info order by u_id desc limit ?,?";
// 占位符赋值
Object[] params = {start,size};
// 执行SQL语句
list = qr.query(sql, new BeanListHandler<UserInfo>(UserInfo.class),params);
// 返回
return list;
}
// 查询数据总条数
public int findUserListByPageCount()throws Exception{
// 创建方法的返回值
int totalCount = 0;
// 编写SQL语句
String sql = "select count(*) from user_info";
// 占位符赋值
// 执行
Number num = qr.query(sql, new ScalarHandler<Number>(1));
// 处理返回值
totalCount = num.intValue();
// 返回
return totalCount;
}
// 添加会员信息
public int insertUser(UserInfo user)throws Exception{
// 创建方法的返回值
int count = 0;
// 编写SQL语句
String sql = "insert into user_info values (null,?,?,?)";
// 占位符赋值
Object[] params = {user.getUname(),user.getRegDate(),user.getMoney()};
// 执行
count = qr.update(sql,params);
// 返回
return count;
}
}
4.2.5 Service层-业务层UserService.java
Service层编写的UserService.java放置在service包下
package com.hnxy.service;
import java.util.Date;
import java.util.List;
import com.hnxy.dao.UserDAO;
import com.hnxy.entity.UserInfo;
/**
* 业务层
* @author My
*
*/
public class UserService {
// 创建DAO层对象
private UserDAO userDAO = new UserDAO();
//更新
public int updateUser(UserInfo user){
// 创建方法的返回值
int count = 0;
try {
// 调用
count = userDAO.updateUser(user);
} catch (Exception e) {
System.out.println("[错误]更新会员信息报错!原因:" + e.getMessage());
e.printStackTrace();
}
// 返回
return count;
}
// 删除
public int deleteUser(UserInfo user){
// 创建方法的返回值
int count = 0;
try {
// 调用
count = userDAO.deleteUser(user);
} catch (Exception e) {
e.printStackTrace();
}
// 返回
return count;
}
// 按ID查询
public UserInfo findUserByID(String uid){
// 创建方法的返回值
UserInfo user = null;
try {
// 获取数据
user = userDAO.findUserByID(Integer.parseInt(uid));
} catch (Exception e) {
System.out.println("[错误]按ID查询报错!错误原因:" + e.getMessage());
e.printStackTrace();
}
// 返回
return user;
}
//添加
public int insertUser(UserInfo user){
// 创建方法的返回值
int count = 0;
try {
// 执行
count = userDAO.insertUser(user);
} catch (Exception e) {
System.out.println("[错误]添加会员信息报错!原因:" + e.getMessage());
e.printStackTrace();
}
// 返回
return count;
}
// 分页方法
public List<UserInfo> findUserListByPage(Integer pageIndex,Integer pageSize){
// 创建方法的返回值
List<UserInfo> list = null;
// 进行参数处理
if(null != pageIndex && null != pageSize){
if(pageIndex > 0 && pageSize > 0){ // 业务要求
int start = (pageIndex-1)*pageSize;
int size = pageSize;
try {
list = userDAO.findUserListByPage(start, size);
} catch (Exception e) {
System.out.println("[错误]获取分页数据失败,原因:" + e.getMessage());
e.printStackTrace();
}
}
}
// 返回
return list;
}
// 获取总条数
public int findUserListByPageCount(){
// 创建方法的返回值
int count = 0;
try {
// 执行业务操作
count = userDAO.findUserListByPageCount();
} catch (Exception e) {
System.out.println("[错误]获取总条数失败!原因:" + e.getMessage());
e.printStackTrace();
}
// 返回
return count;
}
// 批量添加
public boolean insertUsers(){
// 创建方法的返回值
boolean con = false;
// 循环调用DAO层 357次完成初始化会员数据
int count = 0;
UserInfo user = null;
for (int i = 1; i <= 357; i++) {
user = new UserInfo();
user.setUname("测试数据");
user.setRegDate(new Date());
user.setMoney(-1D);
try {
count += userDAO.insertUser(user);
} catch (Exception e) {
System.out.println("添加失败!错误原因:"+e.getMessage());
break;
// e.printStackTrace();
}
}
if(count == 357){
con = true;
}
// 返回
return con;
}
}
4.2.6 test层-测试test.java
没啥用,哈哈
package com.hnxy.test;
import com.hnxy.service.UserService;
public class Test1 {
public static void main(String[] args) {
UserService service = new UserService();
boolean con = service.insertUsers();
System.out.println(con);
}
}
4.2.7 [核心] web控制器层
4.2.7.1 分页展示数据的控制器
package com.hnxy.web;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hnxy.entity.UserInfo;
import com.hnxy.service.UserService;
/**
* 分页展示数据的Action(控制器)
* @author My
*/
public class FindUserByPageAction extends HttpServlet {
private static final long serialVersionUID = 1L;
// 创建业务层对象
private UserService userService = new UserService();
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 分页? 总条数 每页展示多少条(页容量) 总页数 页码(1-总页数)
int totalCount = 0; // 总条数
int totalPage = 0; // 总页数
int pageSize = 10; // 页容量
int pageIndex = 1;
// 获取分页集合
List<UserInfo> users = null;
// 获取第一个数据
totalCount = userService.findUserListByPageCount();
// 获取第二个数据
totalPage = totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1;
// 接收页面传递的pageIndex
String pi = request.getParameter("pageIndex");
if (null != pi && !"".equals(pi.trim())) {
// xxxAction?pageIndex=-1
pageIndex = Integer.parseInt(pi);
}
// 判断一下pageIndex的边界值
// 1. pageIndex一定不能小于1
if (pageIndex < 1) {
pageIndex = 1;
}
// 2. pageIndex 一定不能大于 总页数
if (pageIndex > totalPage) {
pageIndex = totalPage;
}
// 获取当前页的数据集合 pageIndex pageSize limit start = (pageIndex-1)*pageSize
// size=pageSize
users = userService.findUserListByPage(pageIndex, pageSize);
// 保存这些数据
request.setAttribute("totalCount", totalCount);
request.setAttribute("totalPage", totalPage);
request.setAttribute("pageSize", pageSize);
request.setAttribute("pageIndex", pageIndex);
request.setAttribute("users", users);
// 转发到展示页面
request.getRequestDispatcher("show.jsp").forward(request, response);
}
}
4.2.7.2 添加人员信息的控制器
package com.hnxy.web;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hnxy.entity.UserInfo;
import com.hnxy.service.UserService;
/**
* 添加人员信息的控制器
* @author My
*/
public class AddUserAction extends HttpServlet {
private static final long serialVersionUID = 1L;
// 创建UserService
private UserService userService = new UserService();
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 添加
// 接收页面数据
String uname = request.getParameter("uname");
String regdate = request.getParameter("regdate");
String money = request.getParameter("money");
// 封装数据
UserInfo user = new UserInfo();
user.setUname(uname);
user.setMoney(Double.parseDouble(money));
// 2018-11-09
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
user.setRegDate(df.parse(regdate));
} catch (ParseException e) {
e.printStackTrace();
}
// 调用service执行
int count = userService.insertUser(user);
// 判断
if(count > 0){
// 添加成功
response.sendRedirect("FindUserByPageAction");
}else{
// 保存错误信息
request.setAttribute("msg", "对不起,添加失败!");
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
}
4.2.7.3 删除的控制器
package com.hnxy.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hnxy.entity.UserInfo;
import com.hnxy.service.UserService;
/**
* 删除的控制器
* @author My
*/
public class DeleteUserAction extends HttpServlet {
private static final long serialVersionUID = 1L;
// 创建Service对象
private UserService userService = new UserService();
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 接收UID
String uid = request.getParameter("uid");
// 先传递给Service判断一下有没有如果有再删除没有就删除
UserInfo user = userService.findUserByID(uid);
if(null != user){
// 正常删除
int count = userService.deleteUser(user);
// 判断
if(count > 0){
response.sendRedirect("FindUserByPageAction");
}else{
request.setAttribute("msg", "对不起,删除失败!");
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}else{
// 报错
request.setAttribute("msg", "对不起,没有找到要删除的数据!");
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
}
4.2.7.4 准备更新的控制器
package com.hnxy.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hnxy.entity.UserInfo;
import com.hnxy.service.UserService;
/**
* 准备更新的控制器
* @author My
*/
public class FindUserByIDAction extends HttpServlet {
private static final long serialVersionUID = 1L;
private UserService userService = new UserService();
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取页面数据
String uid = request.getParameter("uid");
// 获取要更新的数据
UserInfo user = userService.findUserByID(uid);
// 判断
if(null != user){
// 跳转展示要更新的页面
request.setAttribute("user", user);
request.getRequestDispatcher("update.jsp").forward(request, response);
}else{
request.setAttribute("msg", "对不起,没有找到要更新的数据!");
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
}
4.2.7.5 更新控制器
package com.hnxy.web;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hnxy.entity.UserInfo;
import com.hnxy.service.UserService;
/**
* 更新控制器
* @author My
*/
public class UpdateUserAction extends HttpServlet {
private static final long serialVersionUID = 1L;
private UserService userService = new UserService();
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 接收页面数据
String uid = request.getParameter("uid");
String uname = request.getParameter("uname");
String regdate = request.getParameter("regdate");
String money = request.getParameter("money");
// 封装数据
UserInfo user = userService.findUserByID(uid);
if(null != user){
// 正常更新
user.setUname(uname);
user.setMoney(Double.parseDouble(money));
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
user.setRegDate(df.parse(regdate));
} catch (ParseException e) {
e.printStackTrace();
}
// 更新
int count = userService.updateUser(user);
if(count > 0){
response.sendRedirect("FindUserByPageAction");
}else{
request.setAttribute("msg", "对不起,更新失败!");
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}else{
request.setAttribute("msg", "对不起,没有找打要更新的数据");
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
}
4.2.7.6 FilterChain 过滤器链
package com.hnxy.web;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class EncodingFilter implements Filter {
public void destroy() {
System.out.println("[信息]中文乱码过滤器已停止工作......");
}
public void init(FilterConfig fConfig) throws ServletException {
System.out.println("[信息]中文乱码过滤器初始化工作完成........");
}
/**
* FilterChain 过滤器链
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 处理中文乱码问题
request.setCharacterEncoding("UTF-8");
// pass the request along the filter chain
chain.doFilter(request, response); // 执行下一个过滤器 直到最后一个过滤器执行完 把处理给servlet
}
}
4.2.8 WebContent下创建各类页面
4.2.8.1 首页index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>海牛学院-会员信息管理系统</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/bootstrap.min.css">
<script src="${pageContext.request.contextPath}/js/jquery-1.9.1.js"></script>
<script src="${pageContext.request.contextPath}/js/bootstrap.min.js"></script>
<script type="text/javascript">
// 查询数据请求
function showUsers(){
window.location.href = "FindUserByPageAction";
}
// 跳转添加人员页面
function addUser(){
window.location.href = "add.jsp";
}
</script>
</head>
<body>
<div class="jumbotron">
<div class="container">
<h1>欢迎使用海牛会员信息管理系统!</h1>
<p>请选择一个功能吧......</p>
<p>
<a class="btn btn-primary btn-lg" role="button" onclick="showUsers();">查询会员信息</a>
<a class="btn btn-success btn-lg" role="button" onclick="addUser();">添加新会员</a>
</p>
</div>
</div>
</body>
</html>
效果:
4.2.8.2 展示页面 show.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>海牛学院-会员信息管理系统</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/bootstrap.min.css">
<script src="${pageContext.request.contextPath}/js/jquery-1.9.1.js"></script>
<script src="${pageContext.request.contextPath}/js/bootstrap.min.js"></script>
<script type="text/javascript">
// 分页
function goPage(pi){
window.location.href = "FindUserByPageAction?pageIndex="+pi;
}
// 删除
function goDelete(uid){
var con = window.confirm("确定要删除这条数据么?");
if(con == true){
window.location.href = "DeleteUserAction?uid="+uid;
}
}
// 更新
function goUpdate(uid){
window.location.href = "FindUserByIDAction?uid="+uid;
}
</script>
</head>
<body>
<div>
<h1>会员信息展示</h1>
<div style="margin: 10px;">
<button type="button" class="btn btn-primary" onclick="javascript:window.location.href='index.jsp;'">返回首页</button>
</div>
<table class="table table-hover">
<tr class="active">
<td colspan="5">
一共查询出数据<strong style="color: blue;font-size: 20px;"> ${totalCount} </strong>
条,每页展示<strong style="color: blue;font-size: 20px;"> ${pageSize} </strong>
条,一共需要展示<strong style="color: blue;font-size: 20px;"> ${totalPage} </strong>
页,当前是第<strong style="color: blue;font-size: 20px;"> ${pageIndex} </strong>页;
</td>
</tr>
<tr class="info">
<th>会员编号</th>
<th>会员姓名</th>
<th>入会时间</th>
<th>会员余额</th>
<th>操作</th>
</tr>
<c:forEach var="u" items="${users}">
<tr>
<td>${u.uid}</td>
<td>${u.uname}</td>
<td>
<fmt:formatDate value="${u.regDate}" pattern="yyyy年MM月dd日"/>
</td>
<td>
<fmt:formatNumber type="currency" value="${u.money}" />
</td>
<th>
<button type="button" onclick="goUpdate(${u.uid});" class="btn btn-warning">更新</button>
<button type="button" onclick="goDelete(${u.uid});" class="btn btn-danger">删除</button>
</th>
</tr>
</c:forEach>
<tr>
<th colspan="5" style="text-align: center;">
<button type="button" onclick="goPage(1);" class="btn btn-default">首页</button>
<c:choose>
<c:when test="${pageIndex > 1}">
<button type="button" onclick="goPage(${pageIndex -1});" class="btn btn-default">上一页</button>
</c:when>
<c:otherwise>
<button type="button" disabled="disabled" class="btn btn-default">上一页</button>
</c:otherwise>
</c:choose>
<!-- 正常情况 -->
<c:choose>
<c:when test="${totalPage > pageIndex}">
<button type="button" onclick="goPage(${pageIndex+1});" class="btn btn-default">下一页</button>
</c:when>
<c:otherwise>
<button type="button" disabled="disabled" class="btn btn-default">下一页</button>
</c:otherwise>
</c:choose>
<button type="button" onclick="goPage(${totalPage});" class="btn btn-default">末页</button>
</th>
</tr>
</table>
</div>
</body>
</html>
效果:
4.2.8.3 添加页面 add.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>海牛学院会员信息管理系统</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/bootstrap.min.css">
<script src="${pageContext.request.contextPath}/js/jquery-1.9.1.js"></script>
<script src="${pageContext.request.contextPath}/js/bootstrap.min.js"></script>
<script type="text/javascript">
</script>
</head>
<body>
<div class=container>
<h1>添加会员信息!</h1>
<form action="AddUserAction" method="post">
<table class="table table hover">
<tr>
<td>会员姓名</td>
<td>
<input type="text" class="form-control" name="uname" required="required" placeholder="请输入会员真实姓名" />
</td>
</tr>
<tr>
<td>会员时间</td>
<td>
<input type="date" class="form-control" name="regdate" required="required" />
</td>
</tr>
<tr>
<td>充值金额</td>
<td>
<input type="text" class="form-control" name="money" required="required" placeholder="请输入会员充值金额" />
</td>
</tr>
<tr>
<td colspan="2" style="text-align: center;">
<button type="submit" class="btn btn-success">确定</button>
<button type="reset" class="btn btn-danger" onclick="javascript:history.go(-1);">取消
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
4.2.8.4 更新页面 update.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>海牛学院会员信息管理系统</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/bootstrap.min.css">
<script src="${pageContext.request.contextPath}/js/jquery-1.9.1.js"></script>
<script src="${pageContext.request.contextPath}/js/bootstrap.min.js"></script>
<script type="text/javascript">
</script>
</head>
<body>
<div class=container>
<h1>更新会员信息</h1>
<form action="UpdateUserAction" method="post">
<input type="hidden" name="uid" value="${user.uid}"/>
<table class="table table hover">
<tr>
<td>会员姓名</td>
<td>
<input type="text" class="${user.uname}" name="uname" required="required" placeholder="请输入会员真实姓名" />
</td>
</tr>
<tr>
<td>会员时间</td>
<td>
<input type="date" class="${user.regDate}" name="regdate" required="required" />
</td>
</tr>
<tr>
<td>充值金额</td>
<td>
<input type="text" class="${user.money}" name="money" required="required" placeholder="请输入会员充值金额" />
</td>
</tr>
<tr>
<td colspan="2" style="text-align: center;">
<button type="submit" class="btn btn-success">确定</button>
<button type="reset" class="btn btn-danger" onclick="javascript:history.go(-1);">取消
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
4.2.8.5 错误页面 error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>海牛学院会员信息管理系统</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/bootstrap.min.css">
<script src="${pageContext.request.contextPath}/js/jquery-1.9.1.js"></script>
<script src="${pageContext.request.contextPath}/js/bootstrap.min.js"></script>
<script type="text/javascript">
function goIndex(){
window.location.href = "index.jsp";
}
</script>
</head>
<body>
<div class="jumbotron">
<div class=container>
<h1>欢迎来到海牛学院管理系统!</h1>
<p>报错了,错误原因${msg}</p>
<p><a class="btn btn-primary btn-lg" role="button" onclick="goIndex();">
返回首页</a>
</p>
</div>
</div>
</body>
</html>
效果:
4.2.9 xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>servlet03_day0803</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>FindUserByPageAction</display-name>
<servlet-name>FindUserByPageAction</servlet-name>
<servlet-class>com.hnxy.web.FindUserByPageAction</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FindUserByPageAction</servlet-name>
<url-pattern>/FindUserByPageAction</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>AddUserAction</display-name>
<servlet-name>AddUserAction</servlet-name>
<servlet-class>com.hnxy.web.AddUserAction</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddUserAction</servlet-name>
<url-pattern>/AddUserAction</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>DeleteUserAction</display-name>
<servlet-name>DeleteUserAction</servlet-name>
<servlet-class>com.hnxy.web.DeleteUserAction</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DeleteUserAction</servlet-name>
<url-pattern>/DeleteUserAction</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>FindUserByIDAction</display-name>
<servlet-name>FindUserByIDAction</servlet-name>
<servlet-class>com.hnxy.web.FindUserByIDAction</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FindUserByIDAction</servlet-name>
<url-pattern>/FindUserByIDAction</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>UpdateUserAction</display-name>
<servlet-name>UpdateUserAction</servlet-name>
<servlet-class>com.hnxy.web.UpdateUserAction</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UpdateUserAction</servlet-name>
<url-pattern>/UpdateUserAction</url-pattern>
</servlet-mapping>
</web-app>