servlet+jdbc+sql分页

NewsServlet.java

package com.zucc.servlet;


import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zucc.model.News;
import com.zucc.service.NewsService;
import com.zucc.service.ThemeService;
import com.zucc.util.PageUtil;

public class NewsServlet extends HttpServlet{
	
	News news = new News();
	ThemeService themeService = new ThemeService();
	NewsService newsService = new NewsService();
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		//获得页面传递过来的当前页数,如果为空值,则赋值为1;不为空,赋值为传递的值
			int pageNum = req.getParameter("pageNum")!=null ? Integer.parseInt(req.getParameter("pageNum")) : 1;
			int listSum = newsService.listSum();//获取新闻总数
			int pageSum = PageUtil.getPageSum(listSum);//获取页面总数
			req.setAttribute("pageSum", pageSum);
			req.setAttribute("pageNum", pageNum);
			req.setAttribute("newsList",newsService.getNewsList(pageNum));
			req.getRequestDispatcher("newsList.jsp").forward(req, resp);


	}


	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doGet(req, resp);
	}

}

NewsService.java

package com.zucc.service;

import java.util.List;

import com.zucc.dao.NewsDao;
import com.zucc.model.News;

public class NewsService {

	NewsDao newsDao = new NewsDao();

	public List<News> getNewsList(int pageNum){
		return newsDao.newsList(pageNum);
	}
	
	public int listSum(){
		return newsDao.listCount();
	}
}

NewsDao.java

package com.zucc.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.zucc.model.News;
import com.zucc.util.PageUtil;

public class NewsDao {

	private PreparedStatement prst;
	private ResultSet rs;
	private Connection conn;

	public NewsDao() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	public void myClose() {
		try {
			if (prst != null) {
				prst.close();
			}
			if (conn != null) {
				conn.close();
			}
			if (rs != null) {
				rs.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/*
	 * 使用limit对新闻list进行拆分
	 */
	publ
	public List<News> newsList(int pageNum){
		List<News> newsList = new ArrayList<News>();
		try {
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/news?characterEncoding=utf8", "root", "123456");
			String sql = "select * from news limit ?,?";
			prst = conn.prepareStatement(sql);
			prst.setInt(1, (pageNum-1)*PageUtil.listNum);
			prst.setInt(2, PageUtil.listNum);
			rs = prst.executeQuery();
			while(rs.next()){
				News news = new News();
				news.setAuthor(rs.getString("author"));
				news.setContent(rs.getString("content"));
				news.setId(rs.getInt("id"));
				news.setTheme_id(rs.getInt("theme_id"));
				news.setTime(rs.getDate("time"));
				news.setTitle(rs.getString("title"));
				
				newsList.add(news);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		finally{
			myClose();
		}
		return newsList;
	}

	/*
	 * 计算新闻总数
	 */
	public int listCount(){
		int listSum = 0;
		try {
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/news?characterEncoding=utf8", "root", "123456");
			String sql = "select count(*) from news";
			prst = conn.prepareStatement(sql);
			rs = prst.executeQuery();
			while(rs.next()){
				listSum = rs.getInt(1);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		finally{
			myClose();
		}
		return listSum;
	}
}

PageUtil.java

package com.zucc.util;

public class PageUtil {

	public final static int listNum = 2; //每页显示的数量
	
	/*
	 * 计算总页数
	 */
	public static int getPageSum(int listSum){
		if(listSum%listNum==0){
			return listSum/listNum;
		}
		return listSum/listNum+1;
	}
}

newsList.jsp

<%@page import="com.zucc.model.Theme"%>
<%@page import="com.zucc.model.News"%>
<%@page import="java.util.List"%>
<%@ 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">
    <%
    	List<News> list = (List<News>)request.getAttribute("newsList");
    	int pageSum = (Integer)request.getAttribute("pageSum");
    	int pageNum = (Integer)request.getAttribute("pageNum");
    %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>编辑新闻--管理后台</title>
<link href="css/admin.css" rel="stylesheet" type="text/css" />
</head>
<body>
<%@ include file="util/top.jsp" %>
<div id="main">
 <%@ include file="util/left.jsp" %>
  <div id="opt_area">
		<%
			for(int i=0;i<list.size();i++){
				News news = list.get(i);
		%>
		<ul class="classlist">
		 <li><%=news.getTitle()%><span> 作者:
        <%=news.getAuthor()%>                                             
             <a href='newsUpdate.do?f=toUpdate&id=<%=news.getId()%>'>修改</a>      <a href='newsList.do?f=delete&id=<%=news.getId()%>'>删除</a> </span> </li>
		<% 
			}
		%>
		</ul>
	<li class='space'></li>
      <p align="right"> 
      	<%
      		if(pageNum>1){
      	%>
      	<a href="newsList.do?f=list&pageNum=1">首页</a>
      	<a href="newsList.do?f=list&pageNum=<%=pageNum-1%>">上一页</a> 
       	<%
      		}
       	%>
      	当前页数:[<%=pageNum%>/<%=pageSum%>] 
      	<%
      		if(pageNum<pageSum){
      	%>
       	<a href="newsList.do?f=list&pageNum=<%=pageNum+1%>">下一页</a> 
       	<a href="newsList.do?f=list&pageNum=<%=pageSum%>">末页</a> </p>
       	<%
      		}
       	%>
    </div>
</div>
<%@include file="util/botton.jsp" %>
</body>
<ml>









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值