`
zengjinliang
  • 浏览: 305419 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Jsp+struts分页显示源码

阅读更多
主要有三个文件:show.jsp、ShowAction.java、PageInformation.java

环境是:JDK1.6+mysql5.0+jboss4.0+struts 2.0.11

还需完善的地方:如果没有前一页、后一页,直接把这个链接在页面上屏蔽掉
因为不想在Action里面有太多的链接数据库的代码,所以另外搞了一个PageInformation类,来完成数据库查询工作。

具体代码如下:
package com.ClockWise.ray.jsp;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
/*
* 此类用来完成数据库操作
* */
public class PageInformation {
             private int pageSize;//每一页包含的条目个数
             private int totalRows;//一共有多少行
             private int totalPages;//一共有多少页
             private int currentPage=1;//初始化当前页为第一页
             private boolean hasPrevious = false;//是否有前页,尚未使用,有待完善
             private boolean hasNext = false;//是否有后页,尚未使用,有待完善
             private ArrayList<User> list = new ArrayList<User>();//存放结果的列表
             private DatabaseGeneralServices dgs;//自己写的获得connection的类,可以自己实现
             private Connection conn;          
             private PreparedStatement ps;
             private ResultSet rs;

             public PageInformation(){
             dgs = DatabaseGeneralServices.getInstance();
             pageSize = 20;//每页设置为20条
             totalRows = initRowCount();//得到总行数,比较粗犷,不知有什么灵巧的方法,比如select count(*)...
             totalPages =((totalRows+pageSize)-1)/pageSize;//获得总页数
             initList(1);
               }
            /*
             * 每次查询只取20条,封装为一个列表,返回。参数是当前页号,在构造函数中默认为第一页
      * */
             private void initList(int currentPage){
                 list.removeAll(list);
             conn = dgs.getConnection();
             try{
                        ps = conn.prepareStatement("Select * FROM jsptest LIMIT ?,20");
                        int temp = (currentPage-1)*20;
                        ps.setInt(1, temp);
                        rs = ps.executeQuery();
                        while (rs.next()){
                                 User user = new User();
                                 user.setId(rs.getString(1));
                                 user.setName(rs.getString(2));
                                 list.add(user);
                        }
             }catch(SQLException e){
                        e.printStackTrace();
             }finally{
                        dgs.closeConnection(rs, ps, conn);
             }
             }
             //粗犷的得到行数
             private int initRowCount(){
             conn = dgs.getConnection();
             try{
             ps = conn.prepareStatement("Select * FROM jsptest");
             rs = ps.executeQuery();
             rs.last();
             int result = rs.getRow();
             rs.first();
             return result;
             }catch(SQLException e){
                        e.printStackTrace();
             }finally{
                        dgs.closeConnection(rs, ps, conn);
             }
             return 0;
             }

             //页面调数据的时候,重新发出查询,初始化结果列表
                   public ArrayList<User> getList(int cp) {
                            initList(cp);
                            ArrayList<User> temp = new ArrayList<User>();
                            for(int i =0;i<20;i++){
                                     temp.add(list.get(i));
                            }
                            return temp;
                   }
        //other setters and getters
                   ……


紧接着是Action代码
package com.ClockWise.ray.jsp;
import java.util.ArrayList;
import com.opensymphony.xwork2.ActionSupport;
public class ShowAction extends ActionSupport {
         private int totalPages;
         private boolean hasPre;
         private boolean hasNext;
         private int currentPage=1;
         private ArrayList<User> list;
         //以上几个和PageInformation里面的一一对应
         private String username ="ray";
         private ArrayList list2= new ArrayList();//这个list用来存放下面的页码起始位置
         private PageInformation pi;

         public String execute(){
                   init(currentPage);
                   return SUCCESS;
         }

         private void init(int currentPage){
                   pi = new PageInformation();
                   this.setTotalPages(pi.getTotalPages());
                   this.setHasPre(pi.isHasPrevious());
                   this.setHasNext(pi.isHasNext());
                   this.setList(pi.getList(currentPage));

                   for(int i =currentPage;i<=currentPage+20;i++){
                            Current c = new Current();
                            c.setCurrentPage(i);
                            list2.add(c);
                   }
         }

        public ArrayList<User> getList() {
                   this.setList(pi.getList(currentPage));
                   return list;
         }
//other setters and getters
…….


最后是JSP代码
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<s:form action="ShowAction" method="GET">
   <h1>Welcome <s:property value="username"/></h1><BR>
   <h1>CurrentPage <s:property value="currentPage"/></h1>
   <!--show items of this page-->
   <s:iterator value="list" status="status">
        <s:property value="id"/>
        <s:property value="name"/>
        <BR>
   </s:iterator>

   <!--define the url of the previous page and next page-->
     <s:url id="url_pre" value="ShowAction.action">
         <s:param name="currentPage" value="currentPage-1"></s:param>
     </s:url>
     <s:url id="url_next" value="ShowAction.action">
         <s:param name="currentPage" value="currentPage+1"></s:param>
     </s:url> 

   <!-- use url defined above -->    
   <s:a href="%{url_pre}">Pre</s:a>
   <s:iterator value="list2" status="status">
      <s:url id="url" value="ShowAction.action">
      <!-- pass the currentPage parameter -->
         <s:param name="currentPage" value="currentPage"></s:param>
      </s:url>
      <s:a href="%{url}"><s:property value="currentPage"/> </s:a>
   </s:iterator>
   <s:a href="%{url_next}">Next</s:a>
</s:form>  
</body>
</html>
分享到:
评论

相关推荐

    struts2 +mysql 分页显示 源码

    前端页面通常使用JSP或FreeMarker等模板技术来渲染,通过Struts2的标签库,可以轻松地遍历分页对象中的数据并显示出来。同时,需要提供上一页、下一页等导航链接,这可以通过修改Action中的页码属性,然后重定向或...

    jsp+struts1分页

    "jsp+struts1分页"是一个经典的Java Web开发话题,它涉及到JSP(JavaServer Pages)和Struts1这两个核心技术。在这里,我们将深入探讨如何使用这两者实现一个高效的分页系统。 首先,让我们了解一下JSP。JSP是Java...

    Struts分页显示源码实例

    ### Struts分页显示源码实例解析 #### 一、背景介绍 在Web应用开发中,特别是使用MVC架构的框架如Struts时,分页显示是常见的需求之一。分页不仅能提高用户体验,还能减轻服务器压力。本文档将详细介绍如何在...

    JSP+Struts+HiberNate的博客系统

    开发者可以通过阅读源码,了解如何在实际项目中集成JSP、Struts和Hibernate,以及如何实现分页功能和数据库操作。 总之,这个"JSP+Struts+Hibernate"的博客系统展示了传统的Java Web开发方式,虽然现代Web开发已...

    Struts2+jsp自定义分页组件以及源码

    本教程主要探讨如何在Struts2框架下实现一个基于JSP的自定义分页组件,名为"zoo-paging-1.0.jar"。该组件不仅提供了分页功能,还附带了源代码和示例项目,方便开发者理解和应用。 首先,我们来理解分页的基本概念。...

    struts+hibernate分页技术源码下载

    4. **视图层处理**:在Struts中,Action类会将处理后的数据(分页后的结果集)放入模型对象,然后转发到一个JSP页面进行展示。JSP页面可以通过EL(Expression Language)和JSTL标签库,如`c:forEach`循环遍历分页...

    struts+hibernate分页源码

    1. **Struts分页**: 在Struts中,Action类是业务逻辑的核心,通常会包含处理分页的逻辑。ActionForm则用于封装用户请求参数,如当前页数、每页显示条数等。你可以创建一个专门的分页ActionForm,用于传递和验证这些...

    【原创】struts+mysql+jsp 分页

    总结来说,"struts+mysql+jsp 分页"这个主题涉及到Struts框架中Action类的设计、MySQL数据库的分页查询以及JSP页面的动态渲染。通过合理的代码组织和利用MVC模式,可以实现高效、灵活的分页功能。在实际开发中,...

    struts2+hibernate(文件批量上传至数据库+Ajax分页显示)

    总之,这个项目展示了如何将Struts2和Hibernate结合使用,以实现文件批量上传到数据库以及Ajax分页显示的功能。通过学习这个项目,开发者可以深入理解Java Web开发中的MVC模式、ORM框架以及前端动态加载技术。

    简易的JSP信息管理程序,JSP+MVC+数据分页_增删改查

    这是一个基于Java技术的简易JSP信息管理程序,它采用了经典的MVC(Model-View-Controller)设计模式,并实现了数据的分页、增删改查功能。在这个程序中,JSP作为视图层,负责展示数据;MVC模式帮助分离业务逻辑和...

    Struts2分页源码技术的应用

    总结来说,Struts2分页源码技术涉及到Action的分页参数处理、Service层的SQL构建和执行,以及视图层的数据显示。结合Hibernate框架,我们可以更高效地处理分页查询,提高应用程序的性能。在实际开发中,还需要考虑...

    jsp自定义标签+jpa+hibernate+struts2实现的分页

    总结来说,本项目利用JSP自定义标签实现了用户界面的分页显示,通过JPA和Hibernate进行数据库的分页查询,而Struts2则作为整体架构的控制器,协调各个部分的交互。这样的组合既保证了代码的可维护性,又提高了开发...

    Struts + Hibernate v1.1 分页源码

    总结来说,这个"Struts+Hibernate 分页源码"项目涵盖了以下几个核心知识点: 1. Struts框架的MVC设计模式,包括Action和ActionForm的使用。 2. Hibernate的数据库操作,如Criteria查询和分页实现。 3. 使用...

    struts分页示列源码

    在本示例中,"struts分页示例源码"提供了如何在Struts应用中实现分页功能的具体代码。分页在大数据量展示时尤为重要,它能帮助用户更有效地浏览和管理数据。 分页通常涉及到以下几个关键组件和概念: 1. **Action...

    mysql -struts 分页源码

    本资源"mysql -struts 分页源码"显然关注的是如何在Struts框架下实现MySQL数据的分页显示。分页是一种优化用户界面和提高性能的技术,它允许用户逐步浏览大量数据,而不是一次性加载所有内容。接下来,我们将深入...

    Struts + Hibernate v1.0 分页源码

    在“Struts + Hibernate v1.0 分页源码”这个项目中,开发者已经实现了基于这两者的一个分页功能。分页是大型数据集展示中非常关键的一个特性,它能有效提高用户体验,避免一次性加载大量数据导致页面响应慢或资源...

    JAVA+servlet分页处理,JSP分页超级算法和页面

    视图通常是一个JSP页面,它可以使用Struts标签库来显示数据和构建分页导航。 分页超级算法通常指的是优化分页性能的策略。比如,预加载相邻页的数据可以减少页面跳转时的延迟;使用缓存可以避免重复查询数据库;...

    Struts2 + Spring2 + Hibernate3经典分页(包含java及jsp源码)

    本文将详细介绍如何在Struts2、Spring2和Hibernate3集成环境下实现经典的分页功能,并提供部分Java及JSP源代码示例。 #### 二、核心概念和技术介绍 1. **Struts2**:是一个开源的Web应用框架,它继承了Struts的...

    关于Struts+Hibernate分页的例子

    在这个“关于Struts+Hibernate分页的例子”中,我们可能看到一个集成这两个框架的Web应用,用于展示如何在Struts中利用Hibernate进行数据的分页显示。分页是Web应用中常见的功能,能够帮助用户更有效地浏览大量数据...

Global site tag (gtag.js) - Google Analytics