struts2 分页



<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="165" valign="top" width="342" align="left">
<p>
&nbsp;&nbsp;&nbsp;在开发web程序时,从数据库中取出来的数据一般都要分页显示在页面上,分页显示的方法非常多,有人写自定义标签,用自己写的标签进行分页显示,我个人觉得这是一种比较好的方法。下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库中查询出来并进行了封装的那些对象,然后通过Struts2的标签遍历List里的每个对象,并把这些对象里所包含的属性取出来展现在页面上。下面是具体的步骤:
</p>
<p>
所用工具:JDK1.6 + MyEclipse6.0 + Tomcat6.0 + MySQL5.0 + struts 2.0.11
</p>
<p>
1、新建一个web工程,导入struts2中相应的jar包和mysql数据驱动包。
</p>
<p>
2、编写web.xml文件,其代码如下:
</p>
</td>
<td valign="top" width="342">
<div align="center">
<br />

</div>
</td>
</tr>
</tbody>
</table>
&nbsp; 
<pre class="xml" name="code">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;web-app version=&quot;2.4&quot; xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot;
xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot;&gt;
&lt;filter&gt;
&lt;filter-name&gt;struts2&lt;/filter-name&gt;
&lt;filter-class&gt;
org.apache.struts2.dispatcher.FilterDispatcher
&lt;/filter-class&gt;
&lt;/filter&gt;
&lt;filter-mapping&gt;
&lt;filter-name&gt;struts2&lt;/filter-name&gt;
&lt;url-pattern&gt;/*&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;
&lt;welcome-file-list&gt;
&lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;
&lt;/welcome-file-list&gt;
&lt;/web-app&gt;
                  </pre>
<p>
3、建一个数据库表,用于保存学员信息:
</p>
<pre class="sql" name="code">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');</pre>
<p>
4、编写PageDAO类,该类用于从数据库中取出所有的学员信息,把这些学员信息封装成一个Student对象并将<br />
&nbsp;&nbsp; 其放入List中。
</p>
<pre class="java" name="code">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 = &quot;com.mysql.jdbc.Driver&quot; ;
private static final String URL = &quot;jdbc:mysql://localhost:3306/page&quot; ;
private static final String USERNAME = &quot;root&quot; ;
private static final String PASSWORD = &quot;123&quot; ;

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&lt;Student&gt; queryByPage (int pageSize, int pageNow) {
  List&lt;Student&gt; list = new ArrayList&lt;Student&gt; () ;
  try {
   if (this.getConnection()!=null &amp;&amp; pageSize&gt;0 &amp;&amp; pageNow&gt;0) {
   pstmt = this.getConnection().prepareStatement(
     &quot;select * from student order by stu_id limit &quot;+(pageNow*pageSize-pageSize)+&quot;,&quot;+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 ;
  }
}
                  </pre>
<p>
5、由于要对数据库中的学员信息进行封装,所以需要编写一个JavaBean,即Student类:
</p>
<pre class="java" name="code">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 ;
}
}</pre>
<p>
至此底层的代码就写好了。接下来我们需要编写web层的代码。
</p>
<p>
6、编写web层的jsp文件,分别有index.jsp,show.jsp和error.jsp,其代码分别如下:
</p>
<pre class="java" name="code">&lt;%@ page language=&quot;java&quot; pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;%@ taglib uri=&quot;/struts-tags&quot; prefix=&quot;s&quot;%&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Struts2实现分页显示&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;div align=&quot;center&quot;&gt;
     &lt;s:a href=&quot;show.action&quot;&gt;进入查看学员列表&lt;/s:a&gt;
  &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<pre class="java" name="code">&lt;%@ page language=&quot;java&quot; pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;%@ taglib uri=&quot;/struts-tags&quot; prefix=&quot;s&quot;%&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;Struts2实现分页显示&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
  &lt;div align=&quot;center&quot;&gt;
  &lt;table border=&quot;1&quot;&gt;
    &lt;tr&gt;
  &lt;th&gt;学号&lt;/th&gt;
  &lt;th&gt;姓名&lt;/th&gt;
  &lt;th&gt;地址&lt;/th&gt;
  &lt;th&gt;电话&lt;/th&gt;
    &lt;/tr&gt;
&lt;s:iterator value=&quot;students&quot;&gt;
  &lt;tr&gt;
     &lt;td&gt;&lt;s:property value=&quot;stu_id&quot;/&gt;&lt;/td&gt;
     &lt;td&gt;&lt;s:property value=&quot;stuName&quot;/&gt;&lt;/td&gt;
     &lt;td&gt;&lt;s:property value=&quot;address&quot;/&gt;&lt;/td&gt;
     &lt;td&gt;&lt;s:property value=&quot;stuPhone&quot;/&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/s:iterator&gt;
  &lt;/table&gt;
     &lt;s:url id=&quot;url_pre&quot; value=&quot;show.action&quot;&gt;
         &lt;s:param name=&quot;pageNow&quot; value=&quot;pageNow-1&quot;&gt;&lt;/s:param&gt;
     &lt;/s:url&gt;
     &lt;s:url id=&quot;url_next&quot; value=&quot;show.action&quot;&gt;
         &lt;s:param name=&quot;pageNow&quot; value=&quot;pageNow+1&quot;&gt;&lt;/s:param&gt;
     &lt;/s:url&gt;  
     &lt;s:a href=&quot;%{url_pre}&quot;&gt;上一页&lt;/s:a&gt;
     
     &lt;s:iterator value=&quot;students&quot; status=&quot;status&quot;&gt;
        &lt;s:url id=&quot;url&quot; value=&quot;show.action&quot;&gt;
            &lt;s:param name=&quot;pageNow&quot; value=&quot;pageNow&quot;/&gt;
        &lt;/s:url&gt;
     &lt;/s:iterator&gt;
     &lt;s:a href=&quot;%{url_next}&quot;&gt;下一页&lt;/s:a&gt; 
  &lt;/div&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre>
<pre class="java" name="code">&lt;%@ page language=&quot;java&quot; pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;发生错误&lt;/title&gt;
  &lt;/head&gt;
  
  &lt;body&gt;
      业务逻辑发生异常,请稍候再试。。。。。。
  &lt;/body&gt;
&lt;/html&gt;</pre>
<p>
7、编写struts2的action来拦截用户的请求:
</p>
<p>
&nbsp;
</p>
<pre class="java" name="code">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&lt;Student&gt; students ;
private int pageNow = 1 ; //初始化为1,默认从第一页开始显示
    private int pageSize = 5 ; //每页显示5条记录
    
private PageDAO pageDAO = new PageDAO () ;

public List&lt;Student&gt; getStudents() {
return students;
}
public void setStudents(List&lt;Student&gt; 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 ;
}
}</pre>
<p>
8、配置struts.xml文件,即action和响应结果页面之间的映射:
</p>
<pre class="java" name="code">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
&lt;!DOCTYPE struts PUBLIC
    &quot;-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&quot;
    &quot;http://struts.apache.org/dtds/struts-2.0.dtd&quot;&gt;
&lt;struts&gt;
&lt;package name=&quot;struts2&quot; namespace=&quot;/&quot; extends=&quot;struts-default&quot;&gt;
&lt;action name=&quot;show&quot; class=&quot;org.hnylj.web.ShowAction&quot;&gt;
&lt;result name=&quot;success&quot;&gt;show.jsp&lt;/result&gt;
&lt;result name=&quot;error&quot;&gt;error.jsp&lt;/result&gt;
&lt;/action&gt;
&lt;/package&gt;
&lt;/struts&gt;</pre>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值