分页

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>

 

粗略的实现分页    

posted @ 2014-09-14 16:30  诳想曲  阅读(154)  评论(0编辑  收藏  举报