分页工具类
package com.nanjing.page;
import javax.servlet.http.HttpServletRequest;
public class PageUtils {
//总共记录数
private int totalResult;
//总共页数
private int totalPage;
//当前页数
private int currentPage=1;
//每页显示的记录数
private int pageSize=2;
private HttpServletRequest request;
//当前页的第一条记录
private int fisrtIndex;
//当前页的最后一天记录
private int lastIndex;
public PageUtils() {
}
public void init(){
setTotalPage();
setCurrentPage();
if(request.getParameter("page")==null){
request.setAttribute("currentPage",1);
}else{
request.setAttribute("currentPage",request.getParameter("page"));
currentPage=Integer.parseInt(request.getParameter("page"));
}
setFisrtIndex();
setLastIndex();
request.setAttribute("totalPage", totalPage);
request.setAttribute("pageTargetURL", request.getRequestURL());
}
public int getTotalResult() {
return totalResult;
}
public void setTotalResult(int totalResult) {
this.totalResult = totalResult;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage() {
if(totalResult<=pageSize){
totalResult=1;
}else{
if(totalResult%pageSize>0){
this.totalPage = totalResult/pageSize+1;
}else{
this.totalPage = totalResult/pageSize;
}
}
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage() {
if(request.getParameter("currentPage")==null){
currentPage=1;
}else{
this.currentPage = Integer.parseInt(request.getParameter("currentPage"));
}
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public int getFisrtIndex() {
return fisrtIndex;
}
public void setFisrtIndex() {
if(currentPage==1){
this.fisrtIndex=0;
}else{
this.fisrtIndex=(currentPage-1)*pageSize;
}
}
public int getLastIndex() {
return lastIndex;
}
public void setLastIndex() {
this.lastIndex = currentPage*pageSize;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
}
实体类
package com.nanjing.page;
public class User {
private int user_id;
private String username;
private String password;
private String sex;
public int getUser_id() {
return user_id;
}
public void setUser_id(int userId) {
user_id = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User [password=" + password + ", sex=" + sex + ", user_id="
+ user_id + ", username=" + username + "]";
}
}
dao
package com.nanjing.page;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class Userdao {
private final String oracleRownum="SELECT a.* FROM (SELECT B.*, ROWNUM R FROM ( #sql WHERE ROWNUM <= #lastIndex) B ) a WHERE a.R > #firstIndex";
public Statement getStatement() throws ClassNotFoundException, SQLException{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL","alyssa","alyssa");
Statement statement=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
return statement;
}
public ResultSet doQueryCommon(PageUtils pageUtils,String sql) throws SQLException, ClassNotFoundException{
String pagesql=pageHandle(pageUtils,sql);
ResultSet rs=getStatement().executeQuery(pagesql);
return rs;
}
public ResultSet doQueryTotal(String sql) throws SQLException, ClassNotFoundException{
ResultSet rs=getStatement().executeQuery(sql);
return rs;
}
public String pageHandle(PageUtils pageUtils,String sql){
return oracleRownum.replaceAll("#sql", sql)
.replaceAll("#firstIndex", String.valueOf(pageUtils.getFisrtIndex()))
.replaceAll("#lastIndex", String.valueOf(pageUtils.getLastIndex()));
}
public List<User> queryUser(PageUtils pageUtils,String sql) throws SQLException, ClassNotFoundException{
ResultSet rs=doQueryCommon(pageUtils,sql);
List<User> userlist=new ArrayList<User>();
while(rs.next()){
int userId=rs.getInt("user_id");
String username=rs.getString("username");
String password=rs.getString("password");
String sex=rs.getString("sex");
User user=new User();
user.setUser_id(userId);
user.setPassword(password);
user.setUsername(username);
user.setSex(sex);
userlist.add(user);
}
return userlist;
}
public int queryTotalResult(String tablename) throws SQLException, ClassNotFoundException{
ResultSet rs=doQueryTotal("SELECT COUNT(*) c FROM "+tablename);
int count=0;
while(rs.next()){
count=rs.getInt("c");
}
return count;
}
}
逻辑处理类
package com.nanjing.page;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UserServlet extends HttpServlet{
private Userdao userdao=new Userdao();
private List<User> userlist=new ArrayList<User>();
@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 {
try {
int totalResult=userdao.queryTotalResult("my_user");
PageUtils pageUtils=new PageUtils();
pageUtils.setRequest(req);
pageUtils.setTotalResult(totalResult);
pageUtils.init();
userlist=userdao.queryUser(pageUtils,"select *from my_user");
req.setAttribute("userlist", userlist);
req.getRequestDispatcher("/user.jsp").forward(req, resp);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
分页页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!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>
</head>
<body>
<script type="text/javascript">
function fowordPage(){
var num=/^[0-9]+$/;
var myPage=document.getElementById("myPage").value;
if(num.test(myPage) && 0<parseInt(myPage) && parseInt(myPage)<${totalPage}){
document.getElementById("myPage_a").href="${pageTargetURL}?page="+myPage;
}else{
alert("跳转页数输入不正确");
document.getElementById("myPage_a").href="javascript:void(0)";
}
}
</script>
<a href="${pageTargetURL}?page=1">首页</a>
<c:choose>
<c:when test="${currentPage<=1}">上一页</c:when>
<c:otherwise><a href="${pageTargetURL}?page=${currentPage-1}">上一页</a></c:otherwise>
</c:choose>
<c:choose>
<c:when test="${currentPage>=totalPage}">下一页</c:when>
<c:otherwise><a href="${pageTargetURL}?page=${currentPage+1}">下一页</a></c:otherwise>
</c:choose>
跳到第<input type="text" id="myPage">页
<a href="" onclick="fowordPage()" id="myPage_a">跳转</a>
<a href="${pageTargetURL}?page=${totalPage}">尾页</a>
当前第${currentPage}页,总共${totalPage}页
</body>
</html>
测试页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!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>
</head>
<body>
<table>
<tr>
<th>id</th>
<th>用户名</th>
<th>密码</th>
<th>性别</th>
</tr>
<c:forEach items="${userlist}" var="u">
<tr>
<td>${u.user_id}</td>
<td>${u.username}</td>
<td>${u.password}</td>
<td>${u.sex}</td>
</tr>
</c:forEach>
<tr>
<td colspan="4"><jsp:include page="page.jsp"></jsp:include></td>
</tr>
</table>
</body>
</html>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>test</display-name>
<servlet>
<servlet-name>user</servlet-name>
<servlet-class>com.nanjing.page.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>user</servlet-name>
<url-pattern>/userServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
脚本:
----------------------------------------------
-- Export file for user ALYSSA --
-- Created by alyssa on 2012/8/13, 20:46:24 --
----------------------------------------------
spool 11.log
prompt
prompt Creating table MY_USER
prompt ======================
prompt
create table ALYSSA.MY_USER
(
user_id INTEGER not null,
username VARCHAR2(100),
password VARCHAR2(100),
sex VARCHAR2(200)
)
tablespace ALYSSA_TEBLESPACE
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
comment on table ALYSSA.MY_USER
is '用户表';
comment on column ALYSSA.MY_USER.username
is '用户名';
spool off
http://localhost:8080/test/userServlet访问
分享到:
相关推荐
### JSP分页技术详解:初学者的完美指南 #### 引言 在现代Web开发中,数据展示的效率和用户体验至关重要。对于大型数据库或数据集的处理,一次性加载所有数据不仅消耗大量资源,还可能导致页面加载缓慢,严重影响...
二、JSP分页步骤 1. **计算总页数**:首先,我们需要知道所有数据的数量,然后根据每页显示的数据量来计算总页数。这可以通过执行SQL查询获取数据总数,然后用总数除以每页数量得到。 2. **接收用户请求**:用户...
java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页
本篇文章将深入探讨“目前最好的JSP分页技术”,并介绍其核心概念、优势以及实现步骤。 首先,我们要明确的是,没有绝对“最好”的技术,只有最合适的解决方案。选择分页技术通常要考虑性能、易用性、可维护性和...
`jsp分页循环显示`就是一种这样的技术,它结合了`JSP(JavaServer Pages)`和`Servlet`,用于从数据库获取数据并以分页的方式在网页上呈现。本篇文章将深入讲解这一技术的实现原理及步骤。 首先,我们需要理解JSP和...
jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页...
本文件“JSP分页技术(多种方法)”中,将探讨几种常见的JSP分页实现方法。 1. **基于SQL的分页** 这是最基础的分页方法,通过在SQL查询语句中添加`LIMIT`和`OFFSET`或`ROWNUM`(根据数据库类型)来实现。例如,在...
在"分页的实现.rtf"文件中,可能包含了一个具体的JSP分页实现案例,包括SQL查询、Servlet处理逻辑以及JSP页面的代码片段,通过阅读和理解这个案例,可以加深对JSP分页实现的理解。 总结,JSP分页实现是一个涉及到...
**JSP分页技术详解** 在Web开发中,分页是一种常见的用户界面设计技术,它使得大量数据可以按页展示,提高用户体验并减轻服务器压力。本示例是基于JSP(JavaServer Pages)和SQL Server 2005构建的一个简单易懂的...
本资源提供了一个非常好用的JSP分页标签,它简化了在JSP页面上实现分页的过程,无需编写过多的Java代码,只需在JSP页面上插入特定的标签即可。 1. **JSP分页标签**:JSP分页标签是一种预定义的、可重用的组件,可以...
"jsp 分页源码.rar"这个压缩包可能包含了一个完整的JSP分页实现的源代码示例,让我们来详细探讨一下JSP分页的相关知识点。 1. **分页原理**: - 分页的基本思想是将大量数据分成若干小块(每块称为一页),每次只...
【纯jsp分页技术详解】 在Java Web开发中,分页功能是不可或缺的一部分,它能够帮助用户有效地管理和浏览大量数据,提升用户体验。本教程将深入探讨如何在JSP(Java Server Pages)中实现纯jsp分页,不依赖任何封装...
**jsp分页技术算法详解** 在Web开发中,分页技术是必不可少的,尤其是在处理大量数据展示时。JSP(JavaServer Pages)作为Java的一种视图技术,提供了强大的功能来实现用户界面的动态生成。本篇文章将深入探讨JSP中...
**jsp分页插件**是一种在网页应用中实现数据分页显示的重要工具,尤其是在处理大量数据时,分页能够提高用户体验,避免一次性加载过多数据导致页面加载缓慢或资源浪费。这款名为"Codejia.Com"的插件因其简单易用和...
"通过servlet实现jsp分页技术"的主题旨在讲解如何在Java Web环境下,利用Servlet和JSP进行数据的分页显示。下面将详细介绍这个过程,包括基本概念、步骤和关键点。 首先,我们需要理解分页的基本概念。分页是将大量...
"封装好直接使用的jsp分页插件"正是一款针对这一需求设计的工具,它能够简化开发过程,使开发者能够快速实现分页功能,而无需关注底层复杂的逻辑。 该插件适用于jsp与servlet的原生组合,同时对流行的SSH(Struts2 ...
### JSP分页技术详解与实现 #### 一、引言 JSP(JavaServer Pages)是一种基于Java的服务器端动态网页技术标准,用于生成动态HTML页面。在处理大量数据时,分页显示是一个非常实用的功能,它可以提高用户体验,减少...
【纯jsp分页查询】是一种在Web开发中常见的技术,主要应用于数据量较大时,为了提高用户体验和页面加载速度,将大量数据分为多个部分(页)进行显示。在这个项目中,开发者使用了JSP(JavaServer Pages)技术,这是...