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;
}
}