servlet分页代码示例_JSP编程

1.首先创建一个对象 UserData,用以保存从数据库中获取的数据。

复制代码 代码如下:

package com.tool;

import java.math.BigDecimal;
import java.util.Date;

/**
 * Created by lx_sunwei on 14-1-6.
 */
public class UserData {

    /**
     * EMP表中的数据属性
     */
    private String ename;
    private String job;
    private BigDecimal empno;
    private BigDecimal mgr;
    private Date hireDate;
    private BigDecimal sal;
    private BigDecimal comm;
    private BigDecimal deptno;

    public BigDecimal getEmpno() {
        return empno;
    }

    public void setEmpno(BigDecimal empno) {
        this.empno = empno;
    }

    public BigDecimal getMgr() {
        return mgr;
    }

    public void setMgr(BigDecimal mgr) {
        this.mgr = mgr;
    }

    public Date getHireDate() {
        return hireDate;
    }

    public void setHireDate(Date hireDate) {
        this.hireDate = hireDate;
    }

    public BigDecimal getSal() {
        return sal;
    }

    public void setSal(BigDecimal sal) {
        this.sal = sal;
    }

    public BigDecimal getComm() {
        return comm;
    }

    public void setComm(BigDecimal comm) {
        this.comm = comm;
    }

    public BigDecimal getDeptno() {
        return deptno;
    }

    public void setDeptno(BigDecimal deptno) {
        this.deptno = deptno;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }
}

2.创建一个 DBHelper 对象用以与数据库进行交互

复制代码 代码如下:

package com.dao;

import com.tool.UserData;

import java.math.BigDecimal;
import java.sql.*;
import java.util.*;
import java.util.Date;

/**
 * Created by lx_sunwei on 14-1-6.
 */
public class DBHelper {

    Connection conn;  //数据库连接对象
    PreparedStatement pt;  //SQL语句预处理对象
    ResultSet rs;  //结果集对象

    public  DBHelper(){
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");  //装载驱动
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取当前页的数据
     * @param curPage
     * @param rowsPerPage
     * @return
     */
    public List<UserData> getData(int curPage, int rowsPerPage) {

        List<UserData> dataList = new ArrayList<>();
        String url = "jdbc:oracle:thin:@localhost:1521:orcl";
        try {
            conn = DriverManager.getConnection(url,"scott","tiger");
            String sql = "select * from emp where rownum <= ((? - 1) * "+rowsPerPage+" + "+rowsPerPage+") minus " +
                    " select * from emp where rownum <= (? - 1) * "+rowsPerPage+" ";
            pt = conn.prepareStatement(sql);
            pt.setInt(1,curPage);
            pt.setInt(2,curPage);
            rs = pt.executeQuery();
            while (rs.next()){
                /**
                 * 从结果集中取得数据
                 */
                UserData userData = new UserData();
                BigDecimal empno = rs.getBigDecimal("empno");
                String ename = rs.getString("ename");
                String job = rs.getString("job");
                BigDecimal mgr = rs.getBigDecimal("mgr");
                Date hireDate = rs.getDate("hiredate");
                BigDecimal sal = rs.getBigDecimal("sal");
                BigDecimal comm = rs.getBigDecimal("comm");
                BigDecimal deptno = rs.getBigDecimal("deptno");
                /**
                 * 设置对象属性
                 */
                userData.setEmpno(empno);
                userData.setEname(ename);
                userData.setJob(job);
                userData.setMgr(mgr);
                userData.setHireDate(hireDate);
                userData.setSal(sal);
                userData.setComm(comm);
                userData.setDeptno(deptno);
                dataList.add(userData);  //把对象添加集合中
            }
            rs.close();
            pt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return dataList;
    }

    /**
     * 返回总页数
     * @return
     */
    public int getMaxPage(int rowsPerPage) {
        int maxPage;
        int maxRowCount = 0;
        String url = "jdbc:oracle:thin:@localhost:1521:orcl";
        try {
            conn = DriverManager.getConnection(url,"scott","tiger");  //创建数据库连接
            String sql = "select count(*) from emp";
            pt = conn.prepareStatement(sql);
            rs = pt.executeQuery();
            if (rs.next()){
                maxRowCount = rs.getInt(1);  //总行数
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        maxPage = (maxRowCount + rowsPerPage - 1) / rowsPerPage;  //总页数
        return maxPage;
    }
}

3.创建 Servlet 对显示页面进行控制

复制代码 代码如下:

package com.servlet;

import com.dao.DBHelper;
import com.tool.UserData;

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

/**
 * Created by lx_sunwei on 14-1-6.
 */
public class Servlet extends HttpServlet {

    public int rowsPerPage;  //每页显示的行数
    public int curPage;  //当前页页码
    public int maxPage;  //总共页数
    DBHelper db = new DBHelper();
    public Servlet(){
        rowsPerPage = 5;
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String curPage1 = request.getParameter("page");  //获取当前页页码
        if (curPage1 == null){
            curPage = 1;
            request.setAttribute("curPage",curPage);  //设置curPage对象
        }else {
            curPage = Integer.parseInt(curPage1);
            if (curPage < 1){
                curPage = 1;
            }
            request.setAttribute("curPage",curPage);
        }

        List<UserData> dataList;
        dataList = db.getData(curPage,rowsPerPage);  //获取当前页的数据
        maxPage = db.getMaxPage(rowsPerPage);  //获取总页数
        request.setAttribute("dataList",dataList);
        request.setAttribute("maxPage", maxPage);

        RequestDispatcher rd = request.getRequestDispatcher("pagemain.jsp");  //将请求转发到pagemain.jsp页面
        rd.forward(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

4.创建 JSP 页面,显示数据。

复制代码 代码如下:

<%@ page import="java.util.List" %>
<%@ page import="com.tool.UserData" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>servlet数据分页</title>
    <link rel="stylesheet" type="text/css" href="css.css">
</head>
<body>
<div style="margin-top: 15%; margin-left: 25%">
    <table>
        <caption>SCOTT用户,EMP表中的数据</caption>
        <%! int curPage,maxPage; %>
        <% curPage =Integer.parseInt(request.getAttribute("curPage").toString()); %> <!--取得当前页-->
        <% maxPage =Integer.parseInt((String)request.getAttribute("maxPage").toString()); %> <!--取得总页数-->
        <%if (request.getAttribute("dataList") == null){
        %>
        <tr>
            <td colspan="8">没有数据</td>
        </tr>
        <%
        }else {
        %>
        <tr>
            <!--表头-->
            <th>EMPNO</th>
            <th>ENAME</th>
            <th>JOB</th>
            <th>MGR</th>
            <th>HIREDATE</th>
            <th>SAL</th>
            <th>COMM</th>
            <th>DEPTNO</th>
        </tr>
        <%
            List list = (List) request.getAttribute("dataList");
            for (Object aList : list) {
                UserData userData = (UserData) aList;
        %>
        <tr>
            <!--取得表中数据-->
            <td><%= userData.getEmpno() %></td>
            <td><%= userData.getEname() %></td>
            <td><%= userData.getJob() %></td>
            <td><%= userData.getMgr() %></td>
            <td><%= userData.getHireDate() %></td>
            <td><%= userData.getSal() %></td>
            <td><%= userData.getComm() %></td>
            <td><%= userData.getDeptno() %></td>
        </tr>
        <%
                }
            }
        %>
    </table>
</div>
<div style="margin-top: 8%; margin-left: 29%">
    第<%= curPage %>页,共<%= maxPage %>页  
    <%if (curPage > 1){
    %>
    <a href="Servlet?page=1">首页</a>
    <a href="Servlet?page=<%=curPage - 1%>">上一页</a>
    <%
    }else {
    %>
    首页 上一页
    <%
        }%>
    <%if (curPage < maxPage){
    %>  
    <a href="Servlet?page=<%=curPage + 1%>">下一页</a>
    <a href="Servlet?page=<%=maxPage %>">尾页</a>
    <%
    }else {
    %>
    下一页 尾页
    <%
        }%>
      转至第 <form name="form1" action="Servlet" method="get">
    <label>
        <select name="page" onchange="document.form1.submit()">
            <%for ( int i = 1; i <= maxPage; i++){
                if (i == curPage){
            %>
            <!--当前页页码默认选中-->
            <option selected value="<%= i%>"><%= i %></option>
            <%
            }else {
            %>
            <option value="<%= i %>"><%= i %></option>
            <%
                    }
                }%>
        </select>
    </label>
</form> 页
</div>
</body>
</html>

web.xml 中的配置文件为:

复制代码 代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
           version="3.0">

    <servlet>
        <servlet-name>Servlet</servlet-name>
        <servlet-class>com.servlet.Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Servlet</servlet-name>
        <url-pattern>/Servlet</url-pattern>
    </servlet-mapping>

</web-app>

把项目部署到 Tomcat 服务器上,输入地址:http://localhost:8080/Servlet   这样就可以看到效果

时间: 2024-10-17 20:19:19

servlet分页代码示例_JSP编程的相关文章

servlet分页代码示例

 本文介绍了servlet分页代码实现,采用Oracle数据库,获取SCOTT用户EMP表中的数据,分页实现步骤看下面代码 1.首先创建一个对象 UserData,用以保存从数据库中获取的数据.    代码如下: package com.tool;   import java.math.BigDecimal; import java.util.Date;   /**  * Created by lx_sunwei on 14-1-6.  */ public class UserData {  

java servlet过滤器使用示例_JSP编程

Servlet过滤器简介      Servlet过滤器实际上就是一个标准的java类,这个类通过实现Filter接口获得过滤器的功能.它在jsp容器启动的时候通过web.xml配置文件被系统加载.Servlet过滤器在接收到用户请求的时候被调用,当服务器接收到用户的请求的时候,依次调用配置好的过滤器,完成后将执行请求所要求的servlet,而servlet执行后的响应,则先通过配置好的过滤器后再发送给用户. 过滤器的用途:1.用户认证和授权管理.2.统计web应用的访问量和访问命中率,生成访问

jsp servlet javaBean后台分页实例代码解析_JSP编程

首先后台分页需要理清分页思路,把数据库里面需要分页的信息放到List集合中,然后按照页面反馈给后台的页码对List集合进行SubList切割把切完的List传到前端进行显示. 1.分页的demo文件结构图 导入的包 2.代码 SplitPageServlet代码 package ActionServlet; import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; import ja

struts2入门Demo示例_JSP编程

本文讲述了struts2入门Demo示例.分享给大家供大家参考.具体如下: 1.新建Web Project, 名称:struts2Demo; 2.建立一个用户库struts2, 包含最少的struts2的最少的6个jar文件; 其实呢, 对于MyEclipse8以上来说, 是不必须的, 因为它直接支持struts2了.不需要另外导包. 3.用Build Path将struts2的库加进来; 4.在web.xml中加入以下配置: <?xml version="1.0" encodi

简单的手工hibernate程序示例_JSP编程

本文讲述了简单的手工hibernate程序示例.分享给大家供大家参考.具体如下: 今天学习了下hibernate,写了个小的手工程序,总结下, 首先创建数据库表: 复制代码 代码如下: create table increment_testr(id bigint not null, name char(10), primary key(id)); eclipse下,新建工程. 新建数据库表的映射,这里使用手工方式完成: IncrementTester.java public class Incr

一、Servlet和JSP概述_JSP编程

1.1 Java Servlet及其特点 Servlet是Java技术对CGI编程的回答.Servlet程序在服务器端运行,动态地生成Web页面.与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资(更重要的是, Servlet程序员收入要比Perl程序员高:-): 高效. 在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间.而在S

JSP与Servlet的介绍说明_JSP编程

什么是Servlet和JSP 用Java开发Web应用程序时用到的技术主要有两种,即Servlet和JSP. Servlet是在服务器端执行的Java程序,一个被称为Servlet容器的程序(其实就是服务器) 负责执行Java程序.而JSP(Java Server Page)则是一个页面, 由JSP容器负责执行. Servlet和JSP两者最大的区别就是,Servlet以Java程序为主, 输出HTML代码时需要使用out.println函数,也就是说Java中内嵌HTML: 而JSP则以HTM

JSP实现的简单分页示例_JSP编程

本文实例讲述了JSP实现的简单分页示例.分享给大家供大家参考,具体如下: <%@ page language="java" import="java.util.*" contentType="text/html; charset=gbk"%> <%@ page import="com.yx.page.db.*"%> <%@ page import="java.sql.*" %&

jsp引用servlet生成的验证码代码演示_JSP编程

此演示代码主要包括以下三部分:1.checkCode.java:用于生成验证码2.checkCodeServler3.check.jsp 验证 下面是checkCode.java的内容: 复制代码 代码如下: //用于获取四位随机数     private char mapTable[] = {'0','1','2','3','4','5','6','7','8','9'};      //生成验证码,并返回随机生成的数字     public String getEnsure(int widt