这个功能一共创建了两个javabean组件和一个JSp页面显示分页页面,第一个是处理以数据库连接的javabean,第一个javabean是处理分页查询结果的代码,第三个jsp是调用第二个javabean,显示分页查询结果!
//下面是连接mySQL数据库的一个javabean的代码(可以更改下面的数据库,不影响代码的执行):
package data;
import java.sql.*;
public class LoginData{
Connection conn=null;
public LoginData(){
this.connect();
}
public Connection getConn(){
return this.conn;
}
public boolean connect(){
try{
//使用JDBC桥创建数据库连接
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
//使用DriverManager类的getConnection()方法建立连接
//第一个参数定义用户名,第二个参数定义密码
this.conn=java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/logindemo?useUnicode=true&characterEncoding=gb2312","root","123456");
}catch(Exception ex){
ex.printStackTrace();
return false;
}
return true;
}
}
//分页查询处理javabean
package split;
import java.sql.*;
import java.util.*;
import data.LoginData;
public class splitPage
{
private Connection conn=null;
private Statement stmt=null;
private ResultSet rs=null;
private ResultSetMetaData rsmd=null;
//sql 查询语句
private String sqlStr;
//总纪录数目
public int rowCount;
//所分得逻辑页数
public int pageCount;
//每页显示的纪录数目
private int pageSize;
//定义表的列数目
private int columnCount;
public void initialize(String sqlStr,int pageSize)
{
this.sqlStr=sqlStr;
this.pageSize=pageSize;
try
{
LoginData loginData=new data.LoginData();
this.conn=loginData.getConn();
this.stmt=this.conn.createStatement();
this.rs=this.stmt.executeQuery(this.sqlStr);
this.rsmd=this.rs.getMetaData();
if(this.rs!=null)
{
this.rs.last();
this.rowCount=this.rs.getRow();
this.rs.first();
this.columnCount=this.rsmd.getColumnCount();
this.pageCount=(this.rowCount/this.pageSize==0)?(this.rowCount/this.pageSize):(this.rowCount/this.pageSize+1);
}
}catch(Exception ex)
{
ex.printStackTrace();
}
}
public Vector getPage(int ipage)
{
Vector vData=new Vector();
int n=ipage;
int m=0;
m=(n-1)*this.pageSize+1;
try
{
if(this.rs!=null)
{
if(n!=1)
{
this.rs.absolute(m);
}
for(int i=0;i<this.pageSize;i++)
{
String[] sData=new String[this.columnCount];
for(int j=0;j<this.columnCount;j++)
{
sData[j]=this.rs.getString(j+1);
}
if(sData==null)
{
break;
}
vData.addElement(sData);
this.rs.next();
}
this.rs.close();
this.stmt.close();
this.conn.close();
}
}catch(Exception ex)
{
ex.printStackTrace();
}
return vData;
}
//获得页面总数
public int getPageCount()
{
return this.pageCount;
}
//获得数据表中总纪录数
public int getRowCount()
{
return this.rowCount;
}
}
//jsp显示分页查询页面
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="data.*"%>
<jsp:useBean id="pages" scope="page" class="split.splitPage" />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%!
//显示每页的纪录数
int pageSize=10;
String sqlStr="";
//当前页
int showPage=1;
%>
<%
sqlStr="select * from userinfo order by id ";
String strPage=null;
//获得跳转到的页面
pages.initialize(sqlStr,pageSize);
strPage=request.getParameter("showPage");
if(strPage==null){
showPage=1;
}else{
try{
showPage=Integer.parseInt(strPage);
}catch(NumberFormatException ex){
showPage=1;
}
if(showPage<1){
showPage=1;
}
if(showPage>pages.getPageCount()){
showPage=pages.getPageCount();
}
}
//取得要显示的数据集合
Vector vData=pages.getPage(showPage);
%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>分页显示</title>
</head>
<body bgcolor="#ffffff" text="#000000">
<h1 align=center>个人基本信息</h1>
<div align=center>
<table border="1" cellspacing="0" cellpadding="0" width="80%">
<tr>
<th width="20%">编号</th>
<th width="40%">学号</th>
<th width="40%">姓名</th>
</tr>
<%
for(int i=0;i<vData.size();i++)
{
//显示数据数
String[] sData=(String[])vData.get(i);
%>
<tr>
<td><%=sData[0]%></td>
<td><%=sData[1]%></td>
<td><%=sData[2]%></td>
</tr>
<%
}
%>
</table>
<p>
<form action="word_list_javabean.jsp" method="get" target="_self">
<p>共<font color=red><%=pages.getRowCount()%></font>条 <%=pageSize%>条/页 第<font color=red><%=showPage%></font>页/共<font color=red><%=pages.getPageCount()%></font>页 [<a href="word_list_javabean.jsp?showPage=1" target="_self">首页</a>]
<%
//判断“上一页”链接是否要显示
if(showPage>1){
%>
[<a href="word_list_javabean.jsp?showPage=<%=showPage-1%>" target="_self">上一页</a>]
<%
}
else{
%>
[上一页]
<%
}
//判断“下一页”链接是否显示
if(showPage<pages.getPageCount())
{
%>
[<a href="word_list_javabean.jsp?showPage=<%=showPage+1%>" target="_self">下一页</a>]
<%
}
else{
%>
[下一页]
<%
}
%>
[<a href="word_list_javabean.jsp?showPage=<%=pages.getPageCount()%>" target="_self">尾页</a>] 转到
<select name="select">
<%
for(int x=1;x<=pages.getPageCount();x++)
{
%>
<option value="<%=x%>"
<%
if(showPage==x){
out.println("selected");
}
%> ><%=x%></option>
<%
}
%>
</select>
页
<input type="submit" name="go" value="提交" />
</p>
</form>
</p>
</div>
</body>
</htm>
分享到:
相关推荐
**JSP数据库分页模块详解** 在Web开发中,数据量较大的时候,一次性加载所有记录不仅会影响页面加载速度,也可能消耗大量服务器资源。为了解决这个问题,通常会采用分页技术来显示数据。本模块专注于JSP环境下的...
4. **数据库通用模块开发**:这部分可能包含数据验证、分页查询、数据过滤等功能的实现,这些都是Web应用中常见的需求。通过模块化开发,可以提高代码的复用性和可维护性。 5. **MVC设计模式**:书中可能还会涉及...
在IT行业中,分页技术是...总结来说,通过Servlet实现JSP分页技术,需要结合数据库操作、MVC模式和JSP渲染,实现高效且用户友好的数据分页显示。在实际开发中,应注重代码的模块化和性能优化,以提供更好的用户体验。
本资源"JSP数据库通用模块开发与系统移植.rar"聚焦于如何利用JSP进行数据库交互,并提供了通用模块以简化开发过程和系统的移植。 首先,JSP与数据库的结合是Web应用开发中的核心部分,特别是对于那些需要存储和检索...
"JSP数据库通用模块开发与系统移植源代码"是一个资源包,包含了多个常用的网站功能模块,可以帮助开发者快速构建基于JSP的Web应用程序。 1. **登录模块**:这是任何Web应用的基础,通常涉及用户凭据验证,如用户名...
**标题解析:**"jsp分页程序源代码" 指的是一个基于JSP(JavaServer Pages)技术的分页程序的源代码实现。在Web开发中,分页是常见的功能,用于处理大量数据,避免一次性加载所有内容导致页面响应慢或者内存压力过大...
总结,Java Web项目中的分页通用实现涉及到数据库查询、参数传递、前后端交互等多个环节。通过封装分页组件,我们可以将这些复杂逻辑模块化,便于在不同的项目中复用,从而提升开发质量和效率。这个DEMO正是为了帮助...
通过以上步骤,你可以构建一个功能完善的JSP分页系统。在实际项目中,还可以考虑将分页逻辑封装为一个自定义标签库(Tag Library),以实现代码的重用和模块化。同时,随着前端技术的发展,现代Web应用可能会倾向于...
《JSP通用模块及典型系统开发实例导航》是一本针对Java服务器页面(JSP)技术的实战指南,书中涵盖了各种常见的JSP模块和系统开发案例。通过对这些源代码的学习和研究,开发者可以深入理解JSP技术的核心原理,提高在...
在IT行业中,SpringMVC和MyBatis是两个非常重要的框架,它们分别负责...同时,对于分页功能,需要理解数据库的分页机制,并能将其应用到实际的SQL查询中。这样的整合可以提高项目的可维护性和复用性,降低开发复杂度。
对于分页功能,我们可以将其设计为一个独立的模块,提供通用的分页处理逻辑,这样在其他需要分页的地方可以直接复用。 接着,我们探讨"组件化"。组件化是指将UI元素抽象成独立的组件,可以像拼积木一样自由组合,...
通过上述步骤,我们可以构建一个既高效又灵活的分页系统,使得在Struts、Spring和Hibernate的项目中,无论哪个模块需要分页功能,都能快速地复用这段通用代码,提高开发效率。在实际应用中,还需要结合具体需求进行...
分页通常是通过限制数据库查询结果的数量来实现的,每次只获取一定数量的数据,然后在前端展示。用户可以通过点击页码或导航按钮来切换不同页面,后台则根据请求的页码重新执行查询。 在SSH框架中,我们可以利用...
这个实例结合了这三大框架,提供了一个完整的功能模块,包括用户注册、数据查询、搜索以及分页显示,非常适合初学者进行学习和实践。 首先,Struts2是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,...
4. **前端展示**:在JSP页面上,可以使用标签库(如Spring的Taglib或Struts的Tiles)来展示分页链接。通常会显示页码、每页条数选择等,同时根据当前页码动态生成前后翻页的链接。 5. **优化与扩展**:为了提供更好...
`Page_Pro`可能是一个实现了分页功能的Java类或模块,包含了具体的分页算法和接口调用。 总的来说,本项目通过SSH框架的集成,实现了高效的后端业务处理。通过创建分页抽象类,我们优化了代码结构,提高了代码复用...
PageHelper是MyBatis的分页插件,它可以自动帮助我们处理分页查询,提供了强大而灵活的分页功能。PageHelper通过拦截器机制,动态地在SQL语句中添加分页条件,从而实现分页效果。在使用PageHelper时,我们需要在...
9. **分页查询**:在商品列表展示中,通常会采用分页查询技术,如MyBatis的PageHelper插件,以提高页面加载速度,优化用户体验。 10. **支付集成**:购物商城系统一般会接入第三方支付接口,如支付宝、微信支付等,...
分页是将数据库查询结果按一定数量分成若干页,用户每次只请求和显示一页数据。在SSH框架中,分页主要涉及以下几个部分: 1. **Action层**:这是业务逻辑的入口,负责接收前端请求,调用Service层方法,并将返回的...
在这个"jsp admin用户管理"模块中,开发者已经创建了一个通用的解决方案,经过测试并证明是可行的。这个模块使用JavaServer Pages(JSP)技术,它是一种基于Java的服务器端脚本语言,用于生成动态网页内容。 **JSP...