jsp+servlet 分页笔记

本文深入探讨了jsp页面分页导航条的实现原理与dao实现层使用limit语句进行数据库分页的方法,并通过servlet层获取、处理分页数据,最后展示在JSP页面上的具体步骤与代码实例。

jsp页面分页导航条

<form action="NewsListServlet" method="get" id="navigatorForm"
			class="form">
			<a href="NewsListServlet?pageNumber=1">首页</a>
			<c:if test="${pageNumber>1}">
				<a href="NewsListServlet?pageNumber=${pageNumber-1}">上一页</a>
			</c:if>
			跳转到第 <select name="pageNumber" onchange="gotoSelectedPage();">
				<c:forEach begin="1" end="${totalPages}" step="1" var="pageIndex">
					<c:choose>
						<c:when test="${pageIndex eq pageNumber}">
							<option value="${pageIndex}" selected="selected">${pageIndex}</option>
						</c:when>
						<c:otherwise>
							<option value="${pageIndex}">${pageIndex}</option>
						</c:otherwise>
					</c:choose>
				</c:forEach>
			</select>页
			<c:if test="${pageNumber<totalPages}">
				<a href="NewsListServlet?pageNumber=${pageNumber+1}">下一页</a>
			</c:if>
			<a href="NewsListServlet?pageNumber=${totalPages}">末页</a>
		</form>
<script type="text/javascript">
	function gotoSelectedPage() {
		var x = document.getElementById("navigatorForm");
		//alert("Original action: " + x.action)  
		x.submit();
	}
</script>

dao实现层(这是使用的是limit语句)

public List<News> getAllListByPage(int pageNumber, int pageSize){
		List<News> list = new ArrayList<News>(); 
		try {
			con = DB.getConnection();
			ps = con.prepareStatement("select * from news order by date desc limit "+pageNumber+","+pageSize);
			rs = ps.executeQuery();
			while(rs.next()){
				News n = new News();
				n.setId(rs.getInt("id"));
				n.setTitle(rs.getString("title"));
				n.setContent(rs.getString("content"));
				n.setType(rs.getInt("type"));
				n.setAuthor(rs.getString("author"));
				n.setDate(rs.getDate("date"));
				list.add(n);
			}
			con.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}

servlet层

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置字符集
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		NewsDao nd = new NewsDao();
		
		String pageNumberStr = request.getParameter("pageNumber");   
		int pageNumber = 1;   //当前页 
	    if(pageNumberStr!=null && !pageNumberStr.isEmpty())   
	    {   
	        pageNumber = Integer.parseInt(pageNumberStr);   
	    }  
	    
		int pageSize = 10; //分页大小
		int totalPosts = nd.getAllList().size(); //总文章数
		int totalPages = totalPosts/pageSize + ((totalPosts%pageSize)>0?1:0); //计算得出的总页数
		
		List<News> list = nd.getAllListByPage((pageNumber-1)*pageSize, pageSize);
		
		request.setAttribute("pageSize", pageSize);   
	    request.setAttribute("totalPosts", totalPosts);   
	    request.setAttribute("pageNumber", pageNumber);   
	    request.setAttribute("totalPages", totalPages);
	    
		if(list.size()>0){
			request.setAttribute("allNewsList", list);
			request.getRequestDispatcher("/admin/news/allList.jsp").forward(request, response);
		}else {
			out.println("暂时没有数据!");
		}
	}


转载于:https://my.oschina.net/zhengweishan/blog/335514

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值