jsp自定义图文新闻列表标签结合ssh2,带分页功能

jsp自定义图文新闻列表标签结合ssh2,带分页功能(欢迎大家讨论指点,共同进步)

1.service层 (模拟返回数据)

package com.mingda.service.impl;

import java.io.Serializable;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.mingda.dao.NewsDao;
import com.mingda.entity.News;
import com.mingda.service.NewsService;
import com.mingda.util.Pager;

@Service(value = "newsService")
public class NewsServiceImpl implements NewsService {
    /**
     * Logger for this class
     */
    private static final Logger logger = Logger.getLogger(NewsServiceImpl.class);
    private NewsDao newsDao;

    public NewsDao getNewsDao() {
        return newsDao;
    }

    @Autowired
    public void setNewsDao(NewsDao newsDao) {
        this.newsDao = newsDao;
    }



    @Override
    public Pager<News> listNewsByPager(Pager<News> pager) {
        logger.info("查看新闻分页列表!");
        // ==========模拟数据(返回数据总记录数)===============
        int recordCount = 21;
        pager.setRecordCount(recordCount);
        // ==========模拟数据(返回数据总记录数)===============

        // ==========模拟数据(返回当前页数据)===============

        int pageNo = pager.getPageNo();
        int pageSize = pager.getPageSize();
        // 总页数
        int pageCount = (recordCount + pageSize - 1) / pageSize;

        // 页号越界处理
        if (pageNo > pageCount) {
            pager.setPageNo(pageCount);
        }
        if (pageNo < 1) {
            pager.setPageNo(1);
        }
        pageNo = pager.getPageNo();
        List<News> newses = new LinkedList<News>();
        for (int i = (pageNo - 1) * pageSize; i < pageNo * pageSize; i++) {
            News news = new News();
            news.setId("" + i);
            news.setTitle("明大企业集团XXXX" + i);
            news.setContent("明大企业集团战略发展XXXXX" + i);
            news.setHref("news/00" + (i + 1));
            news.setPicUrl("http://y3.ifengimg.com/f04c9b92453d105f/2012/1119/xes_ebec5c179251f3e4f86c56529482f995.jpg");
            news.setCreateTime(new Date());
            newses.add(news);
        }
        // ===========模拟数据(返回当前页数据)========================
        pager.setList(newses);
        return pager;
    }

    

}


2.Action层(接收参数,并转发)

 1 package com.mingda.action;
 2 
 3 import java.util.Date;
 4 import java.util.List;
 5 import java.util.UUID;
 6 
 7 import org.apache.struts2.convention.annotation.Action;
 8 import org.apache.struts2.convention.annotation.Namespace;
 9 import org.apache.struts2.convention.annotation.ParentPackage;
10 import org.apache.struts2.convention.annotation.Result;
11 import org.springframework.beans.factory.annotation.Autowired;
12 
13 import com.mingda.entity.News;
14 import com.mingda.service.NewsService;
15 
16 @ParentPackage("struts-default")
17 @Namespace("/")
18 public class NewsAction {
19     private NewsService newsService;
20     private List<News> newses;
21     private int pageNo;
22 
23     public List<News> getNewses() {
24         return newses;
25     }
26 
27     public NewsService getNewsService() {
28         return newsService;
29     }
30 
31     public int getPageNo() {
32         return pageNo;
33     }
34 
35 
36 
37     @Action(value = "listNewsByPager", results = { @Result(name = "success", location = "/news/index.jsp") })
38     public String listNewsByPager() {
39 
40         return "success";
41     }
42 
43     public void setNewses(List<News> newses) {
44         this.newses = newses;
45     }
46 
47     @Autowired
48     public void setNewsService(NewsService newsService) {
49         this.newsService = newsService;
50     }
51 
52     public void setPageNo(int pageNo) {
53         this.pageNo = pageNo;
54     }
55 
56 }

3.WEB-INF下hao.tld文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0">
 3 <description>自定义标签集合(QQ:1176069533)</description>
 4     <tlib-version>1.0</tlib-version>
 5     <short-name>hao</short-name>
 6     <uri>/hao-tags</uri>
 7     
 8     <!-- 输出分页新闻列表标签  -->
 9     <tag>
10         <description>输出分页新闻列表标签</description>
11         <name>listNewsByPager</name>
12         <tag-class>com.mingda.tag.ListNewsByPagerTag</tag-class>
13         <body-content>scriptless</body-content>
14         <attribute>
15             <name>pageSize</name>
16             <required>true</required>
17             <rtexprvalue>true</rtexprvalue>
18         </attribute>
19         <attribute>
20             <name>pageNo</name>
21             <required>true</required>
22             <rtexprvalue>true</rtexprvalue>
23         </attribute>
24         <attribute>
25             <name>url</name>
26             <required>true</required>
27             <rtexprvalue>true</rtexprvalue>
28             <type>java.lang.String</type>
29         </attribute>
30     </tag>
31 </taglib>

4.界面层引用界面(/news/index.jsp)

 1 <%@ page language="java" pageEncoding="UTF-8"%>
 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 3 <%@taglib prefix="hao" uri="/hao-tags"%>
 4 <!DOCTYPE html>
 5 <html>
 6 <head>
 7 <base href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/">
 8 <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
 9 <meta content="IE=EmulateIE7" http-equiv="X-UA-Compatible">
10 <title>明大企业集团</title>
11 <%@ include file="../include/include2.jsp"%>
12 </head>
13 <body>
14     <%@ include file="../include/header.jsp"%>
15 
16     <div class="main">
17         <div class="bannerWrap"></div>
18         <div class="pagewidth">
19             <div class="positon">
20                 当前位置:<a href="index.jsp" class="postion">首页</a> &gt; <a href="news/index.jsp" class="postion">新闻中心</a> &gt; <a href="news/index.jsp" class="postion">集团新闻</a>
21             </div>
22         </div>
23         <div class="mainWrap pagewidth clearself">
24             <div class="left fl">
25                 <div class="showgood">
26                     <h2>集团新闻</h2>
27                         <hao:listNewsByPager pageNo="${pageNo}" pageSize="3" url="/listNewsByPager"></hao:listNewsByPager>
28                 </div>
29             </div>
30             <%@ include file="../include/right.jsp"%>
31             
32         </div>
33     </div>
34 
35     <%@ include file="../include/footer.jsp"%>
36 </body>
37 </html>

5.分页参数Pager类

 1 package com.mingda.util;
 2 
 3 import java.util.LinkedList;
 4 import java.util.List;
 5 
 6 public class Pager<T> {
 7     // 每页显示记录数(默认10)
 8     private int pageSize = 10;
 9     // 页号(默认1)
10     private int pageNo = 1;
11     // 总记录数(默认0)
12     private int recordCount = 0;
13     // 当前页记录集合
14     private List<T> list = new LinkedList<T>();
15     public int getPageSize() {
16         return pageSize;
17     }
18     public void setPageSize(int pageSize) {
19         this.pageSize = pageSize;
20     }
21     public int getPageNo() {
22         return pageNo;
23     }
24     public void setPageNo(int pageNo) {
25         this.pageNo = pageNo;
26     }
27     public int getRecordCount() {
28         return recordCount;
29     }
30     public void setRecordCount(int recordCount) {
31         this.recordCount = recordCount;
32     }
33     public List<T> getList() {
34         return list;
35     }
36     public void setList(List<T> list) {
37         this.list = list;
38     }
39 }

 

6.效果

7.点击切换效果

 8.分页栏总结:

 a.总页数计算公式:

   总页数=(总记录数+每页显示记录数-1)/ 每页显示记录数

 b.分页栏状态信息:

总页数大于一条件下,总页数小于一特殊处理

第一页(1)

上一页(当前页-1)

下一页(当前页+1)

最末页(总页数)

当前页=1

1<当前页<总页数

当前页=总页数

 

 

 

 

 

 

 

c.分页栏状态跳转信息:

跳转页号<1

跳转第一页

跳转页号>总页数

跳转最后一页

 

 

 

9.整体处理流程图:

 

 

posted @ 2012-11-27 13:20  tyest  阅读(611)  评论(0编辑  收藏  举报