当前位置: 首页 > news >正文

Struts分页

http://www.javaresearch.org/article/41464.htm

Struts分页显示
s_ongfei 原创   更新:2005-11-12 12:50:55  版本: 1.0(我心依旧)   
Struts分页显示      说道Struts自然是不能离开MVC模式,分页显示也是如此.我不知道我的算法是不是算好的,也希望看过的朋友能发表一下自己的看法,下面简单阐述一下主要的开发思路:  1)建立适当的模型组件,对应你要查询数据库中的表,这部分由熟悉的JavaBean来充当.并在其中建立数据库查询方法,该方法需要一个java.sql.Conntection类型的参数,并返回一个ArrayList,在本例中为Book.java,另外还有一个数据库连接的Bean是SqlBean.java. 2)建立分页所需要的模型组件,也是用JavaBean,通过Book提供的ArrayList来构造,这里用的是PageBean.java. 3)建立控制器组件,这部分由Struts的Action来实现,主要负责实例化Book,并利用返回的ArrayList对象,构造PageBean,以及接收由视图传递来的action参数,从而在PageBean对象中调用不同的方法,该方法返回Book[]对象,最后将Book[]和PageBean放入到request中.本Action为PageListAction.java. 4)建立视图组件,这部分JSP来实现,为了不出现JAVA代码,使用Struts提供的标签库,主要负责从Request中取出刚刚放入的对象,通过反复调用Action以及action参数,而实现分页显示,是pagetest.jsp. 5)建立并配置struts-config.xml和web.xml文件. 6)建立数据库. 我对代码进行了实现,调试通过.如果大家有更好的用Struts实现分页显示的算法可以给我留言,代码如下: struts-config.xml文件如下,这里配置了一个接收haha的请求提交给PageListAction   <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config>       <action-mappings>        <action path="/haha"                type="page.PageListAction"                scope="request">              <forward name="success" path="/pagetest.jsp"/>        </action>     </action-mappings>    <message-resources parameter="ApplicationResources" /> </struts-config> ………………………………………………………………………………. Web.xml文件如下,这里配置了Web的信息,基本都是由Eclipse完成的   <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">    <servlet>       <servlet-name>action</servlet-name>       <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>       <init-param>          <param-name>application</param-name>          <param-value>ApplicationResources</param-value>       </init-param>       <init-param>          <param-name>config</param-name>          <param-value>/WEB-INF/struts-config.xml</param-value>       </init-param>       <init-param>          <param-name>debug</param-name>          <param-value>2</param-value>       </init-param>       <init-param>          <param-name>detail</param-name>          <param-value>2</param-value>       </init-param>       <load-on-startup>2</load-on-startup>    </servlet>    <servlet-mapping>       <servlet-name>action</servlet-name>       <url-pattern>*.do</url-pattern>    </servlet-mapping>    <welcome-file-list>      <welcome-file>index.jsp</welcome-file>      </welcome-file-list> </web-app> ………………………………………………………………………… 这个是控制器Action类   package page; import org.apache.struts.action.*; import javax.servlet.http.*; import bean.Book; import java.util.*; import javax.sql.DataSource; public class PageListAction extends Action {     ArrayList arrayList=new ArrayList();     PageBean pd;     public ActionForward execute(ActionMapping mapping,                                  ActionForm form,                                  HttpServletRequest request,                                  HttpServletResponse response)     throws Exception {         String action;         action=request.getParameter("action");         if(action==null||action.equals("null")) {             try {                 arrayList=Book.getAllBook();             }             catch(Exception e) {                 e.printStackTrace();             }             pd=new PageBean(arrayList);             Book[] books=pd.getBooks();             request.setAttribute("result",books);             request.setAttribute("page",pd);         }         else {             if(action=="nextPage"||action.equals("nextPage")) {                 Book[] books=pd.getNextPage();                 request.setAttribute("result",books);                 request.setAttribute("page",pd);             }             if(action=="previousPage"||action.equals("previousPage")) {                 Book[] books=pd.getPreviousPage();                 request.setAttribute("resule",books);                 request.setAttribute("page",pd);             }         }         return mapping.findForward("success");     } } …………………………………………………………………………………. 这个是pagebean类,主要负责分页算法和逻辑处理   package page;   import bean.Book; import java.util.*;   public class PageBean {     int currentPage=1;//当前页数     public int totalPages=0;//总页数     int pageRecorders=2;//每页显示数     int totalRows=0;//总数据数     int pageStartRow=0;//每页的起始数     int pageEndRow;//每页的终止数     boolean hasNextPage=false;//是否有下一页     boolean hasPreviousPage=false;//是否有前一页     ArrayList arrayList;     Iterator it;          public PageBean(ArrayList arrayList) {         this.arrayList=arrayList;         totalRows=arrayList.size();         it=arrayList.iterator();         hasPreviousPage=false;         currentPage=1;         if((totalRows%pageRecorders)==0) {             totalPages=totalRows/pageRecorders;         }         else {             totalPages=totalRows/pageRecorders+1;         }         if(currentPage>=totalPages) {             hasNextPage=false;         }         else {             hasNextPage=true;         }         if(totalRows<pageRecorders) {             this.pageStartRow=0;             this.pageEndRow=totalRows;         }         else {             this.pageStartRow=0;             this.pageEndRow=pageRecorders;         }     }          public void setCurrentPage(int currentPage) {         this.currentPage=currentPage;     }     public void setPageRecorders(int pageRecorders) {         this.pageRecorders=pageRecorders;     }     public void setHasNextPage(boolean hasNextPage) {         this.hasNextPage=hasNextPage;     }     public void setHasPreviosPage(boolean hasPreviosPage) {         this.hasPreviousPage=hasPreviousPage;     }       public String getCurrentPage() {         return this.toString(currentPage);     }     public String getTotalPages() {         return this.toString(totalPages);     }     public String getTotalRow() {         return this.toString(totalRows);     }     public int getPageRecorders() {         return pageRecorders;     }     public int getPageEndRow() {         return pageEndRow;     }     public int getPageStartRow() {         return pageStartRow;     }     public boolean isHasNextPage() {         return hasNextPage;     }     public boolean isHasPreviousPage() {         return hasPreviousPage;     }          public Book[] getNextPage() {         currentPage=currentPage+1;         if((currentPage-1)>0) {             hasPreviousPage=true;         }         else {             hasPreviousPage=false;         }         if(currentPage>=totalPages) {             hasNextPage=false;         }         else {             hasNextPage=true;         }         Book[] books=getBooks();         return books;     }          public Book[] getPreviousPage() {         currentPage=currentPage-1;         if(currentPage==0) {             currentPage=1;         }         if(currentPage>=totalPages) {             hasNextPage=false;         }         else {             hasNextPage=true;         }         if((currentPage-1)>0) {             hasPreviousPage=true;         }         else {             hasPreviousPage=false;         }         Book[] books=getBooks();         return books;     }          public Book[] getBooks() {         if(currentPage*pageRecorders<totalRows) {             pageEndRow=currentPage*pageRecorders;             pageStartRow=pageEndRow-pageRecorders;         }         else {             pageEndRow=totalRows;             pageStartRow=pageRecorders*(totalPages-1);         }         Book[] books=new Book[pageEndRow-pageStartRow+1];         int j=0;         for(int i=pageStartRow;i<pageEndRow;i++) {             Book book=(Book)arrayList.get(i);             books[j++]=book;         }         return books;     }          public String toString(int temp) {         String str=Integer.toString(temp);         return str;     } } ………………………………………………………………………………. Book类,负责查询数据库,把结果放到一个ArrayList中   package bean;   import java.sql.*; import java.util.ArrayList;     public class Book {          private String bookname;     private String author;     private String price;          public Book(String name,String author,String price) {         this.bookname=name;         this.author=author;         this.price=price;     }          public void setBookname(String bookname) {         this.bookname=bookname;     }     public void setAuthor(String Author) {         this.author=author;     }     public void setPrice(String price) {         this.price=price;     }          public String getBookname() {         return bookname;     }     public String getAuthor() {         return author;     }     public String getPrice() {         return price;     }          public static ArrayList getAllBook() throws Exception {         String sql="select * from book";         SqlBean sq=new SqlBean();         ArrayList arrayList=new ArrayList();         try         {             ResultSet resultSet=sq.select(sql);             while(resultSet.next()) {                 String name=resultSet.getString("name");                 String author=resultSet.getString("author");                 String price=resultSet.getString("price");                 Book book=new Book(name,author,price);                 arrayList.add(book);             }             resultSet.close();         }         catch(SQLException e)         {             System.out.println("数据库错误"+e.toString());         }         return arrayList;     } } ……………………………………………………………………………….. 这个是SqlBook,负责和数据库建立一个连接的Bean   package bean;   import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;   public class SqlBean {     String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=eBookStore";     Connection con=null;     Statement sta=null;     public SqlBean() {         try         {             Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");             con=DriverManager.getConnection(url,"sa","");             sta=con.createStatement();         }         catch(Exception e)         {             System.out.println("连接错误"+e.toString());         }     }          public ResultSet select(String selects) throws Exception     {         return sta.executeQuery(selects);     } } ………………………………………………………………………… 这个是负责显示分页的JSP页.pagetest.jsp   <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> <%@ page contentType="text/html;charset=gb2312"%>   <html:html locale="true">   <head>   </head>      <body>     <table border="1">       <tr><th>书名</th><th>作者</th><th>价格</th></tr>       <logic:present name="result">         <logic:iterate id="book" name="result" type="bean.Book">           <logic:present name="book">             <tr>               <td><bean:write name="book" property="bookname"/></td>               <td><bean:write name="book" property="author"/></td>               <td><bean:write name="book" property="price"/></td>             </tr>           </logic:present>         </logic:iterate>       </logic:present>     </table>          <logic:present name="page">       <logic:equal name="page" property="hasNextPage" value="true">         <html:link page="/haha.do?action=nextPage">nextPage</html:link>       </logic:equal>       <logic:equal name="page" property="hasPreviousPage" value="true">         <html:link page="/haha.do?action=previousPage">previousPage</html:link>       </logic:equal>                     共分<bean:write name="page" property="totalPages"/>页显示,当前是                  <bean:write name="page" property="currentPage"/>页.     </logic:present>   </body> </html:html> ………………………………………………………………………………… 这个是首页的JSP页面,只有一个连接.提交一个haha.do的请求   <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> <%@ page contentType="text/html;charset=gb2312" language="java"%>   <html:html>   <head>   </head>   <body>     <html:link action="haha.do">GotoPage</html:link>   </body> </html:html>

相关文章:

  • java操作xml编程实例(sax)
  • ajax验证用户名是否可用
  • 正则表达式限制表单文本框输入内容
  • 正则表达式详解
  • js中innerHTML,innerText,outerHTML的用法与区别
  • Struts防止重复提交
  • html:multibox 的使用
  • Ie和firefox的Js区别
  • 软件工程师不可不知的10个概念
  • MySQL的数据类型
  • java.sql.date 与 java.util.date
  • JAVA日期类型
  • jsp页面添加行
  • 放大镜
  • 分页css样式
  • [deviceone开发]-do_Webview的基本示例
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • C# 免费离线人脸识别 2.0 Demo
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • ViewService——一种保证客户端与服务端同步的方法
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 程序员最讨厌的9句话,你可有补充?
  • 初识 webpack
  • 技术胖1-4季视频复习— (看视频笔记)
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • $.ajax()方法详解
  • $.ajax,axios,fetch三种ajax请求的区别
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (待修改)PyG安装步骤
  • (离散数学)逻辑连接词
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (十一)手动添加用户和文件的特殊权限
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)80c52学习之旅-起始篇
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • ... 是什么 ?... 有什么用处?
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET学习教程二——.net基础定义+VS常用设置
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @private @protected @public
  • @RequestMapping处理请求异常
  • [20171106]配置客户端连接注意.txt
  • [⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记
  • [acwing周赛复盘] 第 94 场周赛20230311
  • [BZOJ] 2006: [NOI2010]超级钢琴
  • [C/C++]数据结构 堆的详解