jsp 自定义分页标签

baobeilove888

baobeilove888

2016-02-19 18:08

下面图老师小编跟大家分享jsp 自定义分页标签,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

  花了一上午简单研究了下自定义标签。就弄了个自定义的分页标签。代码没有怎么仔细优化。先贴上来,:)

  1,标签的实现类NumenTag.java

  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

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

  /** *//**
   * 自定义的分页标签
   *
   * @author 马万林
   *
   */
  public class NumenTag extends TagSupport {

      private String url = null;

      private Result result;

      private String page = null;

      private String[] p;

      private Map kv = new HashMap();

      private List key = null;

      /** *//**
       * 分离参数
       * @param params
       */
      public void setParams(String params) {
          key = new ArrayList();
          p = params.split(";");
          for (int i = 0; p.length1&&i p.length; i++) {
              kv.put(p[i].split(":")[0], p[i].split(":")[1]);
              key.add(p[i].split(":")[0]);
          }
      }

      /** *//**
       * 分页的结果
       * @param result
       */
      public void setResult(String result) {
          this.result = (Result) pageContext.getRequest().getAttribute("result");
          this.page = (String) pageContext.getRequest().getAttribute("page");
      }

      public void setUrl(String url) {
          this.url = url;
      }

      public int doStartTag() throws JspException {
          StringBuffer sb = null;
          if (result != null && result.getContent() != null
                  && result.getContent().size() 0) {
              sb = new StringBuffer("分页: ");
              if (result.getPage().getHasPrePage()){
                  sb.append("a href='").append(url);
                  if (url.indexOf("?") == -1)
                      sb.append("?page=1");
                  else
                      sb.append("&page=1");
                  linkParams(sb);
                  sb.append("'").append("首页").append("/a").append(" | ");
                  sb.append("a href='").append(url);
                  if (url.indexOf("?") == -1)
                      sb.append("?page=").append(
                              result.getPage().getPreviousPage());
                  else
                      sb.append("&page=").append(
                              result.getPage().getPreviousPage());
                  linkParams(sb);
                  sb.append("'").append("上页").append("/a").append(" | ");
              }
              if (result.getPage().getHasNextPage()) {
                  sb.append("a href='").append(url);
                  if (url.indexOf("?") == -1)
                      sb.append("?page=").append(result.getPage().getNextPage());
                  else
                      sb.append("&page=").append(result.getPage().getNextPage());
                  linkParams(sb);
                  sb.append("'").append("下页").append("/a").append(" | ");
                  sb.append("a href='").append(url);
                  if (url.indexOf("?") == -1)
                      sb.append("?page=").append(result.getPage().getTotalPage());
                  else
                      sb.append("&page=").append(result.getPage().getTotalPage());
                  linkParams(sb);
                  sb.append("'").append("尾页").append("/a");
              }
              sb
                      .append(" 跳转到:select name='goToPage' onchange='javascript:goPage(this.value)'");
              int s = result.getPage().getTotalCount();
              for (int i = 1; i = s; i++) {
                  sb.append("option value=").append(i);
                  if (Integer.parseInt(page) == i)
                      sb.append(" selected");
                  sb.append("第").append(i).append("页/option");
              }
              sb.append("/select");
              sb.append("script language=javascript");
              sb.append("function goPage(page){").append("window.location='")
                      .append(url);
              if (url.indexOf("?") == -1)
                  sb.append("?page='+").append("page");
              else
                  sb.append("&page='+").append("page");
              sb.append("+'");
              linkParams(sb);
              sb.append("';");
              sb.append("}");
              sb.append("/script");
          }
          try {
              if (sb != null) {
                  JspWriter out = pageContext.getOut();
                  out.print(sb);
              }
          } catch (Exception e) {
              throw new JspException(e);
          }
          return EVAL_PAGE;
      }
     
      /** *//**
       * 链接参数处理
       * @param sb
       */
      private void linkParams(StringBuffer sb) {
          for (int i = 0; i key.size(); i++) {
              sb.append("&").append(key.get(i)).append("=").append(
                      kv.get(key.get(i)));
          }
      }

  }
   

  2,标签定义文件numentag.tld

   

  ?xml  version="1.0"  encoding="utf-8"  ?
   !DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"
  taglib
      tlib-version1.0/tlib-version
      jsp-version1.2/jsp-version
      short-namenumen/short-name
      !--OutputTag--
      tag
          nameout/name
          tag-classcn.cityyouth.util.NumenTag/tag-class
          body-contentempty/body-content
          attribute
              nameurl/name
              requiredtrue/required
              rtexprvaluetrue/rtexprvalue
          /attribute
          attribute
              nameresult/name
              requiredtrue/required
              rtexprvaluetrue/rtexprvalue
          /attribute
          attribute
              nameparams/name
              requiredfalse/required
              rtexprvaluetrue/rtexprvalue
          /attribute
      /tag
  /taglib

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

   

  3.js

  %@ page contentType="text/html; charset=utf-8"%
  %@ include file="/common/taglibs.jsp"%
  %@ taglib  uri="/WEB-INF/numentag.tld"  prefix="n"%
  html
  head
  /head
  body
  table
  trtd
  n:out url="test.do" result="result" params="${type}"/
  /td/tr
  /table
  /body
  /html
  http://blog.csdn.net/numen_wlm/archive/2007/01/30/1497778.aspx

展开更多 50%)
分享

猜你喜欢

jsp 自定义分页标签

Web开发
jsp 自定义分页标签

JSP 自定义标签

Web开发
JSP 自定义标签

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

JSP的自定义标签

Web开发
JSP的自定义标签

JSP自定义标签试验

Web开发
JSP自定义标签试验

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

jsp 自定义标签实例

Web开发
jsp 自定义标签实例

使用静态类实现JSP自定义标签

Web开发
使用静态类实现JSP自定义标签

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

JSP和JSF双剑合并 打造完美Web应用

JSP和JSF双剑合并 打造完美Web应用

JSP中读文件和写文件的例子

JSP中读文件和写文件的例子
下拉加载更多内容 ↓