`

Struts2 实现分页(源码)!

阅读更多

          好久没好好写点东西了,最近一直在熟练Struts2的各种特性,和搭建机制。

然后搞了一个Struts2新闻发布,实现了对mysql数据库的增删改查,后台管理员登陆、注册,

数据库连接池,新闻分页,权限控制,xml验证框架。但是现在代码的封装,重用,耦合还是不够好。以后要一步步完善。

回头还打算把JQuery框架和Struts2整合一下,那就帅多了。今天也不打算的瑟太多,就讲讲

我写的Struts2分页吧。

          我的分页比较简单,没有那么复杂,还是先实现再优化丰富吧。网上这方面的例子很多,但是详细的并不多。我打算

整理一下我的实现方案,并且接合Struts2的标签实现分页。提供相关完整代码。望高手指教了。

 

环境:MyEclipse6.5+Mysql5+struts2.0.11

实现分页用到三个类,分别为NewsDao.java(接口),NewsDaoImpl.java(实现),ListAction.java(调用方法)。

当然还有配好连接池的Mysql连接辅助类。在此不做过多介绍。

NewsDao.java

<!---->package com.sy.dao;

import java.util.List;

import com.sy.vo.News;

public interface NewsDao {

        

    
public List<News> queryByPage(int pageSize,int pageNow);
    
    
public int count();
    
    
}

 

NewsDaoImpl.java

<!---->package com.sy.dao.impl;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import com.sy.dao.NewsDao;
import com.sy.util.DataBaseConnection;
import com.sy.util.StringUtil;
import com.sy.vo.News;

public class NewsDaoImpl implements NewsDao {
          
        
        
//获取分页新闻列表
    @SuppressWarnings("unchecked")
    
public List<News> queryByPage(int i,int pageSize){
        List
<News> newss=new ArrayList();
        
        PreparedStatement pstmt    
= null ;
        String sql                
= null ;
        ResultSet rs            
= null ;
        DataBaseConnection dbc    
= null ;
        dbc 
= new DataBaseConnection() ;

        sql 
= "select * from struts2new order by id asc limit " + i + "," + pageSize;
        
try
        {        
            
            pstmt 
= dbc.getConnection().prepareStatement(sql);
            
            rs 
= pstmt.executeQuery() ;
            
while(rs.next())
            {
                News news
=new News();
                news.setId(rs.getInt(
"id"));
                news.setName(rs.getString(
"name"));
                news.setTitle(rs.getString(
"title"));
                news.setDate(rs.getString(
"date"));
                news.setEmail(rs.getString(
"email"));
                news.setContent(rs.getString(
"content"));
                i
++;
                newss.add(news);
            }
            rs.close() ;
            pstmt.close() ;
        }
        
catch(Exception e)
        {
            System.out.println(e) ;
        }
        
finally
        {
            dbc.close();
        }
        
return newss;
    }
             
//查询总行数
    public int count() {
        
int intRowCount = 0;//总行数
        PreparedStatement pstmt    = null ;
        String sql                
= null ;
        ResultSet rs            
= null ;
        DataBaseConnection dbc    
= null ;
        dbc 
= new DataBaseConnection() ;

        sql 
= "select count(id) from struts2new order by id asc";
        
try
        {            
            pstmt 
= dbc.getConnection().prepareStatement(sql);
            rs 
= pstmt.executeQuery();
            rs.next();
//游标指向第一行
            intRowCount=rs.getInt(1);//取得总行数
            rs.close() ;
            pstmt.close() ;
        }
        
catch(Exception e)
        {
            System.out.println(e) ;
        }
        
finally
        {
            dbc.close();
        }
        
return intRowCount;
    }
}

ListAction.java

 

<!---->package com.sy.action;

import java.util.List;

import com.opensymphony.xwork2.ActionSupport;
import com.sy.dao.AdminDao;
import com.sy.dao.NewsDao;
import com.sy.dao.impl.AdminDaoImpl;
import com.sy.dao.impl.NewsDaoImpl;
import com.sy.vo.Admin;
import com.sy.vo.News;

public class ListAction extends ActionSupport {

    
private static final long serialVersionUID = 1L;
        
int i=1;//中间变量
    private int k;//储存最大页面数
    private int pageNow=1//页码数,初始为1
    private int pageSize = 5 ; //页面行数 
    private int intRowCount;//总行数
    private int intPageCount;//总页数
    private Admin admin;
    
private List<Admin> Adminss;
    
private News news;
    @SuppressWarnings(
"unchecked")
    
private List<News> Newss;
    
    
private int id;
    
private int aid;

    
public News getNews() {
        
return news;
    }

    
public void setNews(News news) {
        
this.news = news;
    }

    @SuppressWarnings(
"unchecked")
    
public List<News> getNewss() {
        
return Newss;
    }
    
public void setNewss(List<News> newss) {
        Newss 
= newss;
    }

    
public int getId() {
        
return id;
    }

    
public void setId(int id) {
        
this.id = id;
    }
    
public Admin getAdmin() {
        
return admin;
    }

    
public void setAdmin(Admin admin) {
        
this.admin = admin;
    }

    
public List<Admin> getAdminss() {
        
return Adminss;
    }

    
public void setAdminss(List<Admin> adminss) {
        Adminss 
= adminss;
    }
    
public int getAid() {
        
return aid;
    }

    
public void setAid(int aid) {
        
this.aid = aid;
    }

    
public int getPageNow() {
        
return pageNow;
    }

    
public void setPageNow(int pageNow) {
        
this.pageNow = pageNow;
    }

    
public int getPageSize() {
        
return pageSize;
    }

    
public void setPageSize(int pageSize) {
        
this.pageSize = pageSize;
    }
    
public int getIntRowCount() {
        
return intRowCount;
    }

    
public void setIntRowCount(int intRowCount) {
        
this.intRowCount = intRowCount;
    }

    
public int getIntPageCount() {
        
return intPageCount;
    }

    
public void setIntPageCount(int intPageCount) {
        
this.intPageCount = intPageCount;
    }
    
public int getK() {
        
return k;
    }

    
public void setK(int k) {
        
this.k = k;
    }
@SuppressWarnings(
"unchecked")
    @Override
//显示新闻列表
    public String execute() throws Exception {

        NewsDao npage
=new NewsDaoImpl();
        intRowCount
=npage.count();
        k
=(intRowCount + pageSize - 1/ pageSize;
        intPageCount 
= (intRowCount + pageSize - 1/ pageSize;//计算出总页数
        if(pageNow<1){
            pageNow
=1;
        }
        
        
if(pageNow > intPageCount)
             pageNow
=intPageCount;
             i 
= (pageNow -1)*pageSize;
        NewsDao nlist
=new NewsDaoImpl();
        
if(null!=nlist.queryByPage(i,pageSize)){
        Newss 
= nlist.queryByPage(i,pageSize);
            
return SUCCESS;
        }
else{
            
return "failure";
        }
    }
          ..
}

 

struts.xml

 

<!----><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"
>
<struts>
<package name="news" extends="struts-default">

..
<!-- 查看新闻列表 -->        
        
<action name="list" class="com.sy.action.ListAction">
            
<result>/listNews.jsp</result>
            
<result name="failure">/Showfailure.jsp</result>
        
</action>

</package>
</struts>

 

显示页面listNews.jsp

 

<!----><%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
    
String path = request.getContextPath();
    
String basePath = request.getScheme() + "://"
            
+ request.getServerName() + ":" + request.getServerPort()
            
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    
<head>
        
<base href="<%=basePath%>">
        
<title>My JSP 'index.jsp' starting page</title>
    
</head>
    
<body>



..


        
<center>
        共
<s:property value="intRowCount"/>记录&nbsp;&nbsp;
        第
<s:property value="pageNow"/>&nbsp;&nbsp;
         
<s:url id="url_pre" value="list.action">   
         
<s:param name="pageNow" value="pageNow-1"></s:param>   
     
</s:url>   
  
     
<s:url id="url_next" value="list.action">   
         
<s:param name="pageNow" value="pageNow+1"></s:param>   
     
</s:url>   
     
<s:iterator value="Newss" status="status">   
        
<s:url id="url" value="list.action">   
            
<s:param name="pageNow" value="pageNow"/>   
        
</s:url>   
     
</s:iterator>    
     
<s:if test="pageNow==1">
    
<s:a href="%{url_pre}">最前一页</s:a>
     
</s:if>
     
<s:else>
     
<s:a href="%{url_pre}">上一页</s:a>
     
</s:else>
     
<s:if test="pageNow==k">
     
<s:a href="%{url_next}">最后一页</s:a>
       
</s:if>
       
<s:else>
       
<s:a href="%{url_next}">下一页</s:a>
       
</s:else>
       
</center>
    
</body>
</html>

 

效果:

 

如果有疑问可以提出来,我会尽力答复,如果有更好的想法,欢迎交流,以上源码还不成熟,以后会优化。

 

施杨出品!!!谢绝盗版。转载注明。

分享到:
评论

相关推荐

    STRUTS2+HIBERNATE详细的分页实现代码详细的分页实现代码

    根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要探讨的是如何在Struts2与Hibernate框架结合下实现分页功能。接下来将详细解析Struts2与Hibernate如何协作完成这一任务。 ### Struts2与Hibernate...

    Struts2分页源码技术的应用

    Struts2分页源码技术是Web开发中一个重要的实践,尤其是在处理大数据量时,能够有效地提高用户体验,避免一次性加载过多数据导致页面响应慢。在本文中,我们将深入探讨Struts2分页技术的实现原理、应用方法以及与...

    struts+hibernate分页源码

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

    struts2 +mysql 分页显示 源码

    总的来说,Struts2结合MySQL实现分页显示,涉及到的主要知识点包括:Struts2框架的工作原理、Action的设计与实现、数据库查询(特别是分页查询)、前端页面的渲染以及用户交互设计。通过对这些技术的熟练掌握,...

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

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

    经典struts2分页方法 JAVA_WEB必备分页 源码

    6. **拦截器(Interceptor)**:Struts2的拦截器可以用来增强Action的处理逻辑,例如实现通用的分页功能。你可以创建一个分页拦截器,自动计算总页数,设置Action中的分页对象等。 7. **JSP/Freemarker标签库**:在...

    用struts hibernate 开发的论坛源码!

    在这个名为“bbs_s”的论坛源码中,我们可以推测这是一个使用Struts作为前端控制器,Hibernate作为数据访问层的论坛系统。下面我们将深入探讨这两个框架在项目中的应用及其相关知识点: 1. **Struts框架**: - **...

    Struts2自定义分页标签

    本篇文章将深入探讨如何在Struts2中实现自定义分页标签,以及相关的源码分析和工具使用。 首先,我们需要理解分页的基本原理。分页通常涉及到两个主要部分:服务器端的分页逻辑和客户端的显示。服务器端负责处理...

    struts分页示列源码

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

    Struts + Hibernate v1.1 分页源码

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

    Struts2分页-自定义标签-类似百度分页

    通过对`TagDemo`的分析和学习,你可以更好地理解和应用Struts2自定义标签实现分页功能。 总之,Struts2自定义标签提供了一种灵活的方式,使得开发者能够在JSP页面中方便地实现分页效果。通过自定义标签,我们可以将...

    struts2+Jquery分页插件

    以struts2标签的形式提供分页功能,使用简便,杜绝手工去拼分页标签的样式。目前提供了两种方式,直接原生的jquery调用,使用seajs模块化的方式。 源码地址:http://code.google.com/p/paginationex/source/checkout

    struts2分页实现

    Struts2分页实现是Web开发中常见的需求,它能够帮助用户更有效地浏览大量数据,提高用户体验。在本文中,我们将深入探讨如何在Struts2框架下实现分页功能。 首先,我们需要理解分页的基本原理。分页的核心是将大...

    Struts + Hibernate v1.0 分页源码

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

    mysql -struts 分页源码

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

    struts2 hibernate spring 整合、分页源码

    1. **配置分页插件**:Struts2有许多分页插件,如DisplayTag或PagingAndSortingResult,可以方便地实现分页展示。需要在Struts2的配置文件中引入这些插件,并设置相应的属性。 2. **编写DAO**:在Hibernate中,你...

    Struts分页显示源码实例

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

    Login_ssh_struts2_分页

    总的来说,这个主题涵盖了SSH框架下的登录功能,特别是Struts2中的分页技术,通过查看提供的源码和相关文件,我们可以深入学习到如何在实际项目中实现这一功能。这不仅有助于理解SSH框架的工作原理,还能提升我们在...

    struts自制标签分页封装

    在 Struts 自制标签分页封装的场景中,我们通常是为了提高应用的可维护性和易用性,通过自定义标签来实现页面的动态分页功能。在不依赖 Struts 1.3 框架包的情况下,我们可以自己编写相关的组件来达到相同的效果。 ...

    struts+hibernate分页技术源码下载

    总的来说,这个项目旨在演示如何在Struts和Hibernate的环境中实现高效、可维护的分页功能,这对于任何处理大量数据的Web应用都是必不可少的技术。通过学习和理解这个项目,开发者可以提升在Java Web开发中的技能,...

Global site tag (gtag.js) - Google Analytics