主要有三个文件:show.jsp、ShowAction.java、PageInformation.java
环境是:JDK1.6+mysql5.0+jboss4.0+struts 2.0.11
还需完善的地方:如果没有前一页、后一页,直接把这个链接在页面上屏蔽掉
因为不想在Action里面有太多的链接数据库的代码,所以另外搞了一个PageInformation类,来完成数据库查询工作。
具体代码如下:
package com.ClockWise.ray.jsp;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
/*
* 此类用来完成数据库操作
* */
public class PageInformation {
private int pageSize;//每一页包含的条目个数
private int totalRows;//一共有多少行
private int totalPages;//一共有多少页
private int currentPage=1;//初始化当前页为第一页
private boolean hasPrevious = false;//是否有前页,尚未使用,有待完善
private boolean hasNext = false;//是否有后页,尚未使用,有待完善
private ArrayList<User> list = new ArrayList<User>();//存放结果的列表
private DatabaseGeneralServices dgs;//自己写的获得connection的类,可以自己实现
private Connection conn;
private PreparedStatement ps;
private ResultSet rs;
public PageInformation(){
dgs = DatabaseGeneralServices.getInstance();
pageSize = 20;//每页设置为20条
totalRows = initRowCount();//得到总行数,比较粗犷,不知有什么灵巧的方法,比如select count(*)...
totalPages =((totalRows+pageSize)-1)/pageSize;//获得总页数
initList(1);
}
/*
* 每次查询只取20条,封装为一个列表,返回。参数是当前页号,在构造函数中默认为第一页
* */
private void initList(int currentPage){
list.removeAll(list);
conn = dgs.getConnection();
try{
ps = conn.prepareStatement("Select * FROM jsptest LIMIT ?,20");
int temp = (currentPage-1)*20;
ps.setInt(1, temp);
rs = ps.executeQuery();
while (rs.next()){
User user = new User();
user.setId(rs.getString(1));
user.setName(rs.getString(2));
list.add(user);
}
}catch(SQLException e){
e.printStackTrace();
}finally{
dgs.closeConnection(rs, ps, conn);
}
}
//粗犷的得到行数
private int initRowCount(){
conn = dgs.getConnection();
try{
ps = conn.prepareStatement("Select * FROM jsptest");
rs = ps.executeQuery();
rs.last();
int result = rs.getRow();
rs.first();
return result;
}catch(SQLException e){
e.printStackTrace();
}finally{
dgs.closeConnection(rs, ps, conn);
}
return 0;
}
//页面调数据的时候,重新发出查询,初始化结果列表
public ArrayList<User> getList(int cp) {
initList(cp);
ArrayList<User> temp = new ArrayList<User>();
for(int i =0;i<20;i++){
temp.add(list.get(i));
}
return temp;
}
//other setters and getters
……
}
紧接着是Action代码
package com.ClockWise.ray.jsp;
import java.util.ArrayList;
import com.opensymphony.xwork2.ActionSupport;
public class ShowAction extends ActionSupport {
private int totalPages;
private boolean hasPre;
private boolean hasNext;
private int currentPage=1;
private ArrayList<User> list;
//以上几个和PageInformation里面的一一对应
private String username ="ray";
private ArrayList list2= new ArrayList();//这个list用来存放下面的页码起始位置
private PageInformation pi;
public String execute(){
init(currentPage);
return SUCCESS;
}
private void init(int currentPage){
pi = new PageInformation();
this.setTotalPages(pi.getTotalPages());
this.setHasPre(pi.isHasPrevious());
this.setHasNext(pi.isHasNext());
this.setList(pi.getList(currentPage));
for(int i =currentPage;i<=currentPage+20;i++){
Current c = new Current();
c.setCurrentPage(i);
list2.add(c);
}
}
public ArrayList<User> getList() {
this.setList(pi.getList(currentPage));
return list;
}
//other setters and getters
…….
}
最后是JSP代码
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<s:form action="ShowAction" method="GET">
<h1>Welcome <s:property value="username"/></h1><BR>
<h1>CurrentPage <s:property value="currentPage"/></h1>
<!--show items of this page-->
<s:iterator value="list" status="status">
<s:property value="id"/>
<s:property value="name"/>
<BR>
</s:iterator>
<!--define the url of the previous page and next page-->
<s:url id="url_pre" value="ShowAction.action">
<s:param name="currentPage" value="currentPage-1"></s:param>
</s:url>
<s:url id="url_next" value="ShowAction.action">
<s:param name="currentPage" value="currentPage+1"></s:param>
</s:url>
<!-- use url defined above -->
<s:a href="%{url_pre}">Pre</s:a>
<s:iterator value="list2" status="status">
<s:url id="url" value="ShowAction.action">
<!-- pass the currentPage parameter -->
<s:param name="currentPage" value="currentPage"></s:param>
</s:url>
<s:a href="%{url}"><s:property value="currentPage"/> </s:a>
</s:iterator>
<s:a href="%{url_next}">Next</s:a>
</s:form>
</body>
</html>
环境是:JDK1.6+mysql5.0+jboss4.0+struts 2.0.11
还需完善的地方:如果没有前一页、后一页,直接把这个链接在页面上屏蔽掉
因为不想在Action里面有太多的链接数据库的代码,所以另外搞了一个PageInformation类,来完成数据库查询工作。
具体代码如下:
package com.ClockWise.ray.jsp;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
/*
* 此类用来完成数据库操作
* */
public class PageInformation {
private int pageSize;//每一页包含的条目个数
private int totalRows;//一共有多少行
private int totalPages;//一共有多少页
private int currentPage=1;//初始化当前页为第一页
private boolean hasPrevious = false;//是否有前页,尚未使用,有待完善
private boolean hasNext = false;//是否有后页,尚未使用,有待完善
private ArrayList<User> list = new ArrayList<User>();//存放结果的列表
private DatabaseGeneralServices dgs;//自己写的获得connection的类,可以自己实现
private Connection conn;
private PreparedStatement ps;
private ResultSet rs;
public PageInformation(){
dgs = DatabaseGeneralServices.getInstance();
pageSize = 20;//每页设置为20条
totalRows = initRowCount();//得到总行数,比较粗犷,不知有什么灵巧的方法,比如select count(*)...
totalPages =((totalRows+pageSize)-1)/pageSize;//获得总页数
initList(1);
}
/*
* 每次查询只取20条,封装为一个列表,返回。参数是当前页号,在构造函数中默认为第一页
* */
private void initList(int currentPage){
list.removeAll(list);
conn = dgs.getConnection();
try{
ps = conn.prepareStatement("Select * FROM jsptest LIMIT ?,20");
int temp = (currentPage-1)*20;
ps.setInt(1, temp);
rs = ps.executeQuery();
while (rs.next()){
User user = new User();
user.setId(rs.getString(1));
user.setName(rs.getString(2));
list.add(user);
}
}catch(SQLException e){
e.printStackTrace();
}finally{
dgs.closeConnection(rs, ps, conn);
}
}
//粗犷的得到行数
private int initRowCount(){
conn = dgs.getConnection();
try{
ps = conn.prepareStatement("Select * FROM jsptest");
rs = ps.executeQuery();
rs.last();
int result = rs.getRow();
rs.first();
return result;
}catch(SQLException e){
e.printStackTrace();
}finally{
dgs.closeConnection(rs, ps, conn);
}
return 0;
}
//页面调数据的时候,重新发出查询,初始化结果列表
public ArrayList<User> getList(int cp) {
initList(cp);
ArrayList<User> temp = new ArrayList<User>();
for(int i =0;i<20;i++){
temp.add(list.get(i));
}
return temp;
}
//other setters and getters
……
}
紧接着是Action代码
package com.ClockWise.ray.jsp;
import java.util.ArrayList;
import com.opensymphony.xwork2.ActionSupport;
public class ShowAction extends ActionSupport {
private int totalPages;
private boolean hasPre;
private boolean hasNext;
private int currentPage=1;
private ArrayList<User> list;
//以上几个和PageInformation里面的一一对应
private String username ="ray";
private ArrayList list2= new ArrayList();//这个list用来存放下面的页码起始位置
private PageInformation pi;
public String execute(){
init(currentPage);
return SUCCESS;
}
private void init(int currentPage){
pi = new PageInformation();
this.setTotalPages(pi.getTotalPages());
this.setHasPre(pi.isHasPrevious());
this.setHasNext(pi.isHasNext());
this.setList(pi.getList(currentPage));
for(int i =currentPage;i<=currentPage+20;i++){
Current c = new Current();
c.setCurrentPage(i);
list2.add(c);
}
}
public ArrayList<User> getList() {
this.setList(pi.getList(currentPage));
return list;
}
//other setters and getters
…….
}
最后是JSP代码
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<s:form action="ShowAction" method="GET">
<h1>Welcome <s:property value="username"/></h1><BR>
<h1>CurrentPage <s:property value="currentPage"/></h1>
<!--show items of this page-->
<s:iterator value="list" status="status">
<s:property value="id"/>
<s:property value="name"/>
<BR>
</s:iterator>
<!--define the url of the previous page and next page-->
<s:url id="url_pre" value="ShowAction.action">
<s:param name="currentPage" value="currentPage-1"></s:param>
</s:url>
<s:url id="url_next" value="ShowAction.action">
<s:param name="currentPage" value="currentPage+1"></s:param>
</s:url>
<!-- use url defined above -->
<s:a href="%{url_pre}">Pre</s:a>
<s:iterator value="list2" status="status">
<s:url id="url" value="ShowAction.action">
<!-- pass the currentPage parameter -->
<s:param name="currentPage" value="currentPage"></s:param>
</s:url>
<s:a href="%{url}"><s:property value="currentPage"/> </s:a>
</s:iterator>
<s:a href="%{url_next}">Next</s:a>
</s:form>
</body>
</html>
发表评论
-
struts2的Error filterStart解决
2011-06-21 11:53 1005错误原因: jdk1.5和tomcat5.0之间关于Tran ... -
struts分页算法的实现
2008-10-14 13:01 9241、建数据库和相应的表。 2、数据逻辑层的相关代 ... -
DispatchAction使用要点
2008-10-14 12:53 10781.action写法,注意:继承自dispatchaction ... -
DispatchAction的用法
2008-10-14 12:46 2610DispatchAction 是 Struts1.1 中的一个 ... -
struts LocaleAction 的用法
2007-06-30 20:41 1861package org.apache.struts.weba ... -
Struts 1.x与Struts 2.0的标志库比较
2007-06-17 13:06 1841对Struts 1.x与Struts 2.0的 ... -
Struts-Layout标签:Input类
2007-06-17 13:02 4119Stru ... -
Struts+Hibernate数据表示中的错误
2007-01-13 17:27 1025在 struts+ hibernate 这 ... -
Struts的logiciterate标记完成复杂循环
2007-01-13 17:25 1146使用struts中的<logic:iterate&g ... -
用struts向数据库中储存图片
2007-01-13 17:23 1195这个例子是通过用Struts的FormFile来写入到My ... -
用Struts上传多个文件的方法
2007-01-13 17:20 1100package com.xindeco.common; ...
相关推荐
前端页面通常使用JSP或FreeMarker等模板技术来渲染,通过Struts2的标签库,可以轻松地遍历分页对象中的数据并显示出来。同时,需要提供上一页、下一页等导航链接,这可以通过修改Action中的页码属性,然后重定向或...
"jsp+struts1分页"是一个经典的Java Web开发话题,它涉及到JSP(JavaServer Pages)和Struts1这两个核心技术。在这里,我们将深入探讨如何使用这两者实现一个高效的分页系统。 首先,让我们了解一下JSP。JSP是Java...
### Struts分页显示源码实例解析 #### 一、背景介绍 在Web应用开发中,特别是使用MVC架构的框架如Struts时,分页显示是常见的需求之一。分页不仅能提高用户体验,还能减轻服务器压力。本文档将详细介绍如何在...
开发者可以通过阅读源码,了解如何在实际项目中集成JSP、Struts和Hibernate,以及如何实现分页功能和数据库操作。 总之,这个"JSP+Struts+Hibernate"的博客系统展示了传统的Java Web开发方式,虽然现代Web开发已...
本教程主要探讨如何在Struts2框架下实现一个基于JSP的自定义分页组件,名为"zoo-paging-1.0.jar"。该组件不仅提供了分页功能,还附带了源代码和示例项目,方便开发者理解和应用。 首先,我们来理解分页的基本概念。...
4. **视图层处理**:在Struts中,Action类会将处理后的数据(分页后的结果集)放入模型对象,然后转发到一个JSP页面进行展示。JSP页面可以通过EL(Expression Language)和JSTL标签库,如`c:forEach`循环遍历分页...
1. **Struts分页**: 在Struts中,Action类是业务逻辑的核心,通常会包含处理分页的逻辑。ActionForm则用于封装用户请求参数,如当前页数、每页显示条数等。你可以创建一个专门的分页ActionForm,用于传递和验证这些...
总结来说,"struts+mysql+jsp 分页"这个主题涉及到Struts框架中Action类的设计、MySQL数据库的分页查询以及JSP页面的动态渲染。通过合理的代码组织和利用MVC模式,可以实现高效、灵活的分页功能。在实际开发中,...
总之,这个项目展示了如何将Struts2和Hibernate结合使用,以实现文件批量上传到数据库以及Ajax分页显示的功能。通过学习这个项目,开发者可以深入理解Java Web开发中的MVC模式、ORM框架以及前端动态加载技术。
这是一个基于Java技术的简易JSP信息管理程序,它采用了经典的MVC(Model-View-Controller)设计模式,并实现了数据的分页、增删改查功能。在这个程序中,JSP作为视图层,负责展示数据;MVC模式帮助分离业务逻辑和...
总结来说,Struts2分页源码技术涉及到Action的分页参数处理、Service层的SQL构建和执行,以及视图层的数据显示。结合Hibernate框架,我们可以更高效地处理分页查询,提高应用程序的性能。在实际开发中,还需要考虑...
总结来说,本项目利用JSP自定义标签实现了用户界面的分页显示,通过JPA和Hibernate进行数据库的分页查询,而Struts2则作为整体架构的控制器,协调各个部分的交互。这样的组合既保证了代码的可维护性,又提高了开发...
总结来说,这个"Struts+Hibernate 分页源码"项目涵盖了以下几个核心知识点: 1. Struts框架的MVC设计模式,包括Action和ActionForm的使用。 2. Hibernate的数据库操作,如Criteria查询和分页实现。 3. 使用...
在本示例中,"struts分页示例源码"提供了如何在Struts应用中实现分页功能的具体代码。分页在大数据量展示时尤为重要,它能帮助用户更有效地浏览和管理数据。 分页通常涉及到以下几个关键组件和概念: 1. **Action...
本资源"mysql -struts 分页源码"显然关注的是如何在Struts框架下实现MySQL数据的分页显示。分页是一种优化用户界面和提高性能的技术,它允许用户逐步浏览大量数据,而不是一次性加载所有内容。接下来,我们将深入...
在“Struts + Hibernate v1.0 分页源码”这个项目中,开发者已经实现了基于这两者的一个分页功能。分页是大型数据集展示中非常关键的一个特性,它能有效提高用户体验,避免一次性加载大量数据导致页面响应慢或资源...
视图通常是一个JSP页面,它可以使用Struts标签库来显示数据和构建分页导航。 分页超级算法通常指的是优化分页性能的策略。比如,预加载相邻页的数据可以减少页面跳转时的延迟;使用缓存可以避免重复查询数据库;...
本文将详细介绍如何在Struts2、Spring2和Hibernate3集成环境下实现经典的分页功能,并提供部分Java及JSP源代码示例。 #### 二、核心概念和技术介绍 1. **Struts2**:是一个开源的Web应用框架,它继承了Struts的...
在这个“关于Struts+Hibernate分页的例子”中,我们可能看到一个集成这两个框架的Web应用,用于展示如何在Struts中利用Hibernate进行数据的分页显示。分页是Web应用中常见的功能,能够帮助用户更有效地浏览大量数据...