`
qinyaojin
  • 浏览: 4802 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

struts中的分页实例

阅读更多
一、struts-config.xml配置,主要是配数据库,这里用access。
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">


<struts-config>
<data-sources>
   <data-source key="dataSource" type="org.apache.commons.dbcp.BasicDataSource">
            <set-property property="driverClassName" value="sun.jdbc.odbc.JdbcOdbcDriver" />
            <set-property property="url" value="jdbc:odbc:page" />
            <set-property property="username" value="admin" />
            <set-property property="password" value="" />
            <set-property property="maxActive" value="20" />
            <set-property property="maxWait" value="5000" />
            <set-property property="defaultAutoCommit" value="true" />
            <set-property property="defaultReadOnly" value="false" />
            <set-property property="validationQuery" value="SELECT 1" />
            <set-property property="removeAbandoned" value="true" />
            <set-property property="removeAbandonedTimeout" value="120" />            
            <set-property property="encoding" value="false" />            
        </data-source>

</data-sources>
  <form-beans>
  </form-beans>
  <global-forwards>
  </global-forwards>

  <action-mappings>
  <action path="/page" type="page.DataSourceAction" scope="request">
  <forward name="success" path="/pagetest.jsp"/>
  </action>
  </action-mappings>

  <controller>
  </controller>
</struts-config>

二、Action类
用 page.do?start=1 来显示第一个页面  
参数说明:  
  list:信息列表  
  start:开始位置  
  page:每页显示的信息数目  
  pages: 总页数
  previous:上页开始位置  
  next:下页开始位置  

package page;
import org.apache.struts.action.*;
import javax.servlet.http.*;

import java.util.*;
import javax.sql.*;
import java.sql.*;
import bean.*;

public class DataSourceAction extends Action {

public DataSourceAction(){}
  
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {    
  try{
      DataSource ds=this.getDataSource(request,"dataSource");    
      Connection con = ds.getConnection();
      Statement stmt = con.createStatement();
      ResultSet resultSet = stmt.executeQuery("select count(*) from book" );  
      resultSet.next();  
      int data_num=resultSet.getInt(1);  
      int start=1;
      int page = 4; //每页的记录数。
      int pages=data_num/page;
      if(data_num%page!=0)
         pages++;
      if(request.getParameter("start")!=null)
          start = Integer.parseInt(request.getParameter("start"));  
      if(request.getParameter("go")!=null){
                int go = Integer.parseInt(request.getParameter("go"));  
                if(go<=1)
                  start=1;
                else if(go>pages)
                  start=(pages-1)*page+1;
                else  
                   start=(go-1)*page+1;
       }  
      
      String sql = "SELECT * FROM book where id>="+start+" and id<"+(start+page);
      resultSet = stmt.executeQuery(sql);  
      ArrayList list = new java.util.ArrayList();  
      while(resultSet.next())
      {  
        int id=resultSet.getInt("id");
        String name = resultSet.getString("name");
        String author = resultSet.getString("author");
        String price = resultSet.getString("price");
        System.out.println("开始数据封装:name="+name+"author="+author+"price="+price);
        Book book= new Book(id,name,author,price);        
        list.add(book);
      }
    con.close();
    request.setAttribute("pages",new Integer(pages));
    request.setAttribute("list",list);
    //request.setAttribute("start", new Integer(start));  
    request.setAttribute("page", new Integer(page));  

        // if there is a previous page, set the previous variable  
        int previous = start-page;  
        if ( previous>=0 ){  
            request.setAttribute("previous", new Integer(previous));  
            System.out.println ("previous:" + previous);  
        }  

        // if there is a next page, set the next variable  
        int next = start+page;  
        if ( next<=data_num ){  
            request.setAttribute("next", new Integer(next));  
            System.out.println ("next:" + next);  
        }  

   }catch(SQLException e){
          e.printStackTrace();
          System.out.println("数据库连接出现异常");
      }  
    
             return (mapping.findForward("success"));
  }  
}


三、bean类Book.java
package bean;
import java.sql.*;
import java.util.ArrayList;
public class Book {
int id;
private String bookname; //书名
private String author;   //作者
private String price;    //价格
  
public Book(int id,String name,String author,String price){
this.id=id;
this.bookname=name;
this.author=author;
this.price=price;
}

public int getId(){  
        return id;  
    }  

public String getAuthor() {
  return author;
}

public void setAuthor(String author) {
  this.author = author;
}

public String getBookname() {
  return bookname;
}

public void setBookname(String bookname) {
  this.bookname = bookname;
}
  
public String getPrice(){
     return this.price;  
}
  
public void setPrice(String price){
     this.price=price;  
}
  
}
四、分页的jsp页面pagetest.jsp,用了jstl中的c标记。
<%@ page contentType="text/html; charset=gb2312" language="java"%>
<%@ page import="java.util.*" %>
<%@ page import="bean.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>

<logic:iterate id="book" name="list" type="bean.Book">  
            <br><html:link  
                    paramId="id" paramName="book" paramProperty="id"  
                    page="/messagedetail.do">  
                    <bean:write name="book" property="bookname" />  
                </html:link>  
</logic:iterate>  

<form action="/TestPage/page.do">
   <logic:present name="previous">  
            <html:link  
                    paramId="start" paramName="previous"  
                    page="/page.do">  
                    上一页  
                </html:link>  
   </logic:present>  

   <logic:present name="next">  
              <html:link  
                    paramId="start" paramName="next"  
                    page="/page.do">  
                    下一页  
                </html:link>  
   </logic:present>  

每页<c:out value="${page}"/>条记录,共<c:out value="${pages}"/>页  跳到<input type="text"  name="go" size="3" maxlength="30" >
<input type="submit" value="go" >
</form>

分享到:
评论

相关推荐

    struts2 分页 实例

    struts分页实例 struts分页实例

    struts分页实例

    struts分页实例

    struts 2分页 实例

    ### Struts 2 分页实例知识点详解 #### 一、项目环境搭建与配置 1. **新建Web项目**: - 使用Eclipse IDE创建一个新的Web项目。 - 项目名称可以自定义,例如命名为“Struts2Pagination”。 2. **导入Struts 2 ...

    JSP JDBC WEB STRUTS 分页综合实例8

    在这个实例中,Struts可能负责处理用户的请求,如翻页操作,协调JSP和JDBC之间的通信,以及管理分页所需的控制器逻辑。 【分页】 分页是一种常见的数据展示策略,尤其在大数据量的情况下,它允许用户逐页浏览而不是...

    struts hibernate 分页实例

    使用MSSQL2000,下面是表的脚本 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Student]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[Student] GO &lt;br&gt;...

    struts2分页代码的示例

    下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库...

    JSP JDBC WEB STRUTS 分页综合实例3

    在这个实例中,我们将探讨如何将这些技术有效地整合在一起,为用户提供一个高效、用户友好的Web应用。 【描述】在描述中,我们看到"JSP JDBC WEB STRUTS 分页综合实例3"暗示了一个多层架构的应用程序。这个项目可能...

    JSP JDBC WEB STRUTS 分页综合实例7

    在JSP分页实例中,JDBC用于与数据库进行交互,例如执行SQL查询以获取指定页码的数据,以及计算总记录数来确定总页数。开发者可能会使用PreparedStatement来防止SQL注入,并通过ResultSet来处理查询结果。 【WEB】 ...

    JSP JDBC WEB STRUTS 分页综合实例1

    在分页实例中,Struts可以管理请求和响应,控制业务逻辑流程。Action类负责处理用户请求,调用DAO(Data Access Object)层的方法来执行JDBC查询,然后将结果传递给JSP页面进行渲染。 **分页实现步骤:** 1. **...

    JSP JDBC WEB STRUTS 分页综合实例4

    在本实例中,JSP将作为用户界面与后端交互的桥梁。 JDBC则是Java平台的标准接口,用于连接数据库。通过JDBC,开发者能够执行SQL语句,进行数据的增删改查操作。在分页场景下,JDBC将被用来执行特定的SQL查询,获取...

    JSP JDBC WEB STRUTS 分页综合实例6

    在分页实例中,Struts负责处理用户请求,调度控制流,并将数据模型绑定到视图(JSP页面)。开发者通常会定义Action类,该类处理请求并调用业务逻辑,然后通过值栈将结果传递给JSP。 **分页实现的关键步骤:** 1. *...

    JSP JDBC WEB STRUTS 分页综合实例5

    在这个"JSP JDBC WEB STRUTS 分页综合实例5"中,我们可以推测开发者可能创建了一个包含JSP、JDBC和Struts技术的Web应用,用于展示和管理大量数据。这个应用可能包括以下部分: 1. **前端界面**:使用JSP创建用户...

    JSP JDBC WEB STRUTS 分页综合实例2

    在本实例中,JSP将作为用户界面的展示层,负责接收用户请求并呈现数据。 JDBC则是Java与数据库交互的标准接口,它为开发者提供了连接、查询、更新数据库的能力。在分页系统中,JDBC用于连接数据库,执行SQL查询以...

    struts+hibernate的jsp分页实例

    本人用struts+hibernate写的分页,有详细的注解,方便新手学习,在jsp中实现首页下一页上一页末页功能.index.jsp控制showlist.jsp页面中每页显示的信息条数,本实例在xp+tomcat5.5验证通过.数据库使用的sql2000中的pubs...

    struts+hibernate 分页实例

    在分页实例中,这两个框架通常结合使用,以提供高效且用户友好的数据浏览体验。分页是Web应用中常见的功能,它允许用户逐步浏览大量数据,而不会一次性加载所有内容,从而提高性能和用户体验。 在Struts中,分页...

    jsp +struts 分页经典

    在IT行业中,JSP(JavaServer Pages)和Struts框架是开发Web应用程序的常用技术,尤其在企业级应用中占据重要地位。...同时,这种分页经典实例也为我们提供了一个学习和理解MVC架构以及Struts工作原理的实用示例。

    struts2实现分页

    - **`&lt;s:iterator&gt;`**:遍历 `Counter` 实例中的每个值,通过 `&lt;option&gt;` 标签生成下拉选项,并根据当前页面 `current-1` 设置选中项。 ##### 4.4 复选框分页应用 在处理复选框时,可以利用 `&lt;s:bean&gt;` 控制循环...

    Struts2分页很好的实例

    Struts2分页 很好的实例手把手教你完成

Global site tag (gtag.js) - Google Analytics