先看效果 样式 可以 css 修改 各自 适合 的样式
代码下载位置 :http://download.csdn.net/download/knight_black_bob/8767507
前端效果<page:navigator type="frontPage">
后台效果<page:navigator type="backPage">
<page:navigator type="defaultPage">
效果 看完后,看结构
初始化数据
package baoyou.bean; import java.util.ArrayList; import java.util.List; public class UserPool { private static List<User> userList =new ArrayList<User>(); static { for (int i = 0; i < 100; i++) { User user = new User(); user.setUserId(i); user.setUserName("user"+i); user.setPassword("user"+i); userList.add(user); } } private static UserPool instance; private UserPool(){ } public static synchronized UserPool getInstance() { if (instance == null) { instance = new UserPool(); } return instance; } public List<User> getUserList() { return userList; } public int getCount() { return userList.size(); } //limit #{start},#{pageSize} public List<User> getUserList(PageBean pb) { List<User> list = new ArrayList<User>(); for (int i = 0; i < userList.size(); i++) { if ( pb.getStart() >= 0 && i >= pb.getStart() && i< pb.getStart() + pb.getPageSize() ) { list.add( userList.get(i) ) ; } } return list ; } }
User
package baoyou.bean; public class User { private int userId; private String userName; private String password; public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
page/ NavigatorTag
package baoyou.page; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.IOException; /** * 显示导航条,可利用此改变每页的记录数,上下翻页和跳页 使用方法:<page:navigator type='BUTTON'/> * * @author Satan */ @SuppressWarnings("serial") public class NavigatorTag extends TagSupport { /** 导航条的类型(BUTTON/TEXT)(按钮型/文字链接型) */ private String type = "Page"; // 选择导航条类型默认"BUTTON"(BUTTON/TEXT) public void setType(String newType) { type = newType; } public int doStartTag() throws JspException { try { String bar = getNavigatorBar(type); pageContext.getOut().write(bar); return SKIP_BODY; } catch (IOException ioe) { throw new JspException(ioe.getMessage()); } } public int doEndTag() throws JspException { return EVAL_PAGE; } /** * 根据指定类型获得导航条预先设计的导航条 * * @param type * 导航条类型(BUTTON/TEXT) * @return 返回导航条的HTML代码,若指定类型不存在,返回"" */ private String getNavigatorBar(String type) { String bar = ""; String pageNo = ((Integer) pageContext.getAttribute("pageNo")).toString();//第几页 String pages = ((Integer) pageContext.getAttribute("pages")).toString();//总页数 String total = ((Integer) pageContext.getAttribute("total")).toString();//总条数 String pageSize = ((Integer) pageContext.getAttribute("pageSize")) .toString(); String nextDisabled = ""; String prevDisabled = ""; if (Integer.parseInt(pageNo) >= Integer.parseInt(pages)) nextDisabled = "disabled"; if (Integer.parseInt(pageNo) <= 1) prevDisabled = "disabled"; String pageSizeInput = pageSize; String firstText = "<span style='color:#777;'>首 页</span>"; String prevText = "<span style='color:#777;'>上一页</span>"; String nextText = "<span style='color:#777;'>下一页</span>"; String lastText = "<span style='color:#777;'>最后一页</span>"; String nowPage = "<span style='color:#777;'></span>"; String pageNoInput = "<input type='text' maxlength='9' size='3' size='2' value='" + pageNo + "' " + "onChange=\"javascript:this.form.pageNo.value=this.value\">"; if (!type.equalsIgnoreCase("frontPage")) { if (type.equalsIgnoreCase("backPage")) { if (prevDisabled.equalsIgnoreCase("")) { firstText = "<span><a href='first' " + "onClick=\"javascript:document.pager.choice.value='first';document.pager.submit();return false;\">" + "首 页" + "</a></span>"; prevText = "<span><a href='prev' " + "onClick=\"javascript:document.pager.choice.value='prev';document.pager.submit();return false;\">" + "上一页" + "</a></span>"; } if (nextDisabled.equalsIgnoreCase("")) { nextText = "<span><a href='next' " + "onClick=\"javascript:document.pager.choice.value='next';document.pager.submit();return false;\">" + "下一页" + "</a></span>"; lastText = "<span><a href='last' " + "onClick=\"javascript:document.pager.choice.value='last';document.pager.submit();return false;\">" + "最后一页" + "</a></span>"; } bar = "每页pageSize条记录 | \n" + "<span style='color:#777;'>共pages页/total条记录</span> | \n" + "first \n prev \n next \n last \n | <span style='color:#777;'>第pageNo页</span>\n" + " <input type='submit' value='go' onClick=\"javascript:this.form.choice.value='current';\">\n"; }else if(type.equals("defaultPage")){ if (prevDisabled.equalsIgnoreCase("")) { firstText = "<span><a href='first' " + "onClick=\"javascript:document.pager.choice.value='first';document.pager.submit();return false;\">" + "首 页" + "</a></span>"; prevText = "<span><a href='prev' " + "onClick=\"javascript:document.pager.choice.value='prev';document.pager.submit();return false;\">" + "上一页" + "</a></span>"; } if (nextDisabled.equalsIgnoreCase("")) { nextText = "<span><a href='next' " + "onClick=\"javascript:document.pager.choice.value='next';document.pager.submit();return false;\">" + "下一页" + "</a></span>"; lastText = "<span><a href='last' " + "onClick=\"javascript:document.pager.choice.value='last';document.pager.submit();return false;\">" + "最后一页" + "</a></span>"; } bar = "<span style=\"color:#777;text-decoration: none;\">每页pageSize条记录</span> | \n" + "<span style=\"color:#777;\">共pages页/total条记录</span> | \n" + "first \n prev \n next \n last \n <span style=\"color:#777;\">第pageNo页</span>\n "; pageNoInput=pageNo; } bar = StringUtil.replace(bar, "pageSize", pageSizeInput); bar = StringUtil.replace(bar, "pages", pages); bar = StringUtil.replace(bar, "total", total); bar = StringUtil.replace(bar, "first", firstText); bar = StringUtil.replace(bar, "prev", prevText); bar = StringUtil.replace(bar, "next", nextText); bar = StringUtil.replace(bar, "last", lastText); bar = StringUtil.replace(bar, "pageNo", pageNoInput); }else if (type.equalsIgnoreCase("frontPage")) { int i = 1; int totalPages = (Integer) pageContext.getAttribute("pages"); int min = Integer.parseInt(pageNo) - 3; int max = Integer.parseInt(pageNo) + 3; if (min <= 1) { min = 1; max = min + 6; } else { if(Integer.parseInt(pageNo) ==5){ nowPage += "<span><a href='#' " + "onClick=\"javascript:document.pager.pageNo.value=" + 1 + ";document.pager.submit();return false;\">" + 1 + "</a></span>"; } else{ nowPage += "<span><a href='#' " + "onClick=\"javascript:document.pager.pageNo.value=" + 1 + ";document.pager.submit();return false;\">" + 1 + "</a></span>"; nowPage += "<span>...</span>"; } } if (max >= totalPages) { min = max - 6; max = totalPages; } for (i = min; i <= max; i++) { if (i >= 1 && i <= totalPages) { if (i == Integer.parseInt(pageNo)) { nowPage += "<span><a href='#' style='color:red'" + "onClick=\"javascript:document.pager.pageNo.value=" + i + ";document.pager.submit();return false;\">[" + i + "]</a></span>"; } else { nowPage += "<span><a href='#' " + "onClick=\"javascript:document.pager.pageNo.value=" + i + ";document.pager.submit();return false;\">" + i + "</a></span>"; } } } if (max<totalPages) { if((totalPages - Integer.parseInt(pageNo))==4){ nowPage += "<span><a href='#' " + "onClick=\"javascript:document.pager.pageNo.value=" + totalPages + ";document.pager.submit();return false;\">" + totalPages + "</a></span>"; } else{ nowPage += "<span>...</span>"; nowPage += "<span><a href='#' " + "onClick=\"javascript:document.pager.pageNo.value=" + totalPages + ";document.pager.submit();return false;\">" + totalPages + "</a></span>"; } } firstText = "<span><a href='#' " + "onClick=\"javascript:document.pager.pageNo.value="+1+";document.pager.submit();return false;\">" + "<span> << </span>" + "</a></span>"; lastText = "<span><a href='last' " + "onClick=\"javascript:document.pager.pageNo.value="+totalPages+";document.pager.submit();return false;\">" + "<span> >> </span>" + "</a></span>"; bar ="first \n now \n last \n "; bar = StringUtil.replace(bar, "now", nowPage); bar = StringUtil.replace(bar, "first", firstText); bar = StringUtil.replace(bar, "last", lastText); } return bar.toString(); } }
page/ PagerTag
package baoyou.page; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import javax.servlet.http.*; import java.util.*; import java.io.IOException; /** * 分页框架标记 从表单中获得全部参数,予以保存并自动生成对应的<input type=hidden>表单 * 通过计算当前的页号,操作,以及控制每页记录数,提供起始记录号,和每页显示记录数, * 供框架内的程序控制显示起始的记录位置和数量,若中途转出后返回,直接调用该页面即可 恢复原来转出时的情况.若页号超出范围,将自动调成最接近的合理值. * 使用举例: */ @SuppressWarnings("serial") public class PagerTag extends BodyTagSupport { private StringBuffer output; // 保存输出 private int pageNo; // 当前页面 private int pageSize; // 每页记录数 private int index = 0; // 起始记录数,缺省为0 private int pages; // 总页数 @SuppressWarnings("unused") private String queryString; // 保存分页信息和所需传递的其它变量值 @SuppressWarnings("unused") private String prevPage; // 前一页的URL和queryString @SuppressWarnings("unused") private String nextPage; // 下一页的URL和queryString @SuppressWarnings("unused") private String currentPage; // 当前页的URL和queryString @SuppressWarnings("unused") private String firstPage; // 第一页的URL和queryString @SuppressWarnings("unused") private String lastPage; // 最后页的URL和queryString private boolean resume = false; // 是否是恢复操作 private int total = 0; // 记录总数,即需要分页显示的记录总数,初始化默认为0 private int defaultPageSize = 20; // 缺省每页记录数,可在导航条中改变每页记录数的值 private String action; public String getAction() { return action; } public void setAction(String action) { this.action = action; } public void setTotal(int newTotal) { total = newTotal; } public void setDefaultPageSize(int newDefaultPageSize) { defaultPageSize = newDefaultPageSize; } /** * 调用handler进行分页处理 */ public int doStartTag() throws JspTagException { output = new StringBuffer(); resume = false; handler(); return EVAL_BODY_BUFFERED; } /** * 获得标记内的记录列表内容 */ public int doAfterBody() throws JspTagException { BodyContent bodyContent = getBodyContent(); if (bodyContent != null) { output.append(bodyContent.getString()); try { bodyContent.clear(); } catch (IOException ex) { throw new JspTagException("Fatal IO Error"); } } return SKIP_BODY; } /** * 输出标记内的内容 */ public int doEndTag() throws JspTagException { BodyContent bodyContent = getBodyContent(); try { if (bodyContent != null) { // 输出结束标记 output.append("</form>\n"); // 输出全部内容 bodyContent.getEnclosingWriter().write(output.toString()); } } catch (IOException ex) { throw new JspTagException("Fatal IO Error"); } return EVAL_PAGE; } /** * 设置标记内变量(每页记录数,当前页号,起始记录号,表单的查询字符串) */ public void setVariable() { pageContext.setAttribute("pageSize", new Integer(pageSize)); pageContext.setAttribute("pageNo", new Integer(pageNo)); pageContext.setAttribute("total", new Integer(total)); pageContext.setAttribute("pages", new Integer(pages)); pageContext.setAttribute("index", new Integer(index)); } /** * 获取分页信息和其它表单中的变量值并输出表单 */ @SuppressWarnings({ "unchecked", "rawtypes" }) private void handler() { HttpServletRequest request = (HttpServletRequest) pageContext .getRequest(); StringBuffer paramBuf = new StringBuffer(); HttpSession session = (HttpSession) pageContext.getSession(); String totalStr = (String) session.getAttribute("total"); if (totalStr != null) { total = Integer.parseInt(totalStr); // System.out.println("---------------------------------------"+total); } try { String t = (String) session.getAttribute("defaultPageSize"); int n = Integer.parseInt(t); defaultPageSize = n; } catch (Exception e) { // 代表没有设置 默认为20 } String choice = ""; HashMap params = new HashMap(); // 获得当前页的URI @SuppressWarnings("unused") String requestURI = request.getRequestURI(); // 获取操作 choice = ParamUtil.getParameter(request, "choice"); // 判断是否转出后返回需恢复原分页及参数信息(判断依据:GET方式访问且没有提供额外参数) if (choice.equals("") && request.getMethod().equals("GET") && request.getQueryString() == null) { // 是否页面相同 String pageURI = (String) session.getAttribute("pageURI"); if (request.getRequestURI().equalsIgnoreCase(pageURI)) resume = true; else resume = false; } if (resume) { // 处理中途转出后返回的情况 // 从session中取参数 Object obj = session.getAttribute("pagerParameters"); if (obj != null) { params = (HashMap) obj; // 获取每页记录数,若没指定,使用默认值 pageSize = ((Integer) params.get("pageSize")).intValue(); // 获取页号 pageNo = ((Integer) params.get("pageNo")).intValue(); } else { // 提供默认值(一般出在用GET方法查询且不需参数情况的处理,因为条件等同于转出后恢复) pageSize = defaultPageSize; pageNo = 1; } // 设定操作 choice = "current"; // 操作改设为取当前页 } else { // 获取每页记录数,若没指定,使用默认值 pageSize = ParamUtil.getIntParameter(request, "pageSize", defaultPageSize); // 获取页号 pageNo = ParamUtil.getIntParameter(request, "pageNo", 1); } // 每页记录数越界处理 if (pageSize <= 0) pageSize = 1; // 计算总页数 pages = (total % pageSize == 0) ? total / pageSize : total / pageSize + 1; // 根据操作,重新确定当前页号 if (choice.equals("next")) pageNo++; if (choice.equals("prev")) pageNo--; if (choice.equals("first")) pageNo = 1; if (choice.equals("last")) pageNo = pages; // 页号越界处理 if (pageNo > pages) pageNo = pages; if (pageNo <= 0) pageNo = 1; // 起始记录号 index = (pageNo - 1) * pageSize + 1; // 输出表单的头 output.append("<form action='" + action + "' method='post' name='pager'>\n"); Enumeration enum1; String name; String value; if (resume) { // 处理中途转出后返回的情况 // 恢复session中的参数 Collection co = params.entrySet(); if (co != null) { Iterator it = params.entrySet().iterator(); while (it.hasNext()) { Map.Entry e = (Map.Entry) it.next(); name = (String) e.getKey(); if (name.equals("pageNo") || name.equals("pageSize") || name.equals("choice")) { // 略过 continue; } value = (String) e.getValue(); paramBuf.append("<input type='hidden' name='" + name + "' value='" + value + "'>\n"); } } } else { // 获取所有提交的参数,并设置表单"<input type='hidden' name='' value=''>" enum1 = request.getParameterNames(); while (enum1.hasMoreElements()) { name = (String) enum1.nextElement(); value = ParamUtil.getParameter(request, name); // 保存查询参数和值 params.put(name, value); if (name.equals("pageNo") || name.equals("pageSize") || name.equals("choice")) { continue; } paramBuf.append("<input type='hidden' name='" + name + "' value='" + value + "'>\n"); } // 保存分页参数和值 params.put("pageNo", new Integer(pageNo)); params.put("pageSize", new Integer(pageSize)); // 保存到session session.setAttribute("pagerParameters", params); // 保存当前的URI session.setAttribute("pageURI", request.getRequestURI()); } // //////end of if(resume) // 输出分页参数表单 paramBuf.append("<input type='hidden' name='pageNo' value='" + pageNo + "'>\n"); paramBuf.append("<input type='hidden' name='pageSize' value='" + pageSize + "'>\n"); paramBuf.append("<input type='hidden' name='choice' value='" + choice + "'>\n"); output.append(paramBuf.toString()); setVariable(); if (resume) { // 转出恢复情况下需重新提交表单 String resend = "<script language='javascript'>" + "document.pager.submit();" + "</script>\n"; output.append(resend); } } }
page/ PageSql
package baoyou.page; public class PageSql { public int getStartIndex(String pageNoStr,String choice,int pageSize,int total) { int index = 0; if (pageNoStr == "" || pageNoStr == null) { pageNoStr = "1"; } else if (!pageNoStr.matches("^[0-9]{0,30}$")) { pageNoStr = "1"; } int pageNo = Integer.parseInt(pageNoStr); int pages = (total % pageSize == 0) ? total / pageSize : total / pageSize + 1; if (choice != null) { if (choice.equals("next")) pageNo++; if (choice.equals("prev")) pageNo--; if (choice.equals("first")) pageNo = 1; if (choice.equals("last")) pageNo = pages; } if (pageNo > pages) pageNo = pages; if (pageNo <= 0) pageNo = 1; index = (pageNo - 1) * pageSize; return index; } }
page/ PageTEI
package baoyou.page; import javax.servlet.jsp.tagext.*; /** * 用于page标记的变量预设 */ public class PageTEI extends TagExtraInfo { public VariableInfo[] getVariableInfo(TagData data) { return new VariableInfo[] { new VariableInfo("pageSize", "java.lang.Integer", true, VariableInfo.NESTED), new VariableInfo("pageNo", "java.lang.Integer", true, VariableInfo.NESTED), new VariableInfo("pages", "java.lang.Integer", true, VariableInfo.NESTED), new VariableInfo("index", "java.lang.Integer", true, VariableInfo.NESTED), new VariableInfo("total", "java.lang.Integer", true, VariableInfo.NESTED) }; } }
page/ ParamUtil
package baoyou.page; import javax.servlet.*; public class ParamUtil { /** * 获得request中指定名称的参数值,若有中文乱码问题请增加转码部分 * * @param request * ServletRequest对象 * @param paramName * 参数名称 * @return 如果该变量值存在则返回该值,否则返回"" */ public static String getParameter(ServletRequest request, String paramName) { String temp = request.getParameter(paramName); if (temp != null && !temp.equals("")) { // 若有中文问题,请将下面语句注释 try { temp = new String(temp.getBytes("8859_1"), "UTF-8"); } catch (Exception e) { return ""; } return temp; } else { return ""; } } /** * 获得request中的int型参数值 * * @param request * ServletRequest对象 * @param paramName * 参数名称 * @param defaultNum * 默认值,如果没有返回该值 * @return 如果该参数值存在则返回其转换为int型的值,否则返回defaultNum */ public static int getIntParameter(ServletRequest request, String paramName, int defaultNum) { String temp = request.getParameter(paramName); if (temp != null && !temp.equals("")) { int num = defaultNum; try { num = Integer.parseInt(temp); } catch (Exception ignored) { } return num; } else { return defaultNum; } } }// /////////
page/ StringUtil
package baoyou.page; /** * <p> * Title: 字符串工具类 * </p> * * @version 1.0 */ public class StringUtil { /** * Replaces all instances of oldString with newString in line. * * @param line * the String to search to perform replacements on * @param oldString * the String that should be replaced by newString * @param newString * the String that will replace all instances of oldString * @return a String will all instances of oldString replaced by newString */ public static final String replace(String line, String oldString, String newString) { if (line == null) { return null; } int i = 0; if ((i = line.indexOf(oldString, i)) >= 0) { char[] line2 = line.toCharArray(); char[] newString2 = newString.toCharArray(); int oLength = oldString.length(); StringBuffer buf = new StringBuffer(line2.length); buf.append(line2, 0, i).append(newString2); i += oLength; int j = i; while ((i = line.indexOf(oldString, i)) > 0) { buf.append(line2, j, i - j).append(newString2); i += oLength; j = i; } buf.append(line2, j, line2.length - j); return buf.toString(); } return line; } }
page/ PageBean
package baoyou.bean; public class PageBean { private int start; private int pageSize=20; private String sql; private String obj1=""; private String obj2=""; private String obj3=""; private String obj4=""; private String obj5=""; private String obj6=""; private String obj7=""; private String obj8=""; private String obj9=""; public int getStart() { return start; } public void setStart(int start) { this.start = start; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public String getSql() { return sql; } public void setSql(String sql) { this.sql = sql; } public String getObj1() { return obj1; } public void setObj1(String obj1) { this.obj1 = obj1; } public String getObj2() { return obj2; } public void setObj2(String obj2) { this.obj2 = obj2; } public String getObj3() { return obj3; } public void setObj3(String obj3) { this.obj3 = obj3; } public String getObj4() { return obj4; } public void setObj4(String obj4) { this.obj4 = obj4; } public String getObj5() { return obj5; } public void setObj5(String obj5) { this.obj5 = obj5; } public String getObj6() { return obj6; } public void setObj6(String obj6) { this.obj6 = obj6; } public String getObj7() { return obj7; } public void setObj7(String obj7) { this.obj7 = obj7; } public String getObj8() { return obj8; } public void setObj8(String obj8) { this.obj8 = obj8; } public String getObj9() { return obj9; } public void setObj9(String obj9) { this.obj9 = obj9; } }
action UserController
package baoyou.action; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import baoyou.bean.User; import baoyou.service.UserService; @Controller public class UserController { @Autowired UserService userService; @RequestMapping(value = "/showUserList") public String showUserList(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap, String pageNo, String choice, HttpSession session) { int total = userService.getCount(); int pageSize = 10; session.setAttribute("total", Integer.toString(total)); session.setAttribute("defaultPageSize", Integer.toString(pageSize)); List<User> list = userService.getList(pageNo, choice, pageSize, total); modelMap.put("list", list); return "userlist"; } }
service UserService
package baoyou.service; import java.util.List; import org.springframework.stereotype.Service; import baoyou.bean.PageBean; import baoyou.bean.User; import baoyou.bean.UserPool; import baoyou.page.PageSql; @Service public class UserService { public List<User> getList(String pageNo,String choice, int pageSize, int total){ PageBean pageBean = new PageBean(); int start = new PageSql() .getStartIndex(pageNo, choice, pageSize, total); pageBean.setPageSize(pageSize); pageBean.setStart(start); List<User> userList = UserPool.getInstance().getUserList(pageBean); return userList; } public int getCount(){ return UserPool.getInstance().getCount(); } }
jsp/ userlist.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://myself/tags-page" prefix="page"%> <%@ 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> </HEAD> <BODY bgcolor="#F8F8F4"> <table> <tbody> <tr> <td width="20%"><strong>用户ID</strong></td> <td width="10%"><strong>用户名</strong></td> <td width="10%"><strong>密码</strong></td> </tr> <c:forEach items="${list}" var="user"> <tr > <td width="20%"><c:out value="${user.userId}" /></td> <td width="10%"><c:out value="${user.userName}" /></td> <td width="10%"><c:out value="${user.password}" /></td> </tr> </c:forEach> </tbody> <tr> <td> <table> <tr> <page:pager action="showUserList.htm"> <td align="right"><page:navigator type="defaultPage"></page:navigator> </td> </page:pager> </tr> </table> </td> </tr> </table> </BODY> </HTML>
tld page.tld
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <taglib> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <shortname>page</shortname> <uri>http://myself/tags-page</uri> <info> The tag library of Pager </info> <!--====================page:pager begin=====================--> <tag> <name>pager</name> <tagclass>baoyou.page.PagerTag</tagclass> <teiclass>baoyou.page.PageTEI</teiclass> <bodycontent>JSP</bodycontent> <info> pager tag provide the frame of the page divider </info> <attribute> <name>defaultPageSize</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>action</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <!--======================page:pager end=========================--> <!--====================page:navigator begin=====================--> <tag> <name>navigator</name> <tagclass>baoyou.page.NavigatorTag</tagclass> <bodycontent>JSP</bodycontent> <info> navigator tag output the Navigator bar which pre-designed </info> <attribute> <name>type</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <!--======================page:navigator end=========================--> </taglib>
SpringWeb-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-autowire="byName"> <!-- 自动扫描controller bean,把作了注解的类转换为bean --> <context:component-scan base-package="baoyou" /> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="jsp/" p:suffix=".jsp"> <property name="order" value="0" /> </bean> </beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="WebApp_9" version="2.4"> <!-- here --> <servlet> <servlet-name>SpringWeb</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <jsp-config> <taglib> <taglib-uri>http://myself/tags-page</taglib-uri> <taglib-location>/WEB-INF/page.tld</taglib-location> </taglib> </jsp-config> <servlet-mapping> <servlet-name>SpringWeb</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> </web-app>
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!
相关推荐
113 文章管理功能-前端 Datatable 控件分页处理2 114 文章管理功能-补充内容(关于 PageHelper 的依赖问题) 115 文章管理功能-Thymeleaf 自定义标签1 115 文章管理功能-Thymeleaf 自定义标签2 116 文章管理功能-...
113 文章管理功能-前端 Datatable 控件分页处理2 114 文章管理功能-补充内容(关于 PageHelper 的依赖问题) 115 文章管理功能-Thymeleaf 自定义标签1 115 文章管理功能-Thymeleaf 自定义标签2 116 文章管理功能...
3、此底层包含泛型DAO、Proxool连接池、国际化语言、DateUtil工具、ExcelUtil报表工具、自定义封装的弹框、批量删除、分页、上传等。 4、包含常用的工具:jquery、easy-ui、日期控件、highcharts图表控件、图片放大...
Asp.net 2.0功能体验,细节之Web控件(一) 隐藏控件 Asp.net 2.0功能体验,总体设计思想 Asp.net 2.0 WebPart使用经验点滴 革新:.NET 2.0的自定义配置文件体系初探 关于如何在ASP.NET 2.0中定制Expression ...
(9)分页什么的都是基本必须实现的吧,其他人没什么了,代码都是经得起考验的,使用的技术也蛮多的,希望对大家有所帮助,有疑问信息我或者留言都可以; 原创版本,如果下到其他雷同的,那就是从本人这里复制的哈
它支持以下功能: 类似 Excel 的用户界面真正的2路数据绑定列过滤列排序导出到 Excel/CSV 分页行选择更新所有选定行中的单元格编辑键支持:up, down, left, right, page-up, page-down, tab, del, bs, enter, esc ...
Javashop开发规范V2.2 版本 说明 提交人 ...2.在spring文件中声明parent为baseSupport 3.通过this.baseDaoSupport操作数据库 实际使用的是:com.enation.eop.sdk.database.BaseJdbcDaoSupport 此种操作示例: ...
Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件...
Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...