- 浏览: 2259951 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- FileNet相关 (3)
- 应用服务器相关 (22)
- Java综合 (77)
- 持久层 (24)
- struts (11)
- webservice (8)
- 虚拟机 (2)
- 光盘刻录 (0)
- AD及AD集群 (1)
- JS (33)
- F5 (0)
- loadrunner8.1 (0)
- Java 反编译工具 (2)
- DataBase (62)
- ant (1)
- 操作系统 (29)
- 我的任务 (3)
- 平台架构 (16)
- 业务规则引擎 (2)
- 模板 (1)
- EJB (5)
- spring (24)
- CMMI (1)
- 项目管理 (20)
- LDAP (13)
- JMS (10)
- JSP (19)
- JBPM (2)
- web MVC框架设计思想 (2)
- 第三方支付平台 (2)
- BUG管理工具 (1)
- 垃圾站 (2)
- php (1)
- swing (1)
- 书籍 (1)
- QQ qq (2)
- 移动互联网 (26)
- 爱听的歌曲 (0)
- hadoop (4)
- 数据库 (9)
- 设计模式 (1)
- 面试经验只谈 (1)
- 大数据 (9)
- sp (1)
- 缓存数据库 (8)
- storm (2)
- taobao (2)
- 分布式,高并发,大型互联网,负载均衡 (6)
- Apache Ignite (0)
- Docker & K8S (0)
最新评论
-
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
spring rest mvc使用RestTemplate调用 -
wangyudong:
很多API doc生成工具生成API文档需要引入第三方依赖,重 ...
spring rest mvc使用RestTemplate调用 -
zhaoshijie:
cfying 写道大侠,还是加载了两次,怎么解决啊?求。QQ: ...
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
xinglianxlxl:
对我有用,非常感谢
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
k_caesar:
多谢,学习了
利用maven的resources、filter和profile实现不同环境使用不同配置文件
在开发web程序时,从数据库中取出来的数据一般都要分页显示在页面上,分页显示的方法非常多,有人写自定义标签,用自己写的标签进行分页显示,我个人觉得这是一种比较好的方法。下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在 Struts2的action里面定义一个List属性,用这个List来接收从数据库中查询出来并进行了封装的那些对象,然后通过Struts2的标签遍历List里的每个对象,并把这些对象里所包含的属性取出来展现在页面上。下面是具体的步骤:
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
3、建一个数据库表,用于保存学员信息:
Sql代码
drop database if exists page;
create database page ;
use page;
create table student (
stu_id integer auto_increment,
stuName varchar(255) not null,
address varchar(255) not null,
stuPhone varchar(255)not null,
primary key(stu_id)
);
insert into student(stuName,address,stuPhone) values('杨华林','长沙','13787825190');
insert into student(stuName,address,stuPhone) values('李明清','天津','13787525190');
insert into student(stuName,address,stuPhone) values('李小华','大连','13788451190');
insert into student(stuName,address,stuPhone) values('郑小明','苏州','13787052188');
insert into student(stuName,address,stuPhone) values('杨一新','西安','13787851190');
insert into student(stuName,address,stuPhone) values('王新任','广州','13787056460');
insert into student(stuName,address,stuPhone) values('谢小华','深圳','13787075550');
insert into student(stuName,address,stuPhone) values('王建明','厦门','13788853690');
insert into student(stuName,address,stuPhone) values('秦一生','北京','13788689236');
insert into student(stuName,address,stuPhone) values('田翠林','杭州','13787655150');
insert into student(stuName,address,stuPhone) values('陈小明','广州','13787623668');
drop database if exists page;
create database page ;
use page;
create table student (
stu_id integer auto_increment,
stuName varchar(255) not null,
address varchar(255) not null,
stuPhone varchar(255)not null,
primary key(stu_id)
);
insert into student(stuName,address,stuPhone) values('杨华林','长沙','13787825190');
insert into student(stuName,address,stuPhone) values('李明清','天津','13787525190');
insert into student(stuName,address,stuPhone) values('李小华','大连','13788451190');
insert into student(stuName,address,stuPhone) values('郑小明','苏州','13787052188');
insert into student(stuName,address,stuPhone) values('杨一新','西安','13787851190');
insert into student(stuName,address,stuPhone) values('王新任','广州','13787056460');
insert into student(stuName,address,stuPhone) values('谢小华','深圳','13787075550');
insert into student(stuName,address,stuPhone) values('王建明','厦门','13788853690');
insert into student(stuName,address,stuPhone) values('秦一生','北京','13788689236');
insert into student(stuName,address,stuPhone) values('田翠林','杭州','13787655150');
insert into student(stuName,address,stuPhone) values('陈小明','广州','13787623668');4、编写PageDAO类,该类用于从数据库中取出所有的学员信息,把这些学员信息封装成一个Student 对象并将
其放入List中。
Java代码
package org.hnylj.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class PageDAO {
private Connection conn ;
private PreparedStatement pstmt ;
private ResultSet rs ;
private static final String DRIVER = "com.mysql.jdbc.Driver" ;
private static final String URL = "jdbc:mysql://localhost:3306/page" ;
private static final String USERNAME = "root" ;
private static final String PASSWORD = "123" ;
private Student student ;
//数据库连接
public synchronized Connection getConnection () {
try {
Class.forName (DRIVER) ;
conn = DriverManager.getConnection (URL,USERNAME,PASSWORD) ;
} catch (ClassNotFoundException e) {
e.printStackTrace () ;
return null ;
} catch (SQLException e) {
e.printStackTrace () ;
return null ;
}
return conn ;
}
//分页查询
public List<Student> queryByPage (int pageSize, int pageNow) {
List<Student> list = new ArrayList<Student> () ;
try {
if (this.getConnection()!=null && pageSize>0 && pageNow>0) {
pstmt = this.getConnection().prepareStatement(
"select * from student order by stu_id limit "+(pageNow*pageSize-pageSize)+","+pageSize
);
rs = pstmt.executeQuery () ;
while (rs.next()) {
student = new Student () ;
student.setStu_id (rs.getInt(1)) ;
student.setStuName (rs.getString(2)) ;
student.setAddress (rs.getString(3)) ;
student.setStuPhone (rs.getString(4)) ;
list.add (student) ;
}
}
} catch(SQLException e) {
e.printStackTrace() ;
}
return list ;
}
}
package org.hnylj.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class PageDAO {
private Connection conn ;
private PreparedStatement pstmt ;
private ResultSet rs ;
private static final String DRIVER = "com.mysql.jdbc.Driver" ;
private static final String URL = "jdbc:mysql://localhost:3306/page" ;
private static final String USERNAME = "root" ;
private static final String PASSWORD = "123" ;
private Student student ;
//数据库连接
public synchronized Connection getConnection () {
try {
Class.forName (DRIVER) ;
conn = DriverManager.getConnection (URL,USERNAME,PASSWORD) ;
} catch (ClassNotFoundException e) {
e.printStackTrace () ;
return null ;
} catch (SQLException e) {
e.printStackTrace () ;
return null ;
}
return conn ;
}
//分页查询
public List<Student> queryByPage (int pageSize, int pageNow) {
List<Student> list = new ArrayList<Student> () ;
try {
if (this.getConnection()!=null && pageSize>0 && pageNow>0) {
pstmt = this.getConnection().prepareStatement(
"select * from student order by stu_id limit "+(pageNow*pageSize-pageSize)+","+pageSize
);
rs = pstmt.executeQuery () ;
while (rs.next()) {
student = new Student () ;
student.setStu_id (rs.getInt(1)) ;
student.setStuName (rs.getString(2)) ;
student.setAddress (rs.getString(3)) ;
student.setStuPhone (rs.getString(4)) ;
list.add (student) ;
}
}
} catch(SQLException e) {
e.printStackTrace() ;
}
return list ;
}
}
5、由于要对数据库中的学员信息进行封装,所以需要编写一个JavaBean,即Student类:
Java代码
package org.hnylj.util;
public class Student {
private int stu_id ;
private String stuName ;
private String address ;
private String stuPhone ;
public Student () {
}
public int getStu_id () {
return stu_id ;
}
public void setStu_id (int stu_id) {
this.stu_id = stu_id ;
}
public String getStuName () {
return stuName ;
}
public void setStuName (String stuName) {
this.stuName = stuName ;
}
public String getAddress () {
return address ;
}
public void setAddress (String address) {
this.address = address ;
}
public String getStuPhone () {
return stuPhone ;
}
public void setStuPhone (String stuPhone) {
this.stuPhone = stuPhone ;
}
}
package org.hnylj.util;
public class Student {
private int stu_id ;
private String stuName ;
private String address ;
private String stuPhone ;
public Student () {
}
public int getStu_id () {
return stu_id ;
}
public void setStu_id (int stu_id) {
this.stu_id = stu_id ;
}
public String getStuName () {
return stuName ;
}
public void setStuName (String stuName) {
this.stuName = stuName ;
}
public String getAddress () {
return address ;
}
public void setAddress (String address) {
this.address = address ;
}
public String getStuPhone () {
return stuPhone ;
}
public void setStuPhone (String stuPhone) {
this.stuPhone = stuPhone ;
}
}至此底层的代码就写好了。接下来我们需要编写web层的代码。
6、编写web层的jsp文件,分别有index.jsp,show.jsp和error.jsp,其代码分别如下:
Java代码
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Struts2实现分页显示</title>
</head>
<body>
<div align="center">
<s:a href="show.action">进入查看学员列表</s:a>
</div>
</body>
</html>
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Struts2实现分页显示</title>
</head>
<body>
<div align="center">
<s:a href="show.action">进入查看学员列表</s:a>
</div>
</body>
</html>Java代码
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Struts2实现分页显示</title>
</head>
<body>
<div align="center">
<table border="1">
<tr>
<th>学号</th>
<th>姓名</th>
<th>地址</th>
<th>电话</th>
</tr>
<s:iterator value="students">
<tr>
<td><s:property value="stu_id"/></td>
<td><s:property value="stuName"/></td>
<td><s:property value="address"/></td>
<td><s:property value="stuPhone"/></td>
</tr>
</s:iterator>
</table>
<s:url id="url_pre" value="show.action">
<s:param name="pageNow" value="pageNow-1"></s:param>
</s:url>
<s:url id="url_next" value="show.action">
<s:param name="pageNow" value="pageNow+1"></s:param>
</s:url>
<s:a href="%{url_pre}">上一页</s:a>
<s:iterator value="students" status="status">
<s:url id="url" value="show.action">
<s:param name="pageNow" value="pageNow"/>
</s:url>
</s:iterator>
<s:a href="%{url_next}">下一页</s:a>
</div>
</body>
</html>
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Struts2实现分页显示</title>
</head>
<body>
<div align="center">
<table border="1">
<tr>
<th>学号</th>
<th>姓名</th>
<th>地址</th>
<th>电话</th>
</tr>
<s:iterator value="students">
<tr>
<td><s:property value="stu_id"/></td>
<td><s:property value="stuName"/></td>
<td><s:property value="address"/></td>
<td><s:property value="stuPhone"/></td>
</tr>
</s:iterator>
</table>
<s:url id="url_pre" value="show.action">
<s:param name="pageNow" value="pageNow-1"></s:param>
</s:url>
<s:url id="url_next" value="show.action">
<s:param name="pageNow" value="pageNow+1"></s:param>
</s:url>
<s:a href="%{url_pre}">上一页</s:a>
<s:iterator value="students" status="status">
<s:url id="url" value="show.action">
<s:param name="pageNow" value="pageNow"/>
</s:url>
</s:iterator>
<s:a href="%{url_next}">下一页</s:a>
</div>
</body>
</html>Java代码
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>发生错误</title>
</head>
<body>
业务逻辑发生异常,请稍候再试。。。。。。
</body>
</html>
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>发生错误</title>
</head>
<body>
业务逻辑发生异常,请稍候再试。。。。。。
</body>
</html>7、编写struts2的action来拦截用户的请求:
Java代码
package org.hnylj.web;
import java.util.List;
import org.hnylj.util.PageDAO;
import org.hnylj.util.Student;
import com.opensymphony.xwork2.ActionSupport;
public class ShowAction extends ActionSupport {
private List<Student> students ;
private int pageNow = 1 ; //初始化为1,默认从第一页开始显示
private int pageSize = 5 ; //每页显示5条记录
private PageDAO pageDAO = new PageDAO () ;
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
public int getPageNow() {
return pageNow;
}
public void setPageNow(int pageNow) {
this.pageNow = pageNow;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public String execute() throws Exception {
students = pageDAO.queryByPage(pageSize, pageNow) ;
return SUCCESS ;
}
}
package org.hnylj.web;
import java.util.List;
import org.hnylj.util.PageDAO;
import org.hnylj.util.Student;
import com.opensymphony.xwork2.ActionSupport;
public class ShowAction extends ActionSupport {
private List<Student> students ;
private int pageNow = 1 ; //初始化为1,默认从第一页开始显示
private int pageSize = 5 ; //每页显示5条记录
private PageDAO pageDAO = new PageDAO () ;
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
public int getPageNow() {
return pageNow;
}
public void setPageNow(int pageNow) {
this.pageNow = pageNow;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public String execute() throws Exception {
students = pageDAO.queryByPage(pageSize, pageNow) ;
return SUCCESS ;
}
}8、配置struts.xml文件,即action和响应结果页面之间的映射:
Java代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="struts2" namespace="/" extends="struts-default">
<action name="show" class="org.hnylj.web.ShowAction">
<result name="success">show.jsp</result>
<result name="error">error.jsp</result>
</action>
</package>
</struts>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="struts2" namespace="/" extends="struts-default">
<action name="show" class="org.hnylj.web.ShowAction">
<result name="success">show.jsp</result>
<result name="error">error.jsp</result>
</action>
</package>
</struts>至此所有的工作已经完成,接下来部署整个web工程到tomcat的webapps目录下,启动tomcat,在浏览器地址栏输入 http://localhost:8080/项目名称/index.jsp,回车即可看到一个链接,点击该链接即可看到一个可以进行上一页和下一页的学员信息列表。
- struts2标签经典分页.rar (3.8 KB)
- 下载次数: 23
发表评论
-
Java MVC框架性能比较 jsp、struts1、struts2、springmvc3
2013-10-30 17:41 2283关键字:Java MVC框架性能比较 jsp、struts1 ... -
struts 路径通配符使用
2011-09-22 09:48 1208关键字 :struts 路径通配符使用 一、struts ... -
struts2中获取servlet相关对象的方法
2011-04-30 01:31 1349struts2提供了在Action类中获取servlet相关对 ... -
在eclipse中使用svn获取struts2源码方法
2011-04-30 00:11 2708使用SVN获取struts2源码:URL为:http:// ... -
Filter过滤器只过滤jsp文件不过滤action请求解决方案
2011-04-17 03:56 2182解决办法:在web.xml中将filter的配置放在str ... -
struts2 拦截所有action相关配置
2011-04-17 03:14 1557<package name="global ... -
struts2之配置文件通配符
2011-03-27 00:15 1605关键字:struts2配置文件通配符。 请看如下strut ... -
struts2使用拦截器进行粗粒度的权限管理
2010-11-21 01:31 1801使用拦截器进行粗粒度的权限管理 1. 首先要在st ... -
Struts2中使用validation框架验证数据
2010-11-21 01:29 1369Struts2中使用validation框架验证数据 Str ... -
struts2数据校验
2010-10-20 23:44 1382struts2的核心是从webwork ...
相关推荐
总的来说,Struts2的分页实现需要结合数据库操作、Action控制和前端展示三方面的工作。理解这个过程对于Java Web开发者来说是至关重要的,它可以帮助你更好地处理大数据量的展示,提供更加友好的用户界面。通过实践...
用Struts2+mysql实现的简单信息录入,分页查询
根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要探讨的是如何在Struts2与Hibernate框架结合下实现分页功能。接下来将详细解析Struts2与Hibernate如何协作完成这一任务。 ### Struts2与Hibernate...
在探讨Struts2框架下的增删改查以及...以上解析涵盖了Struts2框架中增删改查及分页查询的主要实现方式,通过JSP页面、Action类和配置文件三者的协作,我们可以高效地构建出具有动态数据展示和交互能力的Web应用程序。
本篇文章将深入探讨Struts2框架下的分页实现及其重要知识点。 1. **Struts2框架基础** Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它提供了强大的控制层支持,简化了开发过程。在处理...
通过自定义分页标签,Struts2开发者能够轻松实现定制化分页,并保持代码的整洁和可维护性。这种方式避免了在多个JSP页面中重复编写分页逻辑,提高了代码复用性,同时降低了出错的可能性。 总之,本资源提供的Struts...
在分页实现中,我们主要利用 `<s:bean>` 创建 `org.apache.struts2.util.Counter` 类型的 bean 来控制循环范围。 #### 三、`<s:bean>` 标签的基本用法 `<s:bean>` 标签的基本语法如下: ```xml ... ``` - *...
下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库...
本资源通过Struts框架实现了分页功能,主要涉及到以下几个关键知识点: 1. **MVC设计模式**:MVC模式将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。模型负责处理业务逻辑,视图...
1. **Struts2分页实现原理**: Struts2的分页主要通过拦截器和自定义标签来完成。拦截器负责计算总页数和当前页的数据,自定义标签则用于在JSP页面上展示分页链接。用户点击分页链接时,发送请求到服务器,拦截器...
本篇文章将详细讲解如何利用Struts2和JSP实现前端的分页功能。 分页是Web应用中常见的需求,尤其在处理大量数据时,能够帮助用户更高效地浏览和管理数据。Struts2通过Action类、结果类型配置以及拦截器等机制,可以...
在本文中,我们将深入探讨Struts2分页技术的实现原理、应用方法以及与Hibernate框架的结合。 首先,Struts2作为一款基于MVC模式的Java Web框架,它提供了丰富的拦截器(Interceptor)和动作(Action)机制,使得...
### Struts2分页实现详解 #### 一、概述 在Web开发中,为了提高用户体验并减轻服务器压力,分页是一种常见的技术手段。Struts2作为一款流行的企业级Java Web框架,提供了丰富的功能来帮助开发者实现分页效果。本文...
本文将详细介绍Struts2实现分页效果的第二种方法。 在Struts2中,实现分页通常涉及以下几个关键步骤: 1. **模型(Model)**:首先,我们需要一个实体类来存储待分页的数据,例如`User`。然后,创建一个`PageBean`类...
3. **分页实现**: - 分页通常涉及两个主要部分:前端展示和后端处理。前端负责展示分页导航,而后端负责根据前端传来的参数执行数据库查询。 - 使用Hibernate,可以通过设置Query的`setFirstResult()`和`...
在这个“Struts2 完美实现 标签分页”的项目中,我们主要关注如何在Struts2框架下实现高效的分页功能,并利用自定义标签来提供友好的用户界面。 分页是Web应用中常见的需求,它有助于提高用户体验,特别是当处理...
Struts2.0 是一个流行的Java Web开发框架,它提供了一种组织和控制MVC(Model-...同时,随着技术的发展,现代的Web应用可能更倾向于使用ORM框架(如Hibernate)和前端分页库(如jQuery DataTables)来简化分页实现。
6. **拦截器(Interceptor)**:Struts2的拦截器可以用来增强Action的处理逻辑,例如实现通用的分页功能。你可以创建一个分页拦截器,自动计算总页数,设置Action中的分页对象等。 7. **JSP/Freemarker标签库**:在...
### Struts2分页实现细节 在具体实现上,Struts2的分页功能可以结合拦截器、Action以及自定义的Taglib来增强其灵活性和可维护性。 - **拦截器**:可以创建自定义拦截器来处理分页相关的请求参数,如页码、每页条数...