`

分页标签

阅读更多
分页总是让人头疼  今天就决心做一个分页标签!~

1.首先写一个标签类PagesTag.java,当然要继承SimpleTagSupport类咯~!

package com.xaccp.common.page;

import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.JspException;


public class PagesTag extends SimpleTagSupport {

    /**
     * Initialization of action property.
     * 标签中分页时的链接动作
     */
    private java.lang.String action;

    /**
     * Initialization of pagecount property.
     * 总页数
     */
    private int pagecount;

    /**
     * Initialization of curpage property.
     */
    private int curpage;

    /**
     * Initialization of target property.
     * 页面链接的目标,默认为_self
     */
    private java.lang.String target="_self";

    /**
     * Initialization of var property.
     * 分页后的链接参数名称
     */
    private java.lang.String var;
    
    /*
     * 分页显示的风格
     */
    private int style=1;

    public void doTag() throws JspException {
        
        JspWriter out=getJspContext().getOut();
        
        try {
            out.write("<table width=\"100%\"  border=\"0\" cellspacing=\"1\" cellpadding=\"1\">      ");
            out.write("<tr>        ");
            if (style==1)
            {
                if (this.curpage > 1 ){
                        out.write("<td>");
                            StringBuilder pageString=new StringBuilder();
                            pageString.append("<a href=\"");
                            pageString.append(action);
                            pageString.append("?");
                            pageString.append(var);
                            pageString.append("=");
                            pageString.append(this.curpage - 1);
                            pageString.append("\"><font color=#ff0000>[");
                            pageString.append("上一页");
                            pageString.append("]</font>");
                            pageString.append("</a>");
                        out.write(pageString.toString());
                        out.write("</td>        ");
                  }
                  if (this.curpage < this.pagecount){
                    out.write("<td>");
                        StringBuilder pageString=new StringBuilder();
                        pageString.append("<a href=\"");
                        pageString.append(action);
                        pageString.append("?");
                        pageString.append(var);
                        pageString.append("=");
                        pageString.append(this.curpage + 1);
                        pageString.append("\"><font color=#ff0000>[");
                        pageString.append("下一页");
                        pageString.append("]</font>");
                        pageString.append("</a>");
                    out.write(pageString.toString());
                    out.write("</td>        ");
                  }
            }
            else if(style==2)
            {
                if (this.curpage > 1) {
                     out.write("<td>");
                        StringBuilder pageString=new StringBuilder();
                        pageString.append("<a href=\"");
                        pageString.append(action);
                        pageString.append("?");
                        pageString.append(var);
                        pageString.append("=1");
                        //pageString.append(this.curpage - 1);
                        pageString.append("\"><font color=#ff0000>[");
                        pageString.append("首页");
                        pageString.append("]</font>");
                        pageString.append("</a>");
                    out.write(pageString.toString());
                    out.write("</td>        ");
                    
                    
                    out.write("<td>");
                        StringBuilder pageString1=new StringBuilder();
                        pageString1.append("<a href=\"");
                        pageString1.append(action);
                        pageString1.append("?");
                        pageString1.append(var);
                        pageString1.append("=");
                        pageString1.append(this.curpage - 1);
                        pageString1.append("\"><font color=#ff0000>[");
                        pageString1.append("上一页");
                        pageString1.append("]</font>");
                        pageString1.append("</a>");
                    out.write(pageString1.toString());
                    out.write("</td>        ");
                    
                }
                
                if (this.curpage < this.pagecount) {
                    out.write("<td>");
                        StringBuilder pageString1=new StringBuilder();
                        pageString1.append("<a href=\"");
                        pageString1.append(action);
                        pageString1.append("?");
                        pageString1.append(var);
                        pageString1.append("=");
                        pageString1.append(this.curpage + 1);
                        pageString1.append("\"><font color=#ff0000>[");
                        pageString1.append("下一页");
                        pageString1.append("]</font>");
                        pageString1.append("</a>");
                    out.write(pageString1.toString());
                    out.write("</td>        ");
                    
                    
                     out.write("<td>");
                        StringBuilder pageString=new StringBuilder();
                        pageString.append("<a href=\"");
                        pageString.append(action);
                        pageString.append("?");
                        pageString.append(var);
                        pageString.append("=");
                        pageString.append(pagecount);
                        pageString.append("\"><font color=#ff0000>[");
                        pageString.append("尾页");
                        pageString.append("]</font>");
                        pageString.append("</a>");
                    out.write(pageString.toString());
                    out.write("</td>        ");
               }
        }
            else
            {
                
                if (this.curpage==1)
                {
                    out.write("<td>");
                    out.write("<font color=#bbbbbb>[");
                    out.write("首页");
                    out.write("]</font>");
                    out.write("</td>        ");
                    out.write("<td>");
                    out.write("<font color=#bbbbbb>[");
                    out.write("第一页");
                    out.write("]</font>");
                    out.write("</td>        ");
                }
                if (this.curpage > 1 ){
                        out.write("<td>");
                        StringBuilder pageString=new StringBuilder();
                        pageString.append("<a href=\"");
                        pageString.append(action);
                        pageString.append("?");
                        pageString.append(var);
                        pageString.append("=1");
                        //pageString.append(this.curpage - 1);
                        pageString.append("\"><font color=#ff0000>[");
                        pageString.append("首页");
                        pageString.append("]</font>");
                        pageString.append("</a>");
                    out.write(pageString.toString());
                    out.write("</td>        ");
                        
                        out.write("<td>");
                            StringBuilder pageString2=new StringBuilder();
                            pageString2.append("<a href=\"");
                            pageString2.append(action);
                            pageString2.append("?");
                            pageString2.append(var);
                            pageString2.append("=");
                            pageString2.append(this.curpage - 1);
                            pageString2.append("\"><font color=#ff0000>[");
                            pageString2.append("上一页");
                            pageString2.append("]</font>");
                            pageString2.append("</a>");
                        out.write(pageString2.toString());
                        out.write("</td>        ");
                  }
                  if (this.curpage < this.pagecount){
                    out.write("<td>");
                        StringBuilder pageString3=new StringBuilder();
                        pageString3.append("<a href=\"");
                        pageString3.append(action);
                        pageString3.append("?");
                        pageString3.append(var);
                        pageString3.append("=");
                        pageString3.append(this.curpage + 1);
                        pageString3.append("\"><font color=#ff0000>[");
                        pageString3.append("下一页");
                        pageString3.append("]</font>");
                        pageString3.append("</a>");
                    out.write(pageString3.toString());
                    out.write("</td>        ");
                    
                    out.write("<td>");
                        StringBuilder pageString=new StringBuilder();
                        pageString.append("<a href=\"");
                        pageString.append(action);
                        pageString.append("?");
                        pageString.append(var);
                        pageString.append("=");
                        pageString.append(pagecount);
                        pageString.append("\"><font color=#ff0000>[");
                        pageString.append("尾页");
                        pageString.append("]</font>");
                        pageString.append("</a>");
                    out.write(pageString.toString());
                    out.write("</td>        ");
                  }
                if (this.curpage == this.pagecount){
                    out.write("<td>");
                    out.write("<font color=#bbbbbb>[");
                    out.write("下一页");
                    out.write("]</font>");
                    out.write("</td>        ");
                    out.write("<td>");
                    out.write("<font color=#bbbbbb>[");
                    out.write("尾页");
                    out.write("]</font>");
                    out.write("</td>        ");
                  }
                
            }
            out.write("</tr>    ");
            out.write("</table>    ");
        } catch (java.io.IOException ex) {
            throw new JspException(ex.getMessage());
        }
        
    }

    public void setAction(java.lang.String value) {
        this.action = value;
    }

    public void setPagecount(int value) {
        this.pagecount = value;
    }
    
    public void setCurpage(int value) {
        this.curpage = value;
    }

    public void setTarget(java.lang.String value) {
        this.target = value;
    }

    public void setVar(java.lang.String value) {
        this.var = value;
    }

    public int getStyle() {
        return style;
    }

    public void setStyle(int style) {
        this.style = style;
    }
}


2.接下来需要写一个Servlet,来让你的标签在web容器里能够运行~!

package com.xaccp.servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;


@SuppressWarnings("serial")
public class PagesServlet extends HttpServlet {
    
   protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        String curr=request.getParameter("page");
        if (curr==null)
        {
            curr="1";
        }
        request.setAttribute("curr",curr);
        RequestDispatcher rd=request.getRequestDispatcher("pagetest.jsp");
        rd.forward(request,response);
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    public String getServletInfo() {
        return "Short description";
    }
}


3. 下来不用我说,大家都知道要在web.xml中配置这个Servlet,下面就是

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 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-app_2_4.xsd">
    <servlet>
        <servlet-name>PagesServlet</servlet-name>
        <servlet-class>com.xaccp.servlet.PagesServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>PagesServlet</servlet-name>
        <url-pattern>/PagesServlet.go</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
	<welcome-file>
            index.jsp
        </welcome-file>
    </welcome-file-list>
</web-app>


4.下来也是最后一步了,就是我们的标签描述文件pages.tld咯,当然用xml文件来描述咯~!

<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" 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 web-jsptaglibrary_2_0.xsd">
  <tlib-version>1.0</tlib-version>
  <short-name>p</short-name>
  <uri>/WEB-INF/tlds/pages</uri>
  <!-- A validator verifies that the tags are used correctly at JSP
         translation time. Validator entries look like this: 
      <validator>
          <validator-class>com.mycompany.TagLibValidator</validator-class>
          <init-param>
             <param-name>parameter</param-name>
             <param-value>value</param-value>
	  </init-param>
      </validator>
   -->
  <!-- A tag library can register Servlet Context event listeners in
        case it needs to react to such events. Listener entries look
        like this: 
     <listener>
         <listener-class>com.mycompany.TagLibListener</listener-class> 
     </listener>
   -->
  <tag>
    <name>page</name>
    <tag-class>com.xaccp.common.page.PagesTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
      <name>action</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <type>java.lang.String</type>
    </attribute>
    <attribute>
      <name>pagecount</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <type>int</type>
    </attribute>
    <attribute>
      <name>curpage</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <type>int</type>
    </attribute>
    <attribute>
      <name>target</name>
      <rtexprvalue>true</rtexprvalue>
      <type>java.lang.String</type>
    </attribute>
    <attribute>
      <name>var</name>
      <rtexprvalue>true</rtexprvalue>
      <type>java.lang.String</type>
    </attribute>
    <attribute>
      <name>style</name>
      <rtexprvalue>true</rtexprvalue>
      <type>int</type>
    </attribute>
  </tag>
</taglib>


5.现在就大功告成了吗? 我们说不! 最重要的就是写个jsp来测试一下你的分页标签咯~!
名字就叫pagetest.jsp吧~
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib prefix="p" uri="/WEB-INF/tlds/pages.tld" %>
<%--
The taglib directive below imports the JSTL library. If you uncomment it,
you must also add the JSTL library to the project. The Add Library... action
on Libraries node in Projects view can be used to add the JSTL 1.1 library.
--%>
<%--
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
--%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

    <h1>JSP Page</h1>
    
    <p>
      <%--
    This example uses JSTL, uncomment the taglib directive above.
    To test, display the page like this: index.jsp?sayHello=true&name=Murphy
    --%>
      <%--
    <c:if test="${param.sayHello}">
        <!-- Let's welcome the user ${param.name} -->
        Hello ${param.name}!
    </c:if>
    --%>
</p>
    <p:page action="PagesServlet.go" curpage="${curr}" pagecount="10" style="2" target="_self" var="page"/>
    <p>&nbsp;</p>
    </body>
</html>


技巧:大家试着改变style的值,看看页面有什么变化~!

6.好,现在大功告成,打游戏去啦~!
分享到:
评论

相关推荐

    java分页标签自定义分页标签自定义分页标签

    自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签...

    Struts2自定义分页标签

    4. **创建分页标签库**:Struts2支持自定义标签,你可以创建一个`.tld`文件来定义分页标签。标签库应该包含开始、结束、上一页、下一页等标签,以便在视图层中方便地使用。 5. **实现标签处理类**:对应的Java类...

    自定义页面分页标签自定义页面分页标签

    自定义页面分页标签是指开发者根据项目需求,创建个性化的分页组件,以实现更加灵活、符合界面设计风格的分页功能。下面将详细探讨如何实现自定义页面分页标签及其相关的知识点。 1. **基础概念**: - 分页:将...

    非常好用的jsp分页标签

    本资源提供了一个非常好用的JSP分页标签,它简化了在JSP页面上实现分页的过程,无需编写过多的Java代码,只需在JSP页面上插入特定的标签即可。 1. **JSP分页标签**:JSP分页标签是一种预定义的、可重用的组件,可以...

    pager-taglib 分页标签使用

    `pager-taglib`是Java Web开发中常用的分页标签库,它简化了在JSP页面上实现分页功能的过程。这个标签库通常与Spring MVC、Struts2等框架结合使用,提供了一种声明式的方式来展示数据分页。下面将详细解释`pager-...

    分页标签组件.rar

    本项目提供了一个基于JSP的分页标签组件,名为"PaperTag",旨在简化开发过程,提高代码可读性和可维护性。 分页标签组件的工作原理是通过自定义TLD(Tag Library Descriptor)文件,定义标签行为,并在JSP页面中...

    jsp自定义分页标签

    本资源提供的就是一个自定义分页标签的例子,它可以帮助我们更便捷地在页面上实现数据的分页显示。 分页是大型Web应用中常见的功能,特别是在处理大量数据时,如电商网站的产品列表、论坛的帖子等。自定义分页标签...

    实用java分页标签

    Java分页标签是Java Web开发中的一个重要概念,它主要用于处理大量数据的展示,尤其是在数据库查询结果需要在网页上以多页形式呈现时。这个技术可以让用户更方便地浏览和导航大量的信息,而不会一次性加载所有数据...

    自定义标签小练习----一个简单的分页标签

    本篇内容主要介绍了一个简单的分页标签的实现过程,这是一个很好的学习实践,帮助开发者理解和掌握自定义标签的编写与应用。 首先,我们要理解自定义标签的生命周期和组成部分。一个完整的自定义标签通常包含以下...

    好用的分页标签

    总的来说,"好用的分页标签"是一个方便JSP开发者的工具,它通过提供预设的分页标签,使得在网页中实现分页功能变得简单而直观。无论是对于新手还是经验丰富的开发者,这样的组件都能提高开发速度并增强项目的用户...

    pager-taglib分页标签

    `pager-taglib`是一个专为JSP页面设计的分页标签库,它简化了在JSP中实现分页的过程。下面将详细介绍`pager-taglib`的安装、使用方法以及其核心知识点。 ### 1. `pager-taglib`简介 `pager-taglib`是一个开源的JSP...

    java自定义分页标签

    Java自定义分页标签是Java Web开发中一种高效、可复用的方法,它允许开发者创建自己的标签库,用于处理分页逻辑,提高代码的可读性和可维护性。本篇文章将详细探讨如何在Java中实现一个自定义分页标签。 首先,理解...

    jsp-web开发通用分页标签

    本教程将详细讲解如何使用JSP(JavaServer Pages)技术来实现一个通用的分页标签,以便在各种项目中复用。 首先,JSP是Java平台上的动态网页技术,它允许开发人员在HTML或者XML文档中嵌入Java代码。在分页场景下,...

    source insight 分页标签插件

    **Source Insight 分页标签插件:sihook 使用详解** Source Insight是一款广受欢迎的源代码查看和编辑工具,尤其在程序员和软件开发人员中备受青睐。它提供了强大的代码导航、搜索和分析功能。为了进一步增强其功能...

    jpager分页标签(用于jsp页面中数据分页)

    **JPager 分页标签库详解** 在Web开发中,数据分页是一项常见且重要的功能,尤其是在处理大量数据时,为了提高用户体验和加载速度,我们通常会将数据分页展示。`jpager` 是一个专为 JSP 页面设计的分页标签库,它...

    JSP自定义分页标签

    JSP自定义分页标签,mysql数据库,通过导入jar包,使用标签的方式实现分页的功能。

    Java Web中分页标签的使用说明

    本篇文章将详细讲解如何在Java Web应用中使用分页标签。我们将主要围绕以下两个核心概念进行讨论:源码理解和工具的使用。 首先,我们需要理解分页的基本原理。在Web应用中,当数据量过大时,一次性加载所有数据...

    java分页标签

    Java 分页标签是一种自定义标签库,用于在Java Web应用程序中实现页面的分页功能。在Web开发中,当数据量庞大时,一次性加载所有数据不仅会影响页面加载速度,也会消耗大量服务器资源。分页技术则能有效地解决这个...

Global site tag (gtag.js) - Google Analytics