闲来无事,自己弄个jsp的分页组件来玩玩,也就能给新手参考参考了 , 老鸟就可以飘过了!!~~~
先上个效果图吧!!~

其实 也就是把jquery分页插件的 样式给弄了过来!~~~~
代码开始:
首先先创建一个页码的实体类
Pager.java
public class Pager {
private int pagesize=5; //每页显示数
private int start=1; //开始条数
private int end=1; //结束条数
private int sum; //总数
private int curpage=1; //当前页
private int pages=1; //总页数
public int getCurpage() {
return curpage;
}
public void setCurpage(int curpage) {
if(curpage<1)curpage=1;
if(curpage>this.getPages())curpage=this.getPages();
this.curpage = curpage;
}
public int getEnd() {
end=this.getStart()+pagesize;
return end;
}
public void setEnd(int end) {
this.end = end;
}
public int getPages() {
if(sum%pagesize==0){
pages=sum/pagesize;
}else{
pages=sum/pagesize+1;
}
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
public int getPagesize() {
return pagesize;
}
public void setPagesize(int pagesize) {
this.pagesize = pagesize;
}
public int getStart() {
start=(this.getCurpage()-1)*pagesize+1;
return start;
}
public void setStart(int start) {
this.start = start;
}
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
}
PagerTag.java 自定义标签
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;
public class PagerTag extends TagSupport {
private static final long serialVersionUID = 183373550159351609L;
private Pager pager;
private String urlstart;
private String urlend;
public PagerTag() {
}
public int doStartTag() throws JspException {
try {
String bar=getNavigatorBar();
pageContext.getOut().write(bar);
return SKIP_BODY;
} catch (IOException e) {
e.printStackTrace();
throw new JspException(e);
}
}
private String getNavigatorBar()
{
StringBuffer bar=new StringBuffer();
/** 下载包中此处未修改 ,请手动修改一下 **/
/** 下载包中此处未修改 ,请手动修改一下 **/
if( pager==null){
pager = new Pager();
}
/** 下载包中此处未修改 ,请手动修改一下 **/
int curpage = pager.getCurpage();//当前页
int pages = pager.getPages();//总页数
/**
* 第一页
*/
//如果是第一页
if(curpage == 1){
bar.append("<span class='current prev'>Prev</span>")
.append("<span class='current'>1</span>");
}else{
bar.append("<a href='"+urlstart+(curpage-1)+urlend+"'>Prev</a>")
.append("<a href='"+urlstart+1+urlend+"'>1</a>");
}
/**
* 结束(第一页)
*/
//如果总页数小于11
if(pages <= 11){
for(int i =2 ; i<pages;i++){
if(curpage==i){
bar.append("<span class='current'>"+i+"</span>");
}else{
bar.append("<a href='"+urlstart+i+urlend+"'>"+i+"</a>");
}
}
}else{//总页数大于11
if(curpage <=6){ //当前页小页等于6时 (页码要与前面的街上)
for(int i=2;i<=7;i++){
if(curpage==i){
bar.append("<span class='current'>"+i+"</span>");
}else{
bar.append("<a href='"+urlstart+i+urlend+"'>"+i+"</a>");
}
}
bar.append("<span>....</span>");
bar.append("<a href='"+urlstart+(pages-1)+urlend+"'>"+(pages-1)+"</a>");
}else if(curpage>=pages-5){ //当前页大于最大页-5时 要与后面的接上
bar.append("<a href='"+urlstart+2+urlend+"'>"+2+"</a>");
bar.append("<span>....</span>");
for(int i=pages-5-3;i<=pages-1;i++){
if(curpage==i){
bar.append("<span class='current'>"+i+"</span>");
}else{
bar.append("<a href='"+urlstart+i+urlend+"'>"+i+"</a>");
}
}
}else{
bar.append("<a href='"+urlstart+2+urlend+"'>"+2+"</a>");
bar.append("<span>....</span>");
for(int i=curpage-3;i<=curpage+3;i++){
if(curpage==i){
bar.append("<span class='current'>"+i+"</span>");
}else{
bar.append("<a href='"+urlstart+i+urlend+"'>"+i+"</a>");
}
}
bar.append("<span>....</span>");
bar.append("<a href='"+urlstart+(pages-1)+urlend+"'>"+(pages-1)+"</a>");
}
}
/**
* 最后一页
*/
//如果是最后一页
if(curpage == pages){
bar.append("<span class='current'>"+pages+"</span>")
.append("<span class='current next'>Next</span>");
}else{
bar.append("<a href='"+urlstart+pages+urlend+"'>"+pages+"</a>")
.append("<a href='"+urlstart+(curpage+1)+urlend+"'>Next</a>");
}
bar.append("<select style='height:26px;text-align: center;padding: 0.3em 0.5em;' onchange=\"location.href='"+urlstart+"'+this.value+'"+urlend+"'\">");
for(int i=1;i<=pages;i++){
if(curpage==i){
bar.append("<option value='"+i+"' selected='selected'>").append("第"+i+"页").append("</option>");
}else{
bar.append("<option value='"+i+"'>").append("第"+i+"页").append("</option>");
}
}
bar.append("</select>");
return bar.toString();
}
public int doEndTag() throws JspTagException
{
return EVAL_PAGE;
}
public Pager getPager() {
return pager;
}
public void setPager(Pager pager) {
this.pager = pager;
}
public String getUrlend() {
return urlend;
}
public void setUrlend(String urlend) {
this.urlend = urlend;
}
public String getUrlstart() {
return urlstart;
}
public void setUrlstart(String urlstart) {
this.urlstart = urlstart;
}
}
在WEB-INF 下创建 pages.tld 文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglib_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>papa</shortname>
<!--====================pager:pagebar=====================-->
<tag>
<name>pager</name>
<tagclass>com.test.PagerTag</tagclass>
<bodycontent>JSP</bodycontent>
<info>pager tag provide the frame of the page divider</info>
<attribute>
<name>pager</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>urlstart</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>urlend</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>css</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
在页面中的应用
<%@ taglib prefix="pages" uri="/WEB-INF/pages.tld" %>
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="pagination.css" />
</head>
<body>
<div class="pagination">
<pages:pager pager="${pager}" urlend="" urlstart="PageServlet?curpager="></pages:pager>
</div>
</body>
</html>
PageServlet.java
package com.test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class PageServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
request.setCharacterEncoding("gbk");
response.setCharacterEncoding("gbk");
Pager pager = new Pager();
String curpager= request.getParameter("curpager");
pager.setPagesize(5);
pager.setSum(357);
pager.setCurpage(Integer.parseInt(curpager));
request.setAttribute("pager", pager);
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
使用说明:
pager.setPagesize(5); //在应用中 需要设置 每页显示的数量
pager.setSum(357); // 设置总数量
pager.setCurpage(Integer.parseInt(curpager)); //设置当前页
在后台查询中直接获得
pager.getStart(); //从第几条开始显示
pager.getEnd(); //第几条结束
例如 forumdisplay.jsp?page=2
&fid=55
2是页码
<pages:pager pager="${pager}" urlend="" urlstart="PageServlet?curpager="></pages:pager>
urlstart=" forumdisplay.jsp?page=" //页码的前一部分
urlend="&fid=55" //页码的后一部分
具体看代码 比较简单 都有注释````

- 大小: 9.4 KB
分享到:
相关推荐
同时,为了提供良好的用户体验,分页组件还应具备错误处理能力,比如当用户访问不存在的页码时,能够正确地跳转到首页或上一页。 总结来说,"struts+mysql+jsp 分页"这个主题涉及到Struts框架中Action类的设计、...
通过深入理解其设计原理和实现机制,我们可以学习到如何构建高效且易用的分页组件。 首先,我们来探讨一下分页的基本概念。在Web应用中,当用户请求的数据量过大,一次性加载所有数据会消耗大量资源并可能导致页面...
**DisplayTag** 是一个用于Java Web开发的开源表格和展示标签库,它扩展了JSP的功能,提供了丰富的表格样式和排序、分页等高级特性。在教程中,你将学习如何导入DisplayTag库,使用其标签来展示数据,以及如何实现...
3. 主题要具有状态显示及类型显示,状态包括“正常”、“锁定”等,类型包括“原创”、“求助”等;可对帖子进行置顶操作。 4. 具有统计功能,包括当天新发布主题数、所有回复数,统计出每个主题已回复数。 5. 当前...
4. 如何在JSP环境下集成VB6的报表打印功能,可能涉及接口或组件开发。 5. 代码示例和资源文件,用于学习和实践报表打印功能。 学习这个知识点可以帮助开发者掌握在VB6环境中利用ListView控件高效地创建和打印报表,...