自定义标签实现分页功能[看了点网上的,自己在写的。还不错。欢迎点评]


PageTag.java代码:

package com.cn.tags;

import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

public class PageTag extends TagSupport {

/**
  * 当前页
  */
private String curPage;
/**
  * 总页数
  */
private String totalPage;
/**
  * 页大小(一页显示的大小)
  */
private String pageSize;

public void setCurPage(String curPage) {
  this.curPage = curPage;
}

public void setPageSize(String pageSize) {
  this.pageSize = pageSize;
}

public void setTotalPage(String totalPage) {
  this.totalPage = totalPage;
}

@Override
public int doStartTag() throws JspException {
  JspWriter out = pageContext.getOut();
  // 得到分页后的页数,(总页数/页大小)+1,该页面有输入测试参数决定
  if (pageSize == null || pageSize.equals("")) {
      pageSize = "1";
  }
  /**
   * pageNumber表示有多少页
   */
  int pageNumber=0;
  if(Integer.parseInt(totalPage)%Integer.parseInt(pageSize)==0){
       pageNumber = (Integer.parseInt(totalPage) / Integer.parseInt(pageSize));
  }else{
      pageNumber = (Integer.parseInt(totalPage)/Integer.parseInt(pageSize))+1;
  }
//  int pageNumber = (Integer.parseInt(totalPage) / Integer
//    .parseInt(pageSize));
  if (Integer.parseInt(curPage) > pageNumber) {//如果当前页面大于总页数,则当前页等于总页数
      curPage = String.valueOf(pageNumber);
  }
  if (Integer.parseInt(curPage) < 1) {//如果当前页面小于1,则当前页面为第一页
  curPage = "1";
  }
  // 显示给用户操作的页面开始端
  int start = Integer.parseInt(curPage)-4;
  // 显示给用户操作的页面结束端
  int end = Integer.parseInt(curPage) + 4;
  // 特殊情况处理(开始端小于0)
  if ((Integer.parseInt(curPage) - 4) <= 0) {
     start = 1;
  }
  // 特殊情况处理(结束端大于总页数)
  if ((Integer.parseInt(curPage) + 4) > pageNumber) {
      end = pageNumber;
  }
 

  try {
  out.print("<form action='showInfo'><table align=center border='1'><tr></tr>" +
          "<tr height=10 align=justify ><td width=400>");
  out.print("<a href='showInfo?curpage=1'>[首页]</a> " +
          " <a href='showInfo?curpage="
      + (((Integer.parseInt(curPage) - 1) == 0) ? curPage
        : (Integer.parseInt(curPage) - 1))
      + "'>[上一页]</a></td><td width=450 align=center>");
  for (int i = start; i <= end; i++) {
    if(i != Integer.parseInt(curPage)){
    out.print("<a href='showInfo?curpage=" + i + "'>["
      + i + "]</a>  ");
    }else{
    out.print("<b>"+i+"</b>  ");
    }
   
  }
  out.print("</td><td width=130><a href='showInfo?curpage="
      + (((Integer.parseInt(curPage) + 1) > pageNumber) ? curPage
        : (Integer.parseInt(curPage) + 1))
      + "'>[下一页]</a>  <a href='showInfo?curpage="
      + pageNumber + "'>[末页]</a>");
  out.print("</td><td width=100><input name='curpage' style='width:22px;height:22px;' /><input type=submit value=go /></td></tr></table></form>");
  } catch (IOException e) {
  e.printStackTrace();
  }
  return super.doStartTag();
}
}


.tld配置文件:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<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/j2eehttp://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>My Taglib For Holle Word!</description>
<tlib-version>1.0</tlib-version>
<short-name>page</short-name>
<uri>WEB-INF/pageTag.tld</uri>
<tag>
  <name>outpage</name>
  <tag-class>com.cn.tags.PageTag</tag-class>
  <body-content>JSP</body-content>
  <attribute>
  <name>curPage</name>
  <required>true</required>
  <rtexprvalue>true</rtexprvalue>
  <type>java.lang.Integer</type>
  </attribute>
  <attribute>
  <name>totalPage</name>
  <required>true</required>
  <rtexprvalue>true</rtexprvalue>
  <type>java.lang.String</type>
  </attribute>
  <attribute>
  <name>pageSize</name>
  <required>true</required>
  <rtexprvalue>true</rtexprvalue>
  <type>java.lang.String</type>
  </attribute>
</tag>
</taglib>

测试类:

package com.cn.showSelect;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.PageContext;

import com.cn.MyUser.User;

public class ShowInfoServlet extends HttpServlet {
    private static final long serialVersionUID = -5997091396913140228L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        List<User> list = new ArrayList<User>();
        Map<String, User> maps = new HashMap<String, User>();
        User u = new User("小明", "0000", 123, " 男");
        User u1 = new User("小红1", "1111", 123, " 男");
        User u2 = new User("小黄2", "2222", 123, " 男");
        User u3 = new User("小李3", "3333", 123, " 男");
        User u4 = new User("小吴4", "4444", 123, " 男");
        User u5 = new User("小四5", "5555", 123, " 男");
        User u6 = new User("小西5", "6666", 123, " 男");
        User u7 = new User("小东5", "7777", 123, " 男");
        User u8 = new User("小百5", "8888", 123, " 男");
        User u9 = new User("小丽5", "9999", 123, " 男");
        User u10 = new User("小爱5", "1233", 123, " 男");
        User u11 = new User("小二5", "23232", 123, " 男");
        list.add(u);
        list.add(u1);
        list.add(u2);
        list.add(u3);
        list.add(u4);
        list.add(u5);
        list.add(u6);
        list.add(u7);
        list.add(u8);
        list.add(u9);
        list.add(u10);
        list.add(u11);

        System.out.println(".........");
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        if (req.getParameter("curpage") == null) {
            System.out.println("执行了。。。。。。。。。。。");
            int num = 1;
            String curpage = String.valueOf(num);
            req.setAttribute("ss", curpage);
            System.out.println(curpage);
            int start = num * 4;
            int over = (num + 1) * 4;
            int totalNum = list.size();
            int count = totalNum - over;// 还剩余的条数
            if (count <= 0) {
                over = totalNum;
            }
            PrintWriter out = resp.getWriter();
            for (int i = start; i < over; i++) {
                User user = (User) list.get(i);
                // req.setAttribute("user",originalGoods);
                maps.put(user.getUserName(), user);

                System.out.println(user.getAge());
                System.out.println(user.getSex());
                System.out.println(user.getPassWord());
                System.out.println(user.getUserName());

            }
            req.setAttribute("user", maps);
            req.setAttribute("size",totalNum);
            req.getRequestDispatcher("index.jsp").forward(req, resp);

            return;
        }
        String curpage = req.getParameter("curpage");
        System.out.println(curpage);
        int num = Integer.parseInt(curpage);
        req.setAttribute("ss", curpage);
        System.out.println(curpage);
        int start = num * 4;
        int over = (num + 1) * 4;
        int totalNum = list.size();
        int count = totalNum - over;// 还剩余的条数
        if (count <= 0) {
            over = totalNum;
        }
        PrintWriter out = resp.getWriter();
        for (int i = start; i < over; i++) {
            User user = (User) list.get(i);
            // req.setAttribute("user",originalGoods);
            maps.put(user.getUserName(), user);

            System.out.println(user.getAge());
            System.out.println(user.getSex());
            System.out.println(user.getPassWord());
            System.out.println(user.getUserName());

        }
        req.setAttribute("user", maps);
        req.setAttribute("size",totalNum);
        req.getRequestDispatcher("index.jsp").forward(req, resp);

    }

}

index.html代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="page" uri="WEB-INF/pageTag.tld" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
  <table border="1" width="80%" height="10" align="center">
  <tr><td>用户名</td><td>密码</td><td>年龄</td><td>性别</td></tr>
  <c:forEach items="${user}" var="map">
   <tr>
 <td> ${map.value.userName}</td>    
 <td> ${map.value.passWord}</td>    
 <td> ${map.value.age}</td>    
 <td>${map.value.sex}</td>
  </c:forEach>
  </tr><br />
  </table>
 <page:outpage pageSize="2" totalPage="${size}" curPage="${ss}"></page:outpage>
  </body>
</html>

web.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
    <servlet-name>ShowInfo</servlet-name>
    <servlet-class>com.cn.showSelect.ShowInfoServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>ShowInfo</servlet-name>
    <url-pattern>/showInfo</url-pattern>
    </servlet-mapping>
  <display-name></display-name>    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

User.java代码:

package com.cn.MyUser;

public class User {
    private String UserName;
    private String PassWord;
    private int age;
    private String sex;
    public String getUserName() {
        return UserName;
    }
    public void setUserName(String userName) {
        UserName = userName;
    }
    public String getPassWord() {
        return PassWord;
    }
    public void setPassWord(String passWord) {
        PassWord = passWord;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public User(String userName, String passWord, int age, String sex) {
        super();
        UserName = userName;
        PassWord = passWord;
        this.age = age;
        this.sex = sex;
    }
    

}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值