问题遇到的现象和发生背景
做JSP分页遇到问题,
第一,页面不刷新一直停留在第一页
问题相关代码
分页模型
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;
}
}
数据库表,对应实体类
public class Article {
private int id;
private String title;
private String author;
private String article_content;
private Date date;
//get and set
}
业务逻辑层,操作数据库等操作
public class ArticleDao {
public PageModel<Article> findData(String pageNo,String pageSize){
PageModel<Article> pageModel=null;
DatabaseUtil databaseUtil = new DatabaseUtil();
List<Article> list = new ArrayList<Article>();
Connection conn = databaseUtil.openConnection();
String sql1="select * from t_article limit ?,?";
String sql2="select count(*) from t_article";
PreparedStatement pstmt=null;
ResultSet rs1=null;
ResultSet rs2=null;
Article article = null;
try {
pstmt = conn.prepareStatement(sql1);
pstmt.setInt(1, (Integer.parseInt(pageNo)-1)*Integer.parseInt(pageSize));
pstmt.setInt(2, Integer.parseInt(pageSize));
rs1 = pstmt.executeQuery();
while(rs1.next()) {
article = new Article();
article.setId(rs1.getInt("id"));
article.setTitle(rs1.getString("title"));
article.setAuthor(rs1.getString("author"));
article.setArticle_content(rs1.getString("article_content"));
article.setDate(rs1.getDate("date"));
list.add(article);
}
rs2 = pstmt.executeQuery(sql2);
int total=0;
if(rs2.next()){
total=rs2.getInt(1);//总的数据条数
}
pageModel=new PageModel<Article>();
pageModel.setPageNo(Integer.parseInt(pageNo));
pageModel.setPageSize(Integer.parseInt(pageSize));
pageModel.setTotalRecords(total);
pageModel.setList(list);
} catch (SQLException e) {
e.printStackTrace();
}finally {
databaseUtil.closeConnection(conn);
databaseUtil.closePreparedStatement(pstmt);
databaseUtil.closeResultSet(rs1);
databaseUtil.closeResultSet(rs2);
}
return pageModel;
}
}
index.jsp 页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.util.List"%>
<%@page import="com.chz.page.*"%>
<%
String pageSize = (String) request.getAttribute("pageSize");
String pageNo = (String) request.getAttribute("pageNo");
if(pageSize == null){
//每页条数
pageSize = "20";
}
if(pageNo == null){
//当前页数
pageNo = "1";
}
request.setAttribute("pageSize", pageSize);
request.setAttribute("pageNo", pageNo);
ArticleDao articleDao = new ArticleDao();
PageModel<Article> pageModel = articleDao.findData(pageNo, pageSize);
List<Article> list = pageModel.getList();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<table border="4" align="center" >
<tr>
<td align="center" colspan="4">文章信息</td>
</tr>
<tr>
<td>编号</td>
<td>作者</td>
<td>时间</td>
</tr>
<%
if(list==null||list.size()<1){
%>
<p align="center">还没有任何数据!</p>
<%
}else{
for(Iterator<Article> it = list.iterator();it.hasNext();){
Article article = it.next();
%>
<tr>
<td><%=article.getId() %></td>
<td><%=article.getAuthor() %></td>
<td><%=article.getDate() %></td>
</tr>
<%
}
}
%>
<tr>
<td align="center" colspan="4">
<a href="index.jsp?pageNo=<%=pageModel.getTopPageNo()%>&pageSize=<%=pageSize%>">首页</a>
<a href="index.jsp?pageNo=<%=pageModel.getPreviousPageNo()%>&pageSize=<%=pageSize%>">上一页</a>
<a href="index.jsp?pageNo=<%=pageModel.getNextPageNo()%>&pageSize=<%=pageSize%>">下一页</a>
<a href="index.jsp?pageNo=<%=pageModel.getBottomPageNo()%>&pageSize=<%=pageSize%>">尾页</a>
</td>
</tr>
</table>
</body>
</html>
运行结果及报错内容
我想要达到的结果
想要达到分页的效果