优化(分页)
package com.gm.servlet;
import com.gm.pojo.PageInfo;
import com.gm.service.IUserService;
import com.gm.service.impl.UserService;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.xml.ws.http.HTTPException;
import java.io.IOException;
public class findByPageServlet extends HttpServlet {
// @Override
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// String current = request.getParameter("currentPage");
// String size1 = request.getParameter("size");
// int currentPage = Integer.parseInt(current);
// int size = Integer.parseInt(size1);
// IUserService userService = new UserService();
// PageInfo pageInfo = userService.findByPage(currentPage, size);
// HttpSession session = request.getSession();
// session.setAttribute("user1", pageInfo);
// request.getRequestDispatcher("allUser.jsp").forward(request, response);
// }
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
String searchname = (String) session.getAttribute("searchname");
// String searchname = request.getParameter("searchname");
String current = request.getParameter("currentPage");
String size1 = request.getParameter("size");
int currentPage = Integer.parseInt(current);
int size = Integer.parseInt(size1);
IUserService userService = new UserService();
PageInfo pageInfo = null;
pageInfo = userService.findByPage(searchname, currentPage, size);
session.setAttribute("user1", pageInfo);
request.getRequestDispatcher("allUser.jsp").forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String searchname = request.getParameter("searchname");
int current = 1;
int size1 = 5;
IUserService userService = new UserService();
PageInfo pageInfo = null;
pageInfo = userService.findByPage(searchname, current, size1);
HttpSession session = request.getSession();
session.setAttribute("searchname",searchname);
session.setAttribute("user1", pageInfo);
request.getRequestDispatcher("allUser.jsp").forward(request, response);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>user列表</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 引入 Bootstrap -->
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body bgcolor="">
<div class="container" style="background: url(./images/3.jpg);width: 100%;height: 100%;">
<div class="row clearfix">
<div class="col-md-12 column">
<div class="page-header">
<h1>
用户管理系统
</h1>
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-md-12 column">
<div class="page-header">
<h1>
<small>用户列表 —— 显示所有用户</small>
</h1>
</div>
</div>
</div>
<div class="row">
<div class="col-md-4 column">
<a class="btn btn-primary" href="addUser.jsp">新增</a>
</div>
</div>
<br>
<div>
<form action="/findByPage?currentPage=1&size=5" method="post">
<input name="searchname" type="text">
<input type="submit" value="查询">
</form>
</div>
<div class="row clearfix">
<div class="col-md-12 column">
<table class="table table-hover table-striped">
<thead>
<tr>
<th>id</th>
<th>用户名</th>
<th>密码</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<c:forEach var="user" items="${user1.list}">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.password}</td>
<td>
<a href="/delete?id=${user.id}¤tPage=1&size=5">删除</a>|
<a href="/update?id=${user.id}¤tPage=1&size=5">修改</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
<div style="background: white">
<a href="/findByPage?currentPage=1&size=5">首页</a>
<c:if test="${user1.currentPage==1}">
<a href="/findByPage?currentPage=1&size=5">上一页</a>
</c:if>
<c:if test="${user1.currentPage>1}">
<a href="/findByPage?currentPage=${user1.currentPage-1}&size=5">上一页</a>
</c:if>
<c:forEach begin="1" end="${user1.totalPage}" var="i">
<a href="/findByPage?currentPage=${i}&size=5">${i}</a>
</c:forEach>
<c:if test="${user1.currentPage==user1.totalPage}">
<a href="/findByPage?currentPage=${user1.totalPage}&size=5">下一页</a>
</c:if>
<c:if test="${user1.currentPage<user1.totalPage}">
<a href="/findByPage?currentPage=${user1.currentPage+1}&size=5">下一页</a>
</c:if>
<a href="/findByPage?currentPage=${user1.totalPage}&size=5">尾页</a>
</div>
</div>
@Override
public PageInfo findByPage(String username,int currentPage, int size) {
PageInfo pageInfo = new PageInfo();
pageInfo.setCurrentPage(currentPage);
pageInfo.setSize(size);
int start =(currentPage-1)*size;
List<User> users =userDao.findByPage(username,start,size);
pageInfo.setList(users);
int count = userDao.count(username);
pageInfo.setTotalCount(count);
Double c =Double.valueOf(count);
Double ceil = Math.ceil(c/size);
pageInfo.setTotalPage(ceil.intValue());
return pageInfo;
}
@Override
public List<User> findByPage(String username,int start, int size) {
ResultSet resultSet = null;
PreparedStatement statement = null;
Connection connection = null;
List<User> users = new ArrayList<>();
try {
connection = DBUtill.getConnection();
if (username==null) {
String sql = "select * from fuser limit ?,?";
statement = connection.prepareStatement(sql);
statement.setInt(1,start);
statement.setInt(2,size);
}else {
String sql = "select * from fuser where username like ? limit ?,?";
statement = connection.prepareStatement(sql);
statement.setString(1,"%"+username+"%");
statement.setInt(2,start);
statement.setInt(3,size);
}
resultSet = statement.executeQuery();
while (resultSet.next()) {
User user = new User();
user.setId(resultSet.getInt(1));
user.setName(resultSet.getString(2));
user.setPassword(resultSet.getString(3));
users.add(user);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtill.closeAll(resultSet, statement, connection);
}
return users;
}
@Override
public int count(String name) {
ResultSet resultSet = null;
PreparedStatement statement = null;
Connection connection = null;
int count = 0;
try {
connection = DBUtill.getConnection();
if (name==null) {
String sql = "SELECT COUNT(*) FROM fuser";
statement = connection.prepareStatement(sql);
}else {
String sql = "SELECT COUNT(*) FROM fuser where username like ?";
statement = connection.prepareStatement(sql);
statement.setString(1,"%"+name+"%");
}
resultSet = statement.executeQuery();
while (resultSet.next()){
count = resultSet.getInt(1);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtill.closeAll(resultSet, statement, connection);
}
return count;
}