jsp 分页操作的实现

来源:互联网 发布:单例模式 java enum 编辑:程序博客网 时间:2024/05/30 23:07


先写一个   page类  代码大致如下:

public class Page {private static int pageSize=5;private static int pageNow = 0;private static int pageCount = 0;private static int rowCount = 0;public static int getPageSize() {return pageSize;}public static void setPageSize(int pageSize) {Page.pageSize = pageSize;}public static int getPageNow() {return pageNow;}public static void setPageNow(int pageNow) {Page.pageNow = pageNow;}public static int getPageCount() {return pageCount;}public static void setPageCount(int pageCount) {Page.pageCount = pageCount;}public static int getRowCount() {return rowCount;}public static void setRowCount(int rowCount) {Page.rowCount = rowCount;}}
然后在写一个控制器即,写一个方法实现对数据的的分页操作;

import java.sql.*;import java.util.ArrayList;import com.mxf.dao.SQLUtil;import com.mxf.pageing.Page;import com.mxf.bean.*;public class StudentService {//分页public ArrayList<Student> getUsersByPage(int pageNow,int pageSize){ArrayList<Student> arrayList = new ArrayList<Student>();String sql = " SELECT * FROM  student ORDER BY id LIMIT "+(pageNow-1)*pageSize+","+pageSize+"";ResultSet rs=SQLUtil.executeQuery(sql, null);try {while(rs.next()){Student student = new Student();student.setId(rs.getInt("id"));student.setAddress(rs.getString("address"));student.setAge(rs.getInt("age"));student.setGrades(rs.getString("grades"));student.setResult(rs.getInt("result"));student.setSex(rs.getString("sex"));student.setStudentname(rs.getString("studentname"));arrayList.add(student);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{SQLUtil.close(SQLUtil.getConn(), SQLUtil.getPs(), rs);}return arrayList;}//得到   PageCountpublic int getPageCount(int pageSize){int rowCount = 0;String sql = "select count(*) from student";ResultSet rs = SQLUtil.executeQuery(sql, null);try {rs.next();rowCount= rs.getInt(1);} catch (SQLException e) {e.printStackTrace();}finally{SQLUtil.close(SQLUtil.getConn(), SQLUtil.getPs(), rs);}return (rowCount-1)/pageSize + 1;}public Student getStudentById(String id){Student student = new Student();String sql = "select * from student where id=?";String []parameters = {id};ResultSet rs = SQLUtil.executeQuery(sql, parameters);try {while(rs.next()){student.setId(rs.getInt("id"));student.setAddress(rs.getString("address"));student.setAge(rs.getInt("age"));student.setGrades(rs.getString("grades"));student.setResult(rs.getInt("result"));student.setSex(rs.getString("sex"));student.setStudentname(rs.getString("studentname"));}} catch (Exception e) {// TODO: handle exceptione.getStackTrace();}return student;}public boolean updateStudentById(Student student){boolean flage = false;String sql ="update student set studentname=?,sex=?,age=?,result=?,address=?,grades=? where id=?";String []parameters = {student.getStudentname(),student.getSex(),student.getAge()+"",student.getResult()+"",student.getAddress(),student.getGrades(),student.getId()+""};if(SQLUtil.executeUpdate2(sql, parameters)){flage = true;}return flage;}public boolean delStudentById(String id){boolean flage = false;String sql ="delete from student where id=?";String []parameters ={id};if(SQLUtil.executeUpdate2(sql, parameters)){flage=true;}return flage;}public Student selectStudentById(String id){String sql = "select * from student where id=?";String []parameters ={id};ResultSet rs = SQLUtil.executeQuery(sql, parameters);Student student = new Student();try {while(rs.next()){student.setAddress(rs.getString("address"));student.setAge(rs.getInt("age"));student.setGrades(rs.getString("grades"));student.setId(rs.getInt("id"));student.setResult(rs.getInt("result"));student.setSex(rs.getString("sex"));student.setStudentname(rs.getString("studentname"));}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return student;}public boolean addStudent(Student stu){boolean flage = false;String sql = "insert into student values (0,?,?,?,?,?,?)";String []parameters ={stu.getStudentname(),stu.getSex(),stu.getAge()+"",stu.getResult()+"",stu.getAddress(),stu.getGrades()};if(SQLUtil.executeUpdate2(sql, parameters)){flage=true;}return flage;}}
接下来就是在jsp页面显示了

<%@ page language="java" import="java.util.*,com.mxf.bean.*,com.mxf.service.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'ShowInfo.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>  <%int pageNow = 1;    //表示第几页int pageSize = 5;   //表示每页显示几行int pageCount = 0;   //表示共有多少页//接收超链接pageNow数据String spageNow = request.getParameter("pageNow");if(null!=spageNow){pageNow = Integer.parseInt(spageNow);}pageCount = new StudentService().getPageCount(pageSize);ArrayList<Student> arrayList = new StudentService().getUsersByPage(pageNow, pageSize);%>   <table border="1">   <tr><td>id</td><td>姓名</td><td>性别</td><td>年龄</td>   <td>成绩</td><td>地址</td><td>专业班级</td><td>修改信息</td>   <td>删除学生</td></tr><%for(int i=0;i<arrayList.size();i++){Student student = arrayList.get(i);%><tr><td><%=student.getId() %></td><td><%=student.getStudentname() %></td><td><%=student.getSex() %></td><td><%=student.getAge() %></td><td><%=student.getResult() %></td><td><%=student.getAddress() %></td><td><%=student.getGrades() %></td><td><a href="/studentManage/ShowInfoCl?type=goupdate&id=<%=student.getId() %>">修改信息</a></td><td><a href="/studentManage/ShowInfoCl?type=del&id=<%=student.getId() %>">删除学生</a></td></tr><%}   %>         </table>         <a href='/studentManage/ShowInfo.jsp?pageNow=<%=pageNow==1?pageNow:(pageNow-1) %>'>上一页</a>      <%   for(int i=1;i<=pageCount;i++){%><a href='/studentManage/ShowInfo.jsp?pageNow=<%=i%>'><%=i %></a><%}    %>        <a href='/studentManage/ShowInfo.jsp?pageNow=<%=pageNow==pageCount?pageNow:(pageNow+1) %>'>下一页</a>   <a href="/studentManage/Manage.jsp">返回主界面</a>  </body></html>
如此操作就可以实现简单的分页操作;

我在写分页操作的时候,遇到的难题有:

1.在写对数据库操作时候的 语句。这里需要注意的是,要计算出,共有多少条数据,能显示多少页,当前页面。

ArrayList<Student> arrayList = new ArrayList<Student>();String sql = " SELECT * FROM  student ORDER BY id LIMIT "+(pageNow-1)*pageSize+","+pageSize+"";ResultSet rs=SQLUtil.executeQuery(sql, null);try {while(rs.next()){Student student = new Student();student.setId(rs.getInt("id"));student.setAddress(rs.getString("address"));student.setAge(rs.getInt("age"));student.setGrades(rs.getString("grades"));student.setResult(rs.getInt("result"));student.setSex(rs.getString("sex"));student.setStudentname(rs.getString("studentname"));arrayList.add(student);}

当每次点击上一页 或者是下一页时候,要将当前页面的值传到操作中,这样才能实现分页。

0 0