经过两天的折腾,终于自己搞定一个完整的分页项目。。。。。。眼都要瞎了。。。。。。有用信息全部展开了,整体截图如下:

1:DBC.java(数据库连接封装类)

package com.common.db;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Statement;
public class DBC {
private static String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/StaffRec";
private static String username = "root";
private static String password = "root";
static {
try {
/**
* 加载驱动
*/
Class.forName(driver);
}catch(Exception ex) {
ex.printStackTrace();
}
}
public static Connection getConnection() {
/**
* 创建连接对象
*/
Connection conn=null;
try {
conn=(Connection) DriverManager.getConnection(url,username,password);
}catch(Exception ex) {
ex.printStackTrace();
}
return conn;
}
/**
* 关闭相关流
*/
public static void close(ResultSet rs,Statement st,Connection conn) {
try {
if(rs!=null) {
rs.close();
}
if(st!=null) {
st.close();
}
if(conn!=null) {
conn.close();
}
}catch(SQLException e) {
e.printStackTrace();
}
}
public static void closePst(ResultSet rs,PreparedStatement pst,Connection conn) {
try {
if(rs!=null) {
rs.close();
}
if(pst!=null) {
pst.close();
}
if(conn!=null) {
conn.close();
}
}catch(SQLException e) {
e.printStackTrace();
}
}
}
2:Rec.java(和数据库表对应的实体类,需要显示的内容)

package javabean;
public class Rec {
private int id;
private String rec;
private String reced;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getRec() {
return rec;
}
public void setRec(String rec) {
this.rec = rec;
}
public String getReced() {
return reced;
}
public void setReced(String reced) {
this.reced = reced;
}
}
3:PageModel.java(完整的分页模型!!!)

package javabean;
import java.util.List;
/**
* 封装分页信息
* @author Administrator
*
*/
public class PageModel<E> {
//结果集
private List<E> list;
//查询记录数
private int totalRecords;
//每页多少条数据
private int pageSize;
//第几页
private int pageNo;
/**
* 总页数
* @return
*/
public int getTotalPages() {
return (totalRecords + pageSize - 1) / pageSize;
}
/**
* 取得首页
* @return
*/
public int getTopPageNo() {
return 1;
}
/**
* 上一页
* @return
*/
public int getPreviousPageNo() {
if (pageNo <= 1) {
return 1;
}
return pageNo - 1;
}
/**
* 下一页
* @return
*/
public int getNextPageNo() {
if (pageNo >= getBottomPageNo()) {
return getBottomPageNo();
}
return pageNo + 1;
}
/**
* 取得尾页
* @return
*/
public int getBottomPageNo() {
return getTotalPages();
}
/**
* get set函数
* @return
*/
public List<E> getList() {
return list;
}
public void setList(List<E> list) {
this.list = list;
}
public int getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
}
4:RecommentDao.java(业务逻辑层,操作数据库等操作,返回值为PageModel对象)

package com.common.page;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.common.db.DBC;
import javabean.*;
public class RecommentDao {
public PageModel<Rec> findData(String pageNo,String pageSize){ //去掉了static
PageModel<Rec> pageModel=null; //移到这儿
Connection conn=DBC.getConnection();
String sql="select * from recommend limit ?,?";
//PageModel pageModel=null;
PreparedStatement pst=null;
ResultSet rs=null;
Rec rec=null;
List<Rec> list=new ArrayList<Rec>();
try {
pst=conn.prepareStatement(sql);
//pstm.setInt(1, (pageNo-1)*pageSize);
//pstm.setInt(2, pageNo*pageSize);
pst.setInt(1, (Integer.parseInt(pageNo)-1)*Integer.parseInt(pageSize));
pst.setInt(2, Integer.parseInt(pageSize));
rs=pst.executeQuery();
while(rs.next()){
rec=new Rec();
rec.setId(rs.getInt("id"));
rec.setRec(rs.getString("rec"));
rec.setReced(rs.getString("reced"));
list.add(rec);
}
ResultSet rs2=pst.executeQuery("select count(*) from recommend");
int total=0;
if(rs2.next()){
total=rs2.getInt(1);//总的数据条数
}
pageModel=new PageModel<Rec>();
pageModel.setPageNo(Integer.parseInt(pageNo));
pageModel.setPageSize(Integer.parseInt(pageSize));
pageModel.setTotalRecords(total);
pageModel.setList(list);
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBC.closePst(rs, pst, conn);
}
return pageModel;
}
/*public static void main(String[] args) {
RecommentDao client=new RecommentDao();
PageModel<Rec> pageModel=client.findData("2","4");
List<Rec> list=pageModel.getList();
for(Rec a:list){
System.out.print("ID:"+a.getId()+",推荐人:"+a.getRec()+",被推荐人:"+a.getReced());
System.out.println();
}
System.out.print("当前页:"+pageModel.getPageNo()+" ");
System.out.print("共"+pageModel.getTotalPages()+"页 ");
System.out.print("首页:"+pageModel.getTopPageNo()+" ");
System.out.print("上一页:"+pageModel.getPreviousPageNo()+" ");
System.out.print("下一页:"+pageModel.getNextPageNo()+" ");
System.out.print("尾页:"+pageModel.getBottomPageNo()+" ");
System.out.print("共"+pageModel.getTotalRecords()+"条记录");
System.out.println();
}*/
}
5:recomment.java(控制层servlet,连接前端和业务层,获得PageModel对象后跳转到新页面展示分页数据信息)

package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.common.page.RecommentDao;
import javabean.PageModel;
import javabean.Rec;
/**
* Servlet implementation class recomment
*/
@WebServlet("/recomment")
public class recomment extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public recomment() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//response.getWriter().append("Served at: ").append(request.getContextPath());
this.doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//System.out.println("+1");
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
String pageSize = request.getParameter("pageSize");// 每页显示行数
String pageNo = request.getParameter("pageNo");// 当前显示页次
if (pageSize == null) {// 为空时设置默认页大小为10
pageSize = "10";
}
if (pageNo == null) {// 为空时设置默认为第1页
pageNo = "1";
}
//System.out.println("pageNo="+pageNo+"pageSize="+pageSize);
// 保存分页参数,传递给下一个页面
request.setAttribute("pageSize", pageSize);
request.setAttribute("pageNo", pageNo);
//新建Dao对象,获取pageModel
RecommentDao client=new RecommentDao();
PageModel<Rec> pageModel=client.findData(pageNo,pageSize);
request.setAttribute("pageModel", pageModel);//前端获取这个值
request.getRequestDispatcher("../Result.jsp").forward(request, response);
}
}
6:index.jsp(程序入口,调到servlet层)

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<a href="/haha/servlet/recomment">查看所有推荐信息</a>
</body>
</html>
7:result.jsp(展示分页结果的页面)

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="java.util.*" %>
<%@ page import="com.common.page.*" %>
<%@ page import="javabean.*" %>
<%
String pageSize = (String) request.getAttribute("pageSize");
String pageNo = (String) request.getAttribute("pageNo");
PageModel<Rec> pageModel=(PageModel<Rec>) request.getAttribute("pageModel");
List<Rec> list=pageModel.getList();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!-- <script src="/haha/js/jquery.min.js" type="text/javascript"></script> -->
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<table align="center" >
<tr>
<td align="center" colspan="3">
<h2>所有信息</h2>
</td>
</tr>
<tr align="center">
<td><b>ID</b></td>
<td><b>推荐人</b></td>
<td><b>推荐号码</b></td>
</tr>
<%
if(list==null||list.size()<1){
%><p align="center">还没有任何数据!</p>
<%}else{
for(Rec rec:list){
%>
<tr>
<td><%=rec.getId() %></td>
<td><%=rec.getRec().substring(0, 3)+"****"+rec.getRec().substring(7, 11) %></td>
<td><%=rec.getReced() %></td>
</tr>
<%
}
}
%>
</table>
<form name="form1" action="/haha/servlet/recomment" method="post">
<TABLE border="0" width="100%" >
<TR>
<TD align="left"><a>每页条数</a>
<select name="pageSize"
onchange="document.all.pageNo.value='1';document.all.form1.submit();">
<option value="10" <%if(pageSize.equals("10")){%>
selected="selected" <%}%>>10</option>
<option value="20" <%if(pageSize.equals("20")){%>
selected="selected" <%}%>>20</option>
<option value="30" <%if(pageSize.equals("30")){%>
selected="selected" <%}%>>30</option>
</select></TD>
<TD align="right">
<a
href="javascript:document.all.pageNo.value='<%= pageModel.getTopPageNo() %>';document.all.form1.submit();">首页</a>
<a
href="javascript:document.all.pageNo.value='<%= pageModel.getPreviousPageNo() %>';document.all.form1.submit();">上一页</a>
<a
href="javascript:document.all.pageNo.value='<%= pageModel.getNextPageNo()%>';document.all.form1.submit();">下一页</a>
<a
href="javascript:document.all.pageNo.value='<%= pageModel.getBottomPageNo()%>';document.all.form1.submit();">尾页</a>
<a>第</a>
<select name="pageNo" onchange="document.all.form1.submit();">
<%
int pageCount = pageModel.getTotalPages();
%>
<%
for (int i = 1; i <= pageCount; i++) {
%>
<option value="<%=i%>" <%if(pageNo.equals(i+"")){%>
selected="selected" <%}%>><%=i%></option>
<%
}
%>
</select><a>页</a></TD>
</TR>
</TABLE>
</form>
</body>
</html>
8:配置web.xml(主要是针对servlet进行配置)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>haha</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>
<servlet-name>recomment</servlet-name>
<servlet-class>servlet.recomment</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>recomment</servlet-name>
<url-pattern>/servlet/recomment</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>720</session-timeout>
</session-config>
</web-app>
9:结果展示
运行index.jsp

单击:

来源:https://www.cnblogs.com/zhouerba/p/7793507.html
