package com.java.servlet.pager;
public class Person {
private String id;
private String name;
private int age;
private String sex;
private String address;
private String demo;
public Person() {
}
public Person(String id, String name, int age, String sex, String address, String demo) {
this();
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
this.address = address;
this.demo = demo;
}
public Person(String id, String name, int age, String sex, String address) {
this(id, name, age, sex, address, "");
}
public Person(String id, String name, int age, String sex) {
this(id, name, age, sex, "");
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
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 String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getDemo() {
return demo;
}
public void setDemo(String demo) {
this.demo = demo;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", sex=" + sex + ", address=" + address + ", demo=" + demo
+ "]";
}
}
package com.java.servlet.pager;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
public class PagerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unused")
private void list(HttpServletRequest req, HttpServletResponse res) {
List<Person> persons = new ArrayList<Person>();
for (int i = 1; i < 30; i++) {
persons.add(new Person(String.valueOf(i), "name_" + i, 10 + i, (i % 2 == 0 ? "男" : "女"), "address_" + i, "demo_" + i));
}
String name = req.getParameter("name");
req.setAttribute("name", name);
String sex = req.getParameter("sex");
req.setAttribute("sex", sex);
for (int j = 0; j < persons.size(); j++) {
if (StringUtils.isNotEmpty(name) && !persons.get(j).getName().contains(name)) {
persons.remove(j);
j--;
continue;
}
if (StringUtils.isNotEmpty(sex)) {
if ("1".equals(sex) && "女".equals(persons.get(j).getSex())) {
persons.remove(j);
j--;
continue;
} else if ("2".equals(sex) && "男".equals(persons.get(j).getSex())) {
persons.remove(j);
j--;
continue;
}
}
}
int curPage = req.getParameter("curPage") == null ? 1 : Integer.parseInt(req.getParameter("curPage"));
if (curPage == 0) {
curPage = 1;
req.setAttribute("curPage", curPage);
}
int pageSize = 2;
req.setAttribute("pageSize", pageSize);
req.setAttribute("total", persons.size());
req.setAttribute("curPage", curPage);
if (persons.size() > 2) {
int lastIdx = curPage * pageSize;
if (lastIdx >= persons.size()) {
lastIdx = persons.size();
}
persons = persons.subList((curPage - 1) * pageSize, lastIdx);
}
req.setAttribute("persons", persons);
try {
//res.sendRedirect("pager.jsp"); //重定向不能带requset参数
req.getRequestDispatcher("pager.jsp").forward(req, res);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) {
String methodName = req.getParameter("method");
try {
Method method = this.getClass().getDeclaredMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
method.setAccessible(true);
method.invoke(this, req, resp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.java.servlet.pager;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.Tag;
public class PagerTag extends BodyTagSupport {
private static final long serialVersionUID = -1848984466240909235L;
private int total;
private int pageSize;
private int curPage;
@Override
public int doStartTag() throws JspException {
if (pageSize == 0) {
System.out.println("Page size 不能为空!");
return Tag.SKIP_BODY;
}
//默认为第一页
if (curPage == 0) {
curPage = 1;
}
//没有分页时,设置为不可用
String navDisableStyle = "";
if (total == 0) {
navDisableStyle = " disabled=\"disabled\"";
}
int pageNum = (int) Math.ceil((double)total / pageSize);
System.out.println(pageNum);
String forwardClass = "";
if (curPage == pageNum) {
forwardClass = "class='disabled'";
}
String backClass = "";
if (curPage == 1) {
backClass = "class='disabled'";
}
StringBuilder sb = new StringBuilder();
sb.append("");
sb.append("");
try {
this.pageContext.getOut().print(sb.toString());
} catch (IOException e) {
e.printStackTrace();
}
return Tag.SKIP_BODY;
//return Tag.EVAL_BODY_INCLUDE; //执行标签中的内容
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getCurPage() {
return curPage;
}
public void setCurPage(int curPage) {
this.curPage = curPage;
}
}
页面中有使用到Bootstrap中的一些样式,自行网上下载。
<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">
<description>Show pager navigatordescription>
<display-name>Pager navigatordisplay-name>
<tlib-version>1.1tlib-version>
<short-name>pshort-name>
<uri>http://com.hsl.pager/coreuri>
<tag>
<name>pagername>
<tag-class>com.java.servlet.pager.PagerTagtag-class>
<body-content>emptybody-content>
<attribute>
<description>Data sizedescription>
<name>totalname>
<required>truerequired>
<rtexprvalue>truertexprvalue>
attribute>
<attribute>
<description>Page sizedescription>
<name>pageSizename>
<required>truerequired>
<rtexprvalue>truertexprvalue>
attribute>
<attribute>
<description>Current page numberdescription>
<name>curPagename>
<required>truerequired>
<rtexprvalue>truertexprvalue>
attribute>
tag>
taglib>
<web-app version="3.0"
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_3_0.xsd">
<display-name>display-name>
<servlet>
<servlet-name>PagerServletservlet-name>
<servlet-class>com.java.servlet.pager.PagerServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>PagerServletservlet-name>
<url-pattern>/pager.dourl-pattern>
servlet-mapping>
<welcome-file-list>
<welcome-file>pager.jspwelcome-file>
welcome-file-list>
web-app>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://com.hsl.pager/core" prefix="p" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'Pager.jsp' starting pagetitle>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css"
href="./css/lib/bootstrap.min.css">
<link rel="stylesheet" type="text/css"
href="./css/lib/bootstrap-theme.min.css">
<script type="text/javascript" src="./js/lib/jquery-3.3.1.js">script>
<script type="text/javascript" src="./js/lib/bootstrap.js">script>
head>
<body>
<fieldset style="margin: 10px;">
<legend>Person信息列表:legend>
<form class="form-inline">
<div class="form-group">
<label for="name">姓名label> <input type="text"
class="form-control" id="name" name="name" value="${name}" placeholder="请输入姓名:">
div>
<div class="form-group">
<label for="sex">性别label>
<select name="sex" id="sex" class="form-control" >
<option value="0">option>
<c:choose>
<c:when test="${sex == '1'}">
页面中有使用到 jstl-api-1.2.jar 标准标签库,请自行下载。