通用分页(下)

通用分页

接上一次的博客

servlet

package com.zhangsiwen.test.action;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zhangsiwen.test.dao.StudentDao;
import com.zhangsiwen.test.entity.Student;
import com.zhangsiwen.test.util.PageBean;

public class StudentServlet extends HttpServlet{
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//获取参数
		Student stu = new Student();
		StudentDao  studao = new StudentDao();
		stu.setSname(req.getParameter("sname"));
		
		//初始化分页
		PageBean pageBean = new PageBean();
		pageBean.setRequest(req);
		req.setAttribute("pageBean", pageBean);
		//后台分页查询
		List student= studao.find(stu,pageBean);
		req.setAttribute("student", student);
		//跳转界面
		req.getRequestDispatcher("/studentList.jsp").forward(req, resp);
	
	}
}

配置web.xml



  J2EE_09
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
  
  
  	EncodingFiter
  	com.zhangsiwen.test.util.EncodingFiter
  
  
  	EncodingFiter
  	/*
  
  
  
  
  	studentServlet
  	com.zhangsiwen.test.action.StudentServlet
  
  
  
   studentServlet
   /studentAction.action
  

写一个.tld文件




	1.0
	1.2
	Simple Tags
	/zhangsiwen
	
	
	
		page
		com.zhangsiwen.test.tag.PageTag
		jsp
		
			pageBean
			true
			true
		
	


page的标签助手类

package com.zhangsiwen.test.tag;

import java.lang.reflect.InvocationTargetException;
import java.util.Map;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;


import com.zhangsiwen.test.util.PageBean;

public class PageTag extends BodyTagSupport{

	private static final long serialVersionUID = 1L;
	private PageBean pageBean;
	public PageBean getPageBean() {
		return pageBean;
	}
	public void setPageBean(PageBean pageBean) {
		this.pageBean = pageBean;
	}
	
	@Override
	public int doStartTag() throws JspException {
		try {
			JspWriter out= this.pageContext.getOut();
			out.println(toHtml());
			return SKIP_BODY;
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
		
	}
	
	public String toHtml() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
		StringBuffer sb=new StringBuffer();
		//防止pagebean空指针异常
		if(null==pageBean||!pageBean.isPagination()) {
			return sb.toString();
		}
		//分页按钮
		sb.append("
\r\n" + " 当前第"+pageBean.getPage()+"页   共"+pageBean.getMaxPage()+"页   共"+pageBean.getTotal()+"条  \r\n" + " 首页 \r\n" + " 上一页 \r\n" + " 下一页 \r\n" + " 尾页\r\n" + " \r\n" + " GO\r\n" + "
"); //分页隐藏域表单 专门用来传递数据的 sb.append("
"); sb.append(""); //从map集合中获取参数 Map parameterMap= pageBean.getParameterMap(); //遍历集合 for(Map.Entry entry:parameterMap.entrySet()) { String name=entry.getKey(); String[] value=entry.getValue(); if("page".equals(name)) {//将上一次的页面抛掉 continue;//退出循环进入下一个循环 } //遍历数组 for (int i = 0; i < value.length; i++) { sb.append(""); } } sb.append(""); //动态拼接js sb.append(""); return sb.toString(); } }

在jsp页面中调用自定义标签

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@taglib prefix="z" uri="/zhangsiwen" %>




Insert title here
 


 

学生查询 <%= System.currentTimeMillis() %>

姓名:
学号 姓名 年龄 备注 操作
${s.sid } ${s.sname } ${s.age } ${s.remark } 操作

运行结果:
通用分页(下)_第1张图片
总结:
我们在写了一遍通用分页之后,在之后需要使用到的时候就可以拿来使用。

你可能感兴趣的:(通用分页(下))