一、需求概述
- 使用Model2对会员信息管理系统进行增删改查操作
- 页面效果
二、具体实现
1、创建数据库
- 创建会员数据库
create database if not exists user_db;
2、创建表
- 创建会员表
create table if not exists user_info(
u_id int auto_increment comment '会员编号',
u_name varchar(32) not null comment '会员姓名',
u_regdate date not null comment '入会日期',
u_money double default 1.0 comment '入会金额',
constraint pk_userinfo_uid primary key(u_id)
)engine=innodb default charset='utf8';
3、创建Java web项目
- 创建Dynamic Web Project项目
- 创建分层包:dao、service、controller、entity、utils、test以及dao和service的implement
4、创建JavaBean和JDBC工具类
- 创建userInfo类
package com.gaj.entity;
import java.io.Serializable;
import java.util.Date;
/**
* JavaBean
* 会员信息类
* @author Jan
*
*/
public class UserInfo implements Serializable{
/**
* 序列化
*/
private static final long serialVersionUID = 1L;
private Integer uid; // 会员编号
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;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
@Override
public String toString() {
return "UserInfo [uid=" + uid + ", uname=" + uname + ", regDate=" + regDate + ", money=" + money + "]";
}
}
- 导入相关jar包
- 创建JDBCUtil类
package com.gaj.utils;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSource;
/**
* JDBC工具类
* Druid数据源 + dbutils工具
* 开启Druid Web监控
* @author Jan
*
*/
public class JDBCUtil {
// 定义连接属性
private static final String CONN_DRIVER = "com.mysql.jdbc.Driver";
private static final String CONN_URL = "jdbc:mysql://localhost:3306/user_db?characterEncoding=utf-8";
private static final String CONN_USER = "root";
private static final String CONN_PASS = "root";
private static final String StatFilter = "stat";
// 创建druid数据源对象
private static final DruidDataSource dataSource = new DruidDataSource();
// 绑定属性
static{
dataSource.setDriverClassName(CONN_DRIVER);
dataSource.setUrl(CONN_URL);
dataSource.setUsername(CONN_USER);
dataSource.setPassword(CONN_PASS);
// 开启druid web监控
try {
dataSource.addFilters(StatFilter);
} catch (SQLException e) {
e.printStackTrace();
}
}
// 获取数据源
public static final DataSource getDataSource(){
return dataSource;
}
}
- 导入BootStrap相关文件
5、编写首页页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/css/bootstrap.min.css" />
<script type="text/javascript" charset="utf-8" src="${pageContext.request.contextPath }/js/jquery-1.9.1.js"></script>
<script type="text/javascript" charset="utf-8" src="${pageContext.request.contextPath }/js/bootstrap.min.js"></script>
<title>会员信息管理系统</title>
</head>
<body>
<div class="jumbotron">
<div class="container">
<h1>欢迎使用会员信息管理系统!</h1>
<p>请选择一个功能吧...</p>
<p>
<a class="btn btn-primary btn-lg" role="button" href="ShowAction">查询会员信息</a>
<a class="btn btn-success btn-lg" role="button" href="add.jsp">添加会员信息</a>
</p>
</div>
</div>
</body>
</html>
6、编写添加页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>添加会员信息</title>
<link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath }/css/bootstrap.min.css" />
<script type="text/javascript" charset="utf-8" src="${pageContext.request.contextPath }/js/jquery-1.9.1.js"></script>
<script type="text/javascript" charset="utf-8" src="${pageContext.request.contextPath }/js/bootstrap.min.js"></script>
</head>
<body>
<div>
<fieldset>
<legend style="color: orange; font-family: 楷体; font-size:30px;">添加会员信息</legend>
<form action="AddAction" method="post">
<table class="table table-hover">
<tr>
<th style="text-align: center; color:lime; font-size:17px;">会员姓名:</th>
<td>
<input class="form-control" type="text" name="uname" required="required" placeholder="请输入会员姓名..." />
</td>
</tr>
<tr>
<th style="text-align: center; color: red; font-size:17px;">入会日期:</th>
<td>
<input class="form-control" type="date" name="regdate" required="required" placeholder="请选择入会日期..." />
</td>
</tr>
<tr>
<th style="text-align: center; color:blue; font-size:17px;">入会金额:</th>
<td>
<input class="form-control" type="number" name="money" min="5000.00" max="99999.99" step="100.00" required="required" placeholder="请输入入会金额..." />
</td>
</tr>
<tr>
<th colspan="2" style="text-align:center;">
<button class="btn btn-success btn-lg" type="submit">添加</button>
 
<button class="btn btn-danger btn-lg" type="reset" onclick="window.history.back();">取消</button>
</th>
</tr>
</table>
</form>
</fieldset>
</div>
</body>
</html>
7、编写查询页面
<%@ 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="f" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>展示会员信息</title>
<link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath }/css/bootstrap.min.css" />
<script type="text/javascript" charset="utf-8" src="${pageContext.request.contextPath }/js/jquery-1.9.1.js"></script>
<script type="text/javascript" charset="utf-8" src="${pageContext.request.contextPath }/js/bootstrap.min.js"></script>
<script type="text/javascript">
function goIndex(){
window.location.href="index.jsp";
}
function goDelete(uid){
window.location.href="DeleteAction?uid=" + uid;
}
function goUpdate(uid){
window.location.href="UpdateAction?uid=" + uid;
}
function goPage(pageIndex){
window.location.href="ShowAction?pageIndex=" + pageIndex;
}
</script>
</head>
<body>
<div>
<table class="table table-hover">
<tr>
<th style="text-align:center; color: fuchsia;font-size: 30px;" colspan="5" onclick="goIndex();">展示会员信息</th>
</tr>
<tr>
<th style="text-align:center; font-size=18px;" colspan="5">
总会员人数:<strong><span style="color: red; font-size: 20px;">${totalCount}</span></strong>        
页容量:<strong><span style="color: red; font-size: 20px;">${pageSize}</span></strong>        
总页数:<strong><span style="color: red; font-size: 20px;">${totalPage}</span></strong>        
当前页:<strong><span style="color: red; font-size: 20px;">${pageIndex}</span></strong>
</th>
</tr>
<tr>
<th style="text-align:center; color:aqua; font-size:17px;">会员编号</th>
<th style="text-align:center; color:lime; font-size:17px;">会员姓名</th>
<th style="text-align:center; color:blue; font-size:17px;">入会日期</th>
<th style="text-align:center; color:maroon; font-size:17px;">入会金额</th>
<th style="text-align:center; color:olive; font-size:17px;">操作</th>
</tr>
<c:forEach var="u" items="${users }">
<tr>
<td style="text-align:center; font-size:17px;">${u.uid }</td>
<td style="text-align:center; font-size:17px;">${u.uname }</td>
<td style="text-align:center; font-size:17px;"><f:formatDate value="${u.regDate }" pattern="yyyy年MM月dd日"/></td>
<td style="text-align:center; font-size:17px;"><f:formatNumber value="${u.money }" type="currency"></f:formatNumber></td>
<th style="text-align:center;">
<button class="btn btn-warning" type="button" onclick="goUpdate(${u.uid});">更新</button>
<button class="btn btn-danger" type="button" onclick="goDelete(${u.uid});">删除</button>
</th>
</tr>
</c:forEach>
<tr>
<th colspan="5" style="text-align: center;">
<button class="btn btn-default" type="button" onclick="goPage(1);">首页</button>
<c:if test="${pageIndex le 1}">
<button class="btn btn-default" type="button" onclick="goPage(${pageIndex - 1})" disabled="disabled" >上一页</button>
</c:if>
<c:if test="${pageIndex gt 1}">
<button class="btn btn-default" type="button" onclick="goPage(${pageIndex - 1})" >上一页</button>
</c:if>
<c:if test="${pageIndex ge totalPage }">
<button class="btn btn-default" type="button" onclick="goPage(${pageIndex + 1})" disabled="disabled" >下一页</button>
</c:if>
<c:if test="${pageIndex lt totalPage }">
<button class="btn btn-default" type="button" onclick="goPage(${pageIndex + 1})" >下一页</button>
</c:if>
<button class="btn btn-default" type="button" onclick="goPage(${totalPage});">末页</button>
</th>
<tr>
</table>
</div>
</body>
</html>
8、编写更新页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>添加会员信息</title>
<link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath }/css/bootstrap.min.css" />
<script type="text/javascript" charset="utf-8" src="${pageContext.request.contextPath }/js/jquery-1.9.1.js"></script>
<script type="text/javascript" charset="utf-8" src="${pageContext.request.contextPath }/js/bootstrap.min.js"></script>
</head>
<body>
<div>
<fieldset>
<legend style="color: orange; font-family: 楷体; font-size:30px;">更新会员信息</legend>
<form action="UpdateAction2" method="post">
<input type="hidden" name="uid" value="${userInfo.uid }" />
<table class="table table-hover">
<tr>
<th style="text-align: center; color:lime; font-size:17px;">会员姓名:</th>
<td>
<input class="form-control" type="text" name="uname" value="${userInfo.uname }" required="required" placeholder="请输入会员姓名..." />
</td>
</tr>
<tr>
<th style="text-align: center; color: red; font-size:17px;">入会日期:</th>
<td>
<input class="form-control" type="date" name="regdate" value="${userInfo.regDate }" required="required" placeholder="请选择入会日期..." />
</td>
</tr>
<tr>
<th style="text-align: center; color:blue; font-size:17px;">入会金额:</th>
<td>
<input class="form-control" type="number" name="money" value="${userInfo.money }" min="5000.00" max="99999.99" step="100.00" required="required" placeholder="请输入入会金额..." />
</td>
</tr>
<tr>
<th colspan="2" style="text-align:center;">
<button class="btn btn-success btn-lg" type="submit">更新</button>
 
<button class="btn btn-danger btn-lg" type="reset" onclick="window.history.back();">取消</button>
</th>
</tr>
</table>
</form>
</fieldset>
</div>
</body>
</html>
9、编写错误页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/css/bootstrap.min.css" />
<script type="text/javascript" charset="utf-8" src="${pageContext.request.contextPath }/js/jquery-1.9.1.js"></script>
<script type="text/javascript" charset="utf-8" src="${pageContext.request.contextPath }/js/bootstrap.min.js"></script>
<title>错误提示</title>
</head>
<body>
<div class="jumbotron">
<div class="container">
<h1>错误提示</h1>
<p style="color: red; font-size: 30px;">
错误信息:${msg }
</p>
<p>
<a class="btn btn-success btn-lg" role="button" href="index.jsp">返回首页</a>
</p>
</div>
</div>
</body>
</html>
9、DAO层
- DAO层接口
package com.gaj.dao;
import java.util.List;
import com.gaj.entity.UserInfo;
/**
* userDAO层接口
* @author Jan
*
*/
public interface UserDAO {
public int insert(UserInfo userInfo) throws Exception;
public int delete(UserInfo userInfo) throws Exception;
public int update(UserInfo userInfo) throws Exception;
public UserInfo findUserById(Integer id) throws Exception;
public int findUserstotalCount() throws Exception;
public List<UserInfo> findUsersByPage(Integer start, Integer size) throws Exception;
}
- DAO层实现类
package com.gaj.dao.implement;
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.gaj.dao.UserDAO;
import com.gaj.entity.UserInfo;
import com.gaj.utils.JDBCUtil;
public class UserDAOImpl implements UserDAO {
QueryRunner qr = new QueryRunner(JDBCUtil.getDataSource());
@Override
public int insert(UserInfo userInfo) throws Exception {
String sql = "insert into user_info values(null,?,?,?)";
Object[] params = {userInfo.getUname(), userInfo.getRegDate(), userInfo.getMoney()};
int count = qr.update(sql, params);
return count;
}
@Override
public int delete(UserInfo userInfo) throws Exception {
String sql = "delete from user_info where u_id=?";
Object param = userInfo.getUid();
int count = qr.update(sql, param);
return count;
}
@Override
public int update(UserInfo userInfo) throws Exception {
String sql = "update user_info set u_name=?,u_regdate=?,u_money=? where u_id=?";
Object[] params = {userInfo.getUname(), userInfo.getRegDate(), userInfo.getMoney(), userInfo.getUid()};
int count = qr.update(sql, params);
return count;
}
@Override
public UserInfo findUserById(Integer id) throws Exception {
String sql = "select u_id uid, u_name uname, u_regdate regdate, u_money money from user_info where u_id=?";
Object param = id;
UserInfo user = qr.query(sql, new BeanHandler<UserInfo>(UserInfo.class), param);
return user;
}
@Override
public int findUserstotalCount() throws Exception {
String sql = "select count(*) from user_info";
Number num = qr.query(sql, new ScalarHandler<Number>(1));
return num.intValue();
}
@Override
public List<UserInfo> findUsersByPage(Integer start, Integer size) throws Exception {
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};
List<UserInfo> users = qr.query(sql, new BeanListHandler<UserInfo>(UserInfo.class), params);
return users;
}
}
10、Service层
- Service层接口
package com.gaj.server;
import java.util.List;
import com.gaj.entity.UserInfo;
/**
* userService层接口
* @author Jan
*
*/
public interface UserService {
public int insert(UserInfo userInfo);
public int delete(UserInfo userInfo);
public int update(UserInfo userInfo);
public UserInfo findUserById(Integer id);
public int findUserstotalCount();
public List<UserInfo> findUsersByPage(Integer pageIndex, Integer pageSize);
}
- Service层实现类
package com.gaj.server.implement;
import java.util.List;
import com.gaj.dao.UserDAO;
import com.gaj.dao.implement.UserDAOImpl;
import com.gaj.entity.UserInfo;
import com.gaj.server.UserService;
public class UserServiceImpl implements UserService {
// 创建UserDAO对象
UserDAO userDao = new UserDAOImpl();
@Override
public int insert(UserInfo userInfo){
int count = 0;
try {
count = userDao.insert(userInfo);
} catch (Exception e) {
System.out.println("【错误】插入失败!原因:" + e.getMessage());
e.printStackTrace();
}
return count;
}
@Override
public int delete(UserInfo userInfo){
int count = 0;
try {
count = userDao.delete(userInfo);
} catch (Exception e) {
System.out.println("【错误】删除失败!原因:" + e.getMessage());
e.printStackTrace();
}
return count;
}
@Override
public int update(UserInfo userInfo){
int count = 0;
try {
count = userDao.update(userInfo);
} catch (Exception e) {
System.out.println("【错误】更新失败!原因:" + e.getMessage());
e.printStackTrace();
}
return count;
}
@Override
public UserInfo findUserById(Integer id){
UserInfo user = null;
try {
user = userDao.findUserById(id);
} catch (Exception e) {
System.out.println("【错误】查找数据失败!原因:" + e.getMessage());
e.printStackTrace();
}
return user;
}
@Override
public int findUserstotalCount(){
int count = 0;
try {
count = userDao.findUserstotalCount();
} catch (Exception e) {
System.out.println("【错误】查询总数据数失败!原因:" + e.getMessage());
e.printStackTrace();
}
return count;
}
@Override
public List<UserInfo> findUsersByPage(Integer pageIndex, Integer pageSize){
List<UserInfo> users = null;
// 总条数
int totalCount = findUserstotalCount();
// 总页数
int totalPage = (totalCount % pageSize == 0) ? (totalCount / pageSize) : (totalCount / pageSize + 1);
// 判断边界值
if(pageIndex < 1){
pageIndex = 1;
}
if(pageIndex > totalPage){
pageIndex = totalPage;
}
if(pageIndex != null && pageSize != null){
if(pageIndex > 0 && pageSize > 0){
int start = (pageIndex - 1) * pageSize;
int size = pageSize;
try {
users = userDao.findUsersByPage(start, size);
} catch (Exception e) {
System.out.println("【错误】查询分页数据失败!原因:" + e.getMessage());
e.printStackTrace();
}
}
}
return users;
}
}
11、测试类
- 添加Libray:JUnit 4
测试DAO层和Service层的功能能否正常使用
package com.gaj.test;
import java.util.Date;
import java.util.List;
import org.junit.Test;
import com.gaj.entity.UserInfo;
import com.gaj.server.UserService;
import com.gaj.server.implement.UserServiceImpl;
/**
* 会员信息系统的测试类
* @author Jan
*
*/
public class UserInfoTest {
// 创建UserService对象
UserService service = new UserServiceImpl();
@Test
public void InsertUsersTest() throws Exception{
UserInfo userInfo = null;
for(int i = 1; i < 888; i++){
userInfo = new UserInfo();
userInfo.setUname("测试数据" + i);
userInfo.setRegDate(new Date());
userInfo.setMoney(Math.random()*(10000 - 100 + 1) + 100);
service.insert(userInfo);
}
}
@Test
public void InsertUserTest()throws Exception{
UserInfo userInfo = new UserInfo();
userInfo.setUname("张三");
userInfo.setRegDate(new Date());
userInfo.setMoney(6000D);
service.insert(userInfo);
}
@Test
public void deleteTest() throws Exception{
UserInfo userInfo = service.findUserById(887);
int count = service.delete(userInfo);
System.out.println(count>0 ? "删除成功!" : "删除失败!");
}
@Test
public void updateTest() throws Exception{
UserInfo userInfo = service.findUserById(886);
userInfo.setUname("李四");
userInfo.setRegDate(new Date());
userInfo.setMoney(10000D);
int count = service.update(userInfo);
System.out.println(count>0 ? "更新成功!" : "更新失败!");
}
@Test
public void findUsersTest() throws Exception{
List<UserInfo> users = service.findUsersByPage(0, 10);
for (UserInfo userInfo : users) {
System.out.println(userInfo);
}
}
}
12、创建过滤器(Fileter)
- Encoding过滤器
Filter文件
package com.gaj.controller;
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;
/**
* Servlet Filter implementation class EncodingFilter
*/
public class EncodingFilter implements Filter {
public void destroy() {
System.out.println("【重要】编码过滤器已停止工作...");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
System.out.println("【重要】编码过滤器已开始工作...");
}
}
web.xml文件配置
<!-- 编码过滤器 -->
<filter>
<display-name>EncodingFilter</display-name>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.gaj.controller.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- Druid web监控
web.xml文件配置
<!-- Druid Web监控过滤器 -->
<filter>
<filter-name>DruidWebStatFilter</filter-name>
<filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>DruidWebStatFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Druid Web监控配置 -->
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
<init-param>
<param-name>resetEnable</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>loginUsername</param-name>
<param-value>admin</param-value>
</init-param>
<init-param>
<param-name>loginPassword</param-name>
<param-value>admin</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
13、controller层(Servlet)
- 查询操作控制层
package com.gaj.controller;
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.gaj.entity.UserInfo;
import com.gaj.server.UserService;
import com.gaj.server.implement.UserServiceImpl;
/**
* Servlet implementation class ShowAction
*/
public class ShowAction extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 创建Service对象
UserService service = new UserServiceImpl();
// 页容量
int pageSize = 10;
// 总条数
int totalCount = service.findUserstotalCount();
// 总页数
int totalPage = (totalCount % pageSize == 0) ? (totalCount / pageSize) : (totalCount / pageSize + 1);
// 页索引
Integer pageIndex = 0;
// 接收页面传来的pageIndex
String temp = request.getParameter("pageIndex");
// 去空 转数字
if(temp != null && !"".equals(temp.trim())){
pageIndex = Integer.parseInt(temp);
// 判断边界值
if(pageIndex < 1){
pageIndex = 1;
}
if(pageIndex > totalPage){
pageIndex = totalPage;
}
}
// 分页查询 start = (pageIndex - 1) * pageSize
List<UserInfo> users = service.findUsersByPage(pageIndex, pageSize);
// 保存结果
request.setAttribute("users", users);
request.setAttribute("pageSize", pageSize);
request.setAttribute("totalCount", totalCount);
request.setAttribute("totalPage", totalPage);
request.setAttribute("pageIndex", pageIndex);
// 转发到show.jsp
request.getRequestDispatcher("show.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
- 添加操作控制层
package com.gaj.controller;
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.gaj.entity.UserInfo;
import com.gaj.server.UserService;
import com.gaj.server.implement.UserServiceImpl;
/**
* Servlet implementation class AddAction
*/
public class AddAction extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取表单数据
String uname = request.getParameter("uname");
String regdate = request.getParameter("regdate");
String money = request.getParameter("money");
// 封装数据
UserInfo userInfo = new UserInfo();
userInfo.setUname(uname);
// 数据类型处理
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
userInfo.setRegDate(df.parse(regdate));
} catch (ParseException e) {
e.printStackTrace();
}
userInfo.setMoney(Double.parseDouble(money));
// 创建Service层对象
UserService service = new UserServiceImpl();
int result = service.insert(userInfo);
// 判断添加结果
if(result > 0){
// 重定向到查询页面的控制层
response.sendRedirect("ShowAction");
}else{
// 输出到错误页面
request.setAttribute("msg", "服务器开小差了~添加失败了...请稍后重试...");
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
- 删除操作控制层
package com.gaj.controller;
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.gaj.entity.UserInfo;
import com.gaj.server.UserService;
import com.gaj.server.implement.UserServiceImpl;
/**
* Servlet implementation class DeleteAction
*/
public class DeleteAction extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取地址栏传过来的id值
String uid = request.getParameter("uid");
// 创建Service层对象
UserService service = new UserServiceImpl();
// 找到应该删除的对象
UserInfo userInfo = service.findUserById(Integer.parseInt(uid));
// 执行删除
int count = service.delete(userInfo);
// 判断
if(count > 0){
// 重定向到show.jsp
response.sendRedirect("ShowAction");
}else{
// 输出到错误页面
request.setAttribute("msg", "服务器开小差了~删除失败了...请稍后重试...");
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
- 更新回显控制层
package com.gaj.controller;
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.gaj.entity.UserInfo;
import com.gaj.server.UserService;
import com.gaj.server.implement.UserServiceImpl;
/**
* Servlet implementation class UpdateAction
*/
public class UpdateAction extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 接收地址栏传过来的id值
String uid = request.getParameter("uid");
// 创建Service层对象
UserService service = new UserServiceImpl();
// 找到要更新的数据
UserInfo userInfo = service.findUserById(Integer.parseInt(uid));
// 保存要更新的数据
request.setAttribute("userInfo", userInfo);
// 转发给update.jsp
request.getRequestDispatcher("update.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
- 更新操作控制层
package com.gaj.controller;
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.gaj.entity.UserInfo;
import com.gaj.server.UserService;
import com.gaj.server.implement.UserServiceImpl;
/**
* Servlet implementation class UpdateAction2
*/
public class UpdateAction2 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 接收update.jsp表单传过来的值
String uid = request.getParameter("uid");
String uname = request.getParameter("uname");
String regdate = request.getParameter("regdate");
String money = request.getParameter("money");
// 创建Service对象
UserService service = new UserServiceImpl();
// 找到要更新的数据
UserInfo userInfo = service.findUserById(Integer.parseInt(uid));
// 封装成对象
userInfo.setUname(uname);
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
userInfo.setRegDate(df.parse(regdate));
} catch (ParseException e) {
e.printStackTrace();
}
userInfo.setMoney(Double.valueOf(money));
// 执行更新
int count = service.update(userInfo);
// 判断
if(count > 0){
// 重定向到show.jsp
response.sendRedirect("ShowAction");
}else{
// 输出到错误页面
request.setAttribute("msg", "服务器开小差了~更新失败了...请稍后重试...");
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
web.xml文件配置
<!-- Servlet:添加操作控制层 -->
<servlet>
<description></description>
<display-name>AddAction</display-name>
<servlet-name>AddAction</servlet-name>
<servlet-class>com.gaj.controller.AddAction</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddAction</servlet-name>
<url-pattern>/AddAction</url-pattern>
</servlet-mapping>
<!-- Servlet:展示操作控制层 -->
<servlet>
<description></description>
<display-name>ShowAction</display-name>
<servlet-name>ShowAction</servlet-name>
<servlet-class>com.gaj.controller.ShowAction</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ShowAction</servlet-name>
<url-pattern>/ShowAction</url-pattern>
</servlet-mapping>
<!-- Servlet:删除操作控制层 -->
<servlet>
<description></description>
<display-name>DeleteAction</display-name>
<servlet-name>DeleteAction</servlet-name>
<servlet-class>com.gaj.controller.DeleteAction</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DeleteAction</servlet-name>
<url-pattern>/DeleteAction</url-pattern>
</servlet-mapping>
<!-- Servlet:更新回显控制层 -->
<servlet>
<description></description>
<display-name>UpdateAction</display-name>
<servlet-name>UpdateAction</servlet-name>
<servlet-class>com.gaj.controller.UpdateAction</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UpdateAction</servlet-name>
<url-pattern>/UpdateAction</url-pattern>
</servlet-mapping>
<!-- Servlet:更新操作控制层 -->
<servlet>
<description></description>
<display-name>UpdateAction2</display-name>
<servlet-name>UpdateAction2</servlet-name>
<servlet-class>com.gaj.controller.UpdateAction2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UpdateAction2</servlet-name>
<url-pattern>/UpdateAction2</url-pattern>
</servlet-mapping>