jsp的分页的例子

来源:互联网 发布:windows编程视频在线 编辑:程序博客网 时间:2024/05/21 06:30

//index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<jsp:forward page="/emp.do?p=fenye&page=1"></jsp:forward>

 

//servlet

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dao.EmpDAO;

public class EmpServlet extends HttpServlet {
 
 EmpDAO empDAO = new EmpDAO();

 @Override
 public void service(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
  response.setContentType("text/html;charset=utf-8");
  PrintWriter out = response.getWriter();
  
  String p = request.getParameter("p");
  if ("fenye".equals(p)){
   doFenye(request, response);
  }
  
 }

 
 public void doFenye(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
     //当前页
           String pageString = request.getParameter("page");
           int page = 1;
           if (pageString!=null && pageString.length()>0){
             page = Integer.parseInt(pageString);
           }
          
           //每页3条
           int size = 3;
          
           //分页
           Map map = empDAO.fenye(page, size);
           request.setAttribute("map",map);
           request.getRequestDispatcher("/show.jsp").forward(request, response);
  
 }

}

//这是dao层

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import com.db.DbUtil;
import com.entity.Emp;

public class EmpDAO {
 private  DbUtil dbUtil = new DbUtil();
 //员工分页
 public Map fenye(int page,int size)
 {
  
  
  //总条数
  String sqlCount= "select ss=count(*) from emp";
  ResultSet rs = dbUtil.getRs(sqlCount);
  int sum = 0;
  List list = null;
  int count = 0;
  try {
   rs.next();
   sum = rs.getInt("ss");
   //总页数
    count = sum%size==0 ? sum/size : sum/size+1;
   //越界检查
   if (page<1) page =1;
   if (page>count) page = count;
   //查
   //拼sql
   String sql = "select top %d * from emp where empid not in (select top %d empid from emp)";
   sql = String.format(sql, size,(page-1)*size);
   ResultSet rs2 = dbUtil.getRs(sql);
   list = new ArrayList();
   while (rs2.next()){
    Emp e = new Emp();
    e.setEmpid(rs2.getInt("empid"));
    e.setEmpname(rs2.getString("empname"));
    e.setEmpsex(rs2.getInt("empsex"));
    list.add(e);
   }
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  //把所有结果保存到map
  Map map = new HashMap();
  map.put("size", size); //每页大小
  map.put("sum", sum);//总条数
  map.put("page", page);//当前页
  map.put("list", list); //分页内容
  map.put("count", count);//总页数
  
  return map;
  
  
  
  
 }
    public static void main(String[] args) {
        Map map = new EmpDAO().fenye(5, 3);
        System.out.println("总条数:"+map.get("sum"));
        System.out.println("总页数:"+map.get("count"));
        System.out.println("当前页:"+map.get("page"));
        List<Emp> list = (List<Emp>) map.get("list");
        for (Emp emp : list) {
   System.out.println(emp.getEmpid());
  }      
 }
}

//这是show.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<table border="1" align="center" width="80%">
  <tr>
    <th>编号</th>
    <th>姓名</th>
    <th>性别</th>
  </tr>
 
  <c:forEach items="${map.list}" var="e">
   <tr align="center">
     <td>${e.empid}</td>
     <td>${e.empname}</td>
     <td>${e.empsex==1?"男":"女" }</td>
   </tr>
  </c:forEach>
</table>
<form action="${pageContext.request.contextPath}/emp.do?p=fenye" method="post" onsubmit="return check()">

当前${map.page}/${map.count}页
<c:if test="${map.page!=1}">
<a href="${pageContext.request.contextPath}/emp.do?p=fenye&page=1">【首  页】</a>
<a href="${pageContext.request.contextPath}/emp.do?p=fenye&page=${map.page-1}">【上一页】</a>
</c:if>

<c:if test="${map.page!=map.count}">
<a href="${pageContext.request.contextPath}/emp.do?p=fenye&page=${map.page+1}">【下一页】</a>
<a href="${pageContext.request.contextPath}/emp.do?p=fenye&page=${map.count}">【末  页】</a>
</c:if>

   转<input type=text name=page size=1 value="${map.page}">
     <input type=submit value="go">
</form>


<script>
  function check()
  {
    var page = document.getElementsByName("page")[0].value;
    if (isNaN(page))
    {
      alert('只能输入数字');
      return false;
    }
   
    if (page<1 || page>${map.count})
    {
      alert('只能输入1-${map.count}');
      return false;
    }
    return true;
   
  }
</script>

原创粉丝点击