[本站首页] [管理页面] [写新日志] [退出]

朝为田舍郎,暮登天子堂,将相本无种,男儿当自强。
首页(178) Hibernate(10) JAVA(19) Web(15) Struts(7) 口水(9) Ides(18) 其它(51) AJAX(6) database(29) 
Blog信息

blog名称:四裤全输的小窝~~
日志总数:178
评论数量:699
留言数量:198
访问次数:1154622
建立时间:2005年10月29日

Blog内搜索



日志更新

谷歌地图定位偏移解决方法
【转】利用Windows内置的命令作端口
WIN2003服务器安全加固方案
[转]sql server 日期比较、日
MediaCoder 一般参数设置
[转]VMware中创建共享磁盘阵列的方
缓解vss共享文件夹的安全隐患问题(转)
Delphi 中调用JavaScript
微软的官方方法:延长Windows Se
cxGrid 过滤 排序后 取选中记录的

最新评论

回复:谷歌地图定位偏移解决方法
回复:谷歌地图定位偏移解决方法
回复:WIN2003服务器安全加固方案
回复:cxGrid 过滤 排序后 取选中
回复:TreeView 父节点 子节点 
回复:[转]Oracle Instead
回复:DWR 官方下载地址
ugg  boots
回复:cxGrid 过滤 排序后 取选中
回复:DWR 官方下载地址

友情链接

biglin's Blog
NoisyRam's Blog
Stone's Blog
Kevin 的小家
『知』治通鉴

留言板




[Struts][转]解决Struts分页显示
文章收藏,  网上资源,  软件技术,  电脑与网络 四裤全输 发表于 2006/10/23 13:24:00

转自:http://www.micromms.com/?do=fetchByDate&dYear=2006&dMonth=10&dDay=9一 开发环境Elicpse+Struts Studio+SqlServer2000+Tomcat。 二 开发思路既然讲的是Struts,那自然离不了MVC,分页显示也是如此。 1 建立适当的模型组件,对应你要查询数据库中的表。这部分由我们熟悉的javaBean来充当。并在其中建立数据库查询方法,该方法需要一个java.sql.Conntection类型的参数,并返回一个ArrayList。在本例中为 Book.java 2 建立分页所需要的模型组件,也是由javaBean来充当,通过由Book中提供的ArrayList来构造。本例中为 PageBean.java.。 3 建立控制器组件,这部分由Struts 中的Action来实现。主要负责将实例化Book,并利用返回的ArrayList对象,构造PageBean。以及接收由视图传递而来的action 参数。从而在PageBean对象中调用不同的方法,该方法返回Book[] 对象。最后将 Book[]和PageBean放入request中。本例中为PageListAction.java。 4建立视图组件,这部分由jsp来充当,为了不出现java 代码,我们使用Struts提供的标签库,主要负责从request中取出刚刚放入的对象,通过反复调用PageListAction以及action参数,而实现分页显示。本例中为pagetest.jsp.5 建立并配置struts-config.xml。6 建立数据库。 三 实例代码1 Book.java package bean;import java.sql.*;import java.util.ArrayList;/*** @作者 李敏强* Struts分页显示数据Bean,对应数据库中Book表*/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 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; } public static ArrayList getAllBook(Connection connection){String sql="select * from book";ArrayList arrayList = new ArrayList();try{Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSet resultSet = statement.executeQuery(sql); System.out.println("BookBean 数据查询已完成!");while(resultSet.next()){ 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(name,author,price); arrayList.add(book);}connection.close();resultSet.close();}catch(SQLException e){System.out.println("数据库异常"+e.toString());} return arrayList;}} 2 PageBean.javapackage page;import bean.Book;import java.util.*;/*** @作者 李敏强* Struts分页显示逻辑Bean*/public class PageBean { int currentPage=1; //当前页public int totalPages=0; //总页数int pageRecorders=5;//每页5条数据int totalRows=0; //总数据数int pageStartRow=0;//每页的起始数int pageEndRow=0; //每页显示数据的终止数boolean hasNextPage=false; //是否有下一页boolean hasPreviousPage=false; //是否有前一页ArrayList arrayList;Iterator it;public PageBean(){} 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; } } /*** @return Returns the currentPage.*/public String getCurrentPage() {return this.toString(currentPage);}/*** @param currentPage The currentPage to set.*/public void setCurrentPage(int currentPage) {this.currentPage = currentPage;}/*** @return Returns the pageRecorders.*/public int getPageRecorders() {return pageRecorders;}/*** @param pageRecorders The pageRecorders to set.*/public void setPageRecorders(int pageRecorders) {this.pageRecorders = pageRecorders;}/*** @return Returns the pageEndRow.*/public int getPageEndRow() {return pageEndRow;}/*** @return Returns the pageStartRow.*/public int getPageStartRow() {return pageStartRow;}/*** @return Returns the totalPages.*/public String getTotalPages() { return this.toString(totalPages);}/*** @return Returns the totalRows.*/public String getTotalRows() {return this.toString(totalRows);}/*** @return Returns the hasNextPage.*/public boolean isHasNextPage() {return hasNextPage;}/*** @param hasNextPage The hasNextPage to set.*/public void setHasNextPage(boolean hasNextPage) {this.hasNextPage = hasNextPage;}/*** @return Returns the hasPreviousPage.*/public boolean isHasPreviousPage() {return hasPreviousPage;}/*** @param hasPreviousPage The hasPreviousPage to set.*/public void setHasPreviousPage(boolean hasPreviousPage) {this.hasPreviousPage = hasPreviousPage;}public Book[] getNextPage(){ currentPage=currentPage+1;System.out.println("PageBean.getNextPage()正在执行;");System.out.println("参数currentPage="+currentPage); if((currentPage-1)>0){hasPreviousPage=true; }else{hasPreviousPage=false; } if(currentPage>=totalPages){hasNextPage=false; }else{hasNextPage=true;}System.out.println("参数hasNextPage="+hasNextPage);System.out.println("准备执行PageBean.getBooks()");Book[] books=getBooks();this.description(); 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();this.description();return books;} public Book[] getBooks(){System.out.println("pageBean.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]; System.out.println("pageStartRow="+pageStartRow);System.out.println("pageEndRow="+pageEndRow);int j=0; for(int i=pageStartRow;i<pageEndRow;i++){ Book book=(Book)arrayList.get(i); books[j++]=book; }System.out.println("要显示的页面数据已经封装,具体信息如下:");this.description();return books;} public String toString(int temp){String str=Integer.toString(temp);return str;} public void description(){ String description="共有数据数:"+this.getTotalRows()+ "共有页数: "+this.getTotalPages() + "当前页数为:"+this.getCurrentPage()+ " 是否有前一页: "+this.isHasPreviousPage() + " 是否有下一页:"+this.isHasNextPage()+ " 开始行数:"+this.getPageStartRow()+ " 终止行数:"+this.getPageEndRow(); System.out.println(description); }} 3 PageListAction.javapackage page;import org.apache.struts.action.*;import javax.servlet.http.*;import comm.Constants; import bean.Book;import java.util.*;import javax.sql.DataSource;/*** @author 李敏强* Struts分页显示Action*/public class PageListAction extends Action { public PageListAction(){}ArrayList arrayList=new ArrayList();PageBean pb; 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{DataSource datasource=this.getDataSource(request,Constants.DATASOURCE_KEY); arrayList=Book.getAllBook(datasource.getConnection());System.out.println("第一步,数据已经成功传递到Action,action="+action);}catch(Exception e){e.printStackTrace();System.out.println("数据库连接出现异常");} pb=new PageBean(arrayList);Book[] books=pb.getBooks();pb.description();request.setAttribute("result",books);request.setAttribute("page",pb); }else{if(action=="nextPage" || action.equals("nextPage")){System.out.println("参数action="+action);System.out.println("函数pb.getNextPage()准备执行");Book[]books=pb.getNextPage();request.setAttribute("page",pb);request.setAttribute("result",books); }if(action=="previousPage" || action.equals("previousPage")){System.out.println("参数action="+action);System.out.println("函数pb.getPreviouspage()准备执行");Book[] books=pb.getPreviouspage(); request.setAttribute("page",pb);request.setAttribute("result",books); }}return (mapping.findForward("success"));} } 4 pagetest.jsp<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %><%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %><%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %><%@ page contentType="text/html; charset=gb2312" language="java"%> <html:html locale="true"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></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:equal name="page" property="hasNextPage" value="true"><html:link page="/page.do?action=nextPage">nextPage</html:link></logic:equal><logic:equal name="page" property="hasPreviousPage" value="true"><html:link page="/page.do?action=previousPage">PreviousPage</html:link></logic:equal>共有数据总数<bean:write name="page" property="totalRows"/>;共分<bean:write name="page" property="totalPages"/>页,当前是第<bean:write name="page" property="currentPage"/>页</body></html:html> 5 struts-config.xml<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN""http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <struts-config><data-sources><data-source key="dataSource" type="org.apache.commons.dbcp.BasicDataSource"><set-property property="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/><set-property property="url" value="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=eBookStore;SelectMethod=cursor"/><set-property property="username" value="limq"/><set-property property="password" value="1"/><set-property property="maxActive" value="10"/><set-property property="maxWait" value="5000"/><set-property property="defaultAutoCommit" value="true"/><set-property property="defaultReadOnly" value="false"/></data-source></data-sources><form-beans></form-beans><global-forwards></global-forwards><action-mappings><action path="/page" type="page.PageListAction" scope="request"><forward name="success" path="/pagetest.jsp"/></action></action-mappings><controller></controller></struts-config> 6 建立eBookStore数据库,以及表book(name,author,parce);其中数据的配置可以根据你的不同情况在struts-config.xml中而定。 7 Constants.java package comm; /*** this interface provides the constant string for applicator constant*/public class Constants {/*** name of the User Object in HttpSession*/public static String USER_KEY="user";/*** dataSource name*/public static String DATASOURCE_KEY="dataSource";}  


阅读全文(3541) | 回复(1) | 编辑 | 精华

回复:[转]解决Struts分页显示
文章收藏,  网上资源,  软件技术,  电脑与网络 jason(游客)发表评论于2007/3/19 12:29:42

good,真的不错,想想自己开始写分页的时候就知道自己多烂


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.215 second(s), page refreshed 144758500 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号