Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 368|回复: 0

[struts学习]struts中的分页实例

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-11 00:57:29 | 显示全部楼层 |阅读模式
    这仅是一个入门实例,简洁实用,从网上整理而来,供参考。这里仅列出部分文件,
    其它文件、数据库及目录结构请从本站下载。
    一、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=""/>条记录,共<c:out value=""/>页  跳到<input type="text"  name="go" size="3" maxlength="30" >
    <input type="submit" value="go" >
    </form>
               

    OK!!!!
    五、测试,请下载本实例的目录结构TestPage,放入tomcat的webapps下,在浏览器中输入:
         http://127.0.0.1:8080/TestPage/page.do

    源码下载:http://file.javaxxz.com/2014/10/11/005725078.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-26 13:16 , Processed in 0.501742 second(s), 50 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表