`
knight_black_bob
  • 浏览: 825103 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

分页 自定义控件 spring

    博客分类:
  • jsp
阅读更多

先看效果  样式 可以 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> &lt;&lt; </span>" + "</a></span>";
			
			lastText = "<span><a href='last' "
				+ "onClick=\"javascript:document.pager.pageNo.value="+totalPages+";document.pager.submit();return false;\">"
				+ "<span> &gt;&gt; </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捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

 

  • 大小: 16.5 KB
  • 大小: 27.9 KB
  • 大小: 32.2 KB
  • 大小: 33.2 KB
分享到:
评论

相关推荐

    Java微服务架构l零从基础到精通高清视频教程全套 163课

    113 文章管理功能-前端 Datatable 控件分页处理2 114 文章管理功能-补充内容(关于 PageHelper 的依赖问题) 115 文章管理功能-Thymeleaf 自定义标签1 115 文章管理功能-Thymeleaf 自定义标签2 116 文章管理功能-...

    Java微服务架构163课

    113 文章管理功能-前端 Datatable 控件分页处理2 114 文章管理功能-补充内容(关于 PageHelper 的依赖问题) 115 文章管理功能-Thymeleaf 自定义标签1 115 文章管理功能-Thymeleaf 自定义标签2 116 文章管理功能...

    java底层代码:泛型DAO+SSH+Proxool连接池+国际化语言

    3、此底层包含泛型DAO、Proxool连接池、国际化语言、DateUtil工具、ExcelUtil报表工具、自定义封装的弹框、批量删除、分页、上传等。 4、包含常用的工具:jquery、easy-ui、日期控件、highcharts图表控件、图片放大...

    asp.net知识库

    Asp.net 2.0功能体验,细节之Web控件(一) 隐藏控件 Asp.net 2.0功能体验,总体设计思想 Asp.net 2.0 WebPart使用经验点滴 革新:.NET 2.0的自定义配置文件体系初探 关于如何在ASP.NET 2.0中定制Expression ...

    北大青鸟学士后第三单元OA办公自动化管理系统

    (9)分页什么的都是基本必须实现的吧,其他人没什么了,代码都是经得起考验的,使用的技术也蛮多的,希望对大家有所帮助,有疑问信息我或者留言都可以; 原创版本,如果下到其他雷同的,那就是从本人这里复制的哈

    vue-excel-editor:用于以 Excel 样式显示和编辑对象数组的 Vue2 插件

    它支持以下功能: 类似 Excel 的用户界面真正的2路数据绑定列过滤列排序导出到 Excel/CSV 分页行选择更新所有选定行中的单元格编辑键支持:up, down, left, right, page-up, page-down, tab, del, bs, enter, esc ...

    Javashop开发规范V2.2

    Javashop开发规范V2.2 版本 说明 提交人 ...2.在spring文件中声明parent为baseSupport 3.通过this.baseDaoSupport操作数据库 实际使用的是:com.enation.eop.sdk.database.BaseJdbcDaoSupport 此种操作示例: ...

    JAVA上百实例源码以及开源项目

    Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP  Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件...

    JAVA上百实例源码以及开源项目源代码

    Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP  Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件...

    java开源包1

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包11

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包2

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包3

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包6

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包5

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包10

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包4

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

Global site tag (gtag.js) - Google Analytics