• java动态新闻分页项目


    页面格式布局:

    示例代码:

    package com.exam.model;
    
    public class PageBean {
    	private int currentPage; //当前页
    	private int pageSize; //一页多少条
    	private int start; //起始页
    	public PageBean(int currentPage, int pageSize) {
    		super();
    		this.currentPage = currentPage;
    		this.pageSize = pageSize;
    	}
    	public int getCurrentPage() {
    		return currentPage;
    	}
    	public void setCurrentPage(int currentPage) {
    		this.currentPage = currentPage;
    	}
    	public int getPageSize() {
    		return pageSize;
    	}
    	public void setPageSize(int pageSize) {
    		this.pageSize = pageSize;
    	}
    	public int getStart() {
    		return (currentPage-1)*pageSize;
    	}	
    }
    

      

    package com.exam.web;
    
    import java.io.IOException;
    import java.sql.Connection;
    import java.util.ArrayList;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import com.exam.dao.NewsDao;
    import com.exam.model.News;
    import com.exam.model.PageBean;
    import com.exam.util.DbUtil;
    
    @WebServlet(name="NewsServlet",urlPatterns="/newsList")
    public class NewsServlet extends HttpServlet{
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    	NewsDao newsDao = new NewsDao();
    	DbUtil dbUtil = new DbUtil();
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		doPost(req, resp);
    	}
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		//System.out.println("hello world");
    		String currentPage = req.getParameter("page");
    		if(currentPage==null || currentPage.equals("")) {
    			currentPage = "1";
    		}
    		PageBean pageBean = new PageBean(Integer.parseInt(currentPage),3);
    		Connection conn = null;
    		try {
    			conn = dbUtil.getConn();
    			ArrayList<News> list = newsDao.newsList(conn,pageBean);
    			req.setAttribute("list", list);
    			int total = newsDao.newsCount(conn,pageBean);
    			int totalPage = 0;
    			if(total%pageBean.getPageSize()==0) {
    				totalPage = total/pageBean.getPageSize();
    			}else {
    				totalPage = total/pageBean.getPageSize() + 1;
    			}
    			req.setAttribute("currentPage",currentPage);
    			req.setAttribute("total", totalPage);
    			req.getRequestDispatcher("news_list.jsp").forward(req, resp);
    			//resp.sendRedirect("news_list.jsp");		
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally {
    			try {
    				dbUtil.closeConn(conn);
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    	/**
    	 * sendRedirect()是请求重定向,和超连接是一个意思,比如你在A页面中写一个request.setAtribute,sendRedirect到B页面,
    	 * 就是说服务器从A页面中给你一个response,然后你的浏览器再去request到B页面,由于有两次request和response,
    	 * 是不能在B页面取到request.setAtribute里的值,能从地址栏看到url的改变。
    	 * request.getRequestDispatcher().forward(request,response)是请求分发器,
    	 * 比如你在A页面中写一个request.setAtribute,request.getRequestDispatcher().forward(request,response)到B页面,
    	 * 那就是说服务器给你的response是B页面的,并且只有一次request和response,所以是能在B页面取到request.setAtribute里的值,
    	 * 地址栏的url仍然是A页面的。
    	 */
    }
    

      

    package com.exam.dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import com.exam.model.News;
    import com.exam.model.PageBean;
    import com.exam.util.DateUtil;
    public class NewsDao {	
    	public ArrayList<News> newsList(Connection conn,PageBean pageBean) throws Exception{
    		String sql = "select ids,title,memo,time,type from news limit ?,?";
    		PreparedStatement pst = conn.prepareStatement(sql); //准备执行sql语句
    		pst.setInt(1,pageBean.getStart());
    		pst.setInt(2,pageBean.getPageSize());
    		ResultSet rs = pst.executeQuery(); //执行sql语句
    		ArrayList<News> newsList = new ArrayList<>();
    		while(rs.next()) {
    			News news = new News();
    			news.setIds(rs.getInt("ids"));
    			news.setTitle(rs.getString("title"));
    			news.setMemo(rs.getString("memo"));
    			news.setTime(DateUtil.formatString(rs.getString("time"),"yyyy-MM-dd")); 
    			news.setType(rs.getString("type"));
    			newsList.add(news);
    		}
    		return newsList;
    	}
    	public int newsCount(Connection conn,PageBean pageBean) throws SQLException {
    		String sql = "select count(*) as total from news";
    		PreparedStatement pst = conn.prepareStatement(sql);
    		ResultSet rs = pst.executeQuery();
    		int i = 0;
    		if(rs.next()) {
    			i = rs.getInt("total");
    		}
    		return i;
    	}
    }
    

      

     news_list.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>  
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    <style type="text/css">
    	*{font-size:12px;}
    </style>
    </head>
    <body>
    <table>	
    	<c:forEach var="news" items="${list}">
    		<tr>	
    		  <td>
    			 <p>
    			    <span style="font-weight:bold">${news.title }</span> 
    			    - <fmt:formatDate value="${news.time }" pattern="yyyy-MM-dd"/>
    			 </p>
    			 <p>${fn:substring(news.memo,0,100) }</p>
    			 <p><a href="">详情</a></p>
                </td> </tr> </c:forEach> </table> <div> <a href="newsList?page=1" >首页</a> <a href="newsList?page=${currentPage-1<=0? 1:currentPage-1}">上一页</a> <a href="newsList?page=${currentPage+1> total? total:currentPage+1}">下一页</a> <a href="newsList?page=${total}">尾页</a> <select id="choose" onchange="func()"> <c:forEach varStatus="x" begin="1" end="${total}"> <option value="${x.count }" ${currentPage==x.count? "selected":""}>第${x.count}页</option> </c:forEach> </select> <span>当前是第${currentPage}页 —共${total }页</span> </div> </body> <script type="text/javascript"> function func(){ var chs = document.getElementById("choose"); //alert(chs.value); //验证 window.location.href="newsList?page="+chs.value; } </script> </html>

     

  • 相关阅读:
    CSU software 新手练习1 解题报告
    HDU 4067 Random Maze
    HDU 1853 Cyclic Tour
    Notepad++搭配MinGW编译运行C,C++程序
    ACM POJ3299-Humidex
    开始正常的做题了=。=
    写在杭电热身赛2之后
    大二了~
    Vim 学习笔记之cvim hot key
    The 10th Zhejiang Provincial Collegiate Programming Contest
  • 原文地址:https://www.cnblogs.com/lxy151/p/8466254.html
Copyright © 2020-2023  润新知