使用Model2模式完成会员信息管理系统

6 篇文章 0 订阅
4 篇文章 0 订阅

一、需求概述

  • 使用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>
								&emsp;
								<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>&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;
					页容量:<strong><span style="color: red; font-size: 20px;">${pageSize}</span></strong>&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;
					总页数:<strong><span style="color: red; font-size: 20px;">${totalPage}</span></strong>&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;
					当前页:<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>
								&emsp;
								<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>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值