分页
public class Page {
private int everyPage;//每页显示的记录数
private int totalCount;//总记录数
private int totalPage;//总页数
private int nowPage;//当前页
private int beginIndex;//查询起始点
private boolean hasPrePage;//是否有上一页
private boolean hasNextPage;//是否有下一页
public Page(int everyPage, int totalCount, int totalPage, int nowPage,
int beginIndex, boolean hasPrePage, boolean hasNextPage) {
super();
this.everyPage = everyPage;
this.totalCount = totalCount;
this.totalPage = totalPage;
this.nowPage = nowPage;
this.beginIndex = beginIndex;
this.hasPrePage = hasPrePage;
this.hasNextPage = hasNextPage;
}
public Page(){};//默认构造
get..set方法
}
定义工具PageUtil类
public class pageUtil {
public static Page createPage(int everyPage,int totalCount,int nowPage)
{
everyPage=geteveryPage(everyPage);
nowPage=getnowPage(nowPage);
int totalPage=gettotalPage(totalCount, everyPage);
int beginIndex=getBeginIndex(everyPage, nowPage);
boolean hasPrePage=gethasPrePage(nowPage);
boolean hasNextPage=gethasNextPage(nowPage, totalPage);
return new Page(everyPage, totalCount, totalPage, nowPage, beginIndex, hasPrePage, hasNextPage);
}
public static int geteveryPage(int everyPage)
{
return everyPage==0?10:everyPage; //获取每页显示的记录数
}
public static int gettotalPage(int totalCount,int everyPage)
{
int totalPage=0;
if(totalCount!=0&&totalCount%everyPage==0)totalPage= totalCount/everyPage;//获取总页数
if(totalCount!=0&&totalCount%everyPage!=0)totalPage= totalCount/everyPage+1;
return totalPage;
}
public static int getnowPage(int nowPage)
{
return nowPage==0?1:nowPage;
}
public static int getBeginIndex(int everyPage,int nowPage)
{
return everyPage*(nowPage-1); //获取起始位置
}
public static boolean gethasPrePage(int nowPage)
{
return nowPage==1?false:true;
}
public static boolean gethasNextPage(int nowPage,int totalPage)
{
return nowPage==totalPage||totalPage==0?false:true;
}
}
DAO层 查找总记录条数方法 和查询所有记录
public List<Message> findAllMsg(Page page) {
Connection conn= DBConnection.getConnection();
String findAllMsgSQL="select * from tb_message order by publishTime desc limit ?, ?";
PreparedStatement pst = null;
ResultSet rs = null;
List <Message> list =new ArrayList<Message>();
try {
pst=conn.prepareStatement(findAllMsgSQL);
pst.setInt(1, page.getBeginIndex());
pst.setInt(2, page.getEveryPage());
rs=pst.executeQuery();
while(rs.next())
{
Message message =new Message();
message.setMessageID(rs.getInt(1));
message.setMessageTitle(rs.getString(2));
message.setMessageContent(rs.getString(3));
message.setEmployeeID(rs.getInt(4));
message.setPublishTime(rs.getDate(5));
list.add(message);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
DBConnection.close(rs);
DBConnection.close(pst);
DBConnection.close(conn);
}
return list;
}
public int findMsgCount() {
Connection conn= DBConnection.getConnection();
PreparedStatement pst =null;
ResultSet rs = null;
int count = 0;
String saveMsgSQL="select count(*) from tb_message";
try {
pst=conn.prepareStatement(saveMsgSQL);
rs=pst.executeQuery();
if(rs.next())
{
count=rs.getInt(1);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return count;
}
servlet action
public class FindAllMsg extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
int nowpage=0;
String nowpageStr= request.getParameter("nowpage");//获取当前页
if(nowpageStr==null||"".equals(nowpageStr))
{
nowpage=1;
}
else
{
nowpage=Integer.parseInt(nowpageStr);
}
IMessageDao MessageDaoImpl= MessageDaoFactory.getMessageDaoInstance();
Page page=pageUtil.createPage(5, MessageDaoImpl.findMsgCount(), nowpage);
List<Message> list= MessageDaoImpl.findAllMsg(page);
request.setAttribute("msgList", list);
request.setAttribute("page", page);
ServletContext servletContext =getServletContext();
RequestDispatcher dispatcher = servletContext.getRequestDispatcher("/msgList.jsp");
dispatcher.forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
public class GetMessage extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int messageId=Integer.parseInt(request.getParameter("messageID"));
IMessageDao messageDao = MessageDaoFactory.getMessageDaoInstance();
Message onemessage = messageDao.findById(messageId);
request.setAttribute("onemessage", onemessage);
ServletContext servletContext =getServletContext();
RequestDispatcher dispatcher =servletContext.getRequestDispatcher("/showMsg.jsp");
dispatcher.forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
jsp 页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>消息列表</title>
</head>
<body>
<c:forEach var="msg" items="${requestScope.msgList}" >
<dt> <a href="GetMessage?messageID=${msg.messageID}" >
${msg.messageTitle }
</a></dt>
<dd>
<div align="center" >
发布人ID :${msg.employeeID}
发布时间 :${msg.publishTime }
</div>
</dd>
</c:forEach>
<div align="center">
<c:choose>
<c:when test="${page.hasPrePage}">
<a href="FindAllMsg?nowpage=${page.nowPage - page.nowPage+1 }">首页</a>丨
<a href="FindAllMsg?nowpage=${page.nowPage-1 }">上一页</a>丨
<a>当前为第${page.nowPage }页</a>丨
</c:when>
<c:otherwise>
首页 丨上一页 丨当前为第${page.nowPage }页丨
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${page.hasNextPage}">
<a href="FindAllMsg?nowpage=${page.nowPage+1} ">下一页</a>丨
<a href="FindAllMsg?nowpage=${page.totalPage} " > 尾页</a>
</c:when>
<c:otherwise>
下一页丨 尾页
</c:otherwise>
</c:choose>
丨 共${page.totalPage}页 丨
</div>
</body>
</html>
粗略的实现分页
浙公网安备 33010602011771号