使用JSP自定义标签实现简易分页功能

今天学习了JSP的自定义标签的3个创建方式特此开始记录下来

DB类

package com.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class dbUtil {

	Connection con=null;
	ResultSet rs=null;
	PreparedStatement pst=null;
	
	public void getConnection(){
		
		try {
			Class.forName("com.mysql.jdbc.Driver");
			
			con = DriverManager.getConnection("jdbc:mysql://localhost:3306/studb","root","123456");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}
	/**
	 * 添加、修改、查询
	 * @param sql
	 * @param param
	 * @return
	 */
	public int execUpdate(String sql,Object[] param){
		int row = -1;
		getConnection();
		try {
			pst = con.prepareStatement(sql);
			
			if(param!=null){
				for(int i=0;i<param.length;i++){
					pst.setObject(i+1,param[i]);
				}
			}
			row = pst.executeUpdate();
		} catch (Exception e) {
			// TODO: handle exception
		}
		return row;
	}
	public ResultSet execQuery(String sql,Object[] param){
		getConnection();
		try {
			pst = con.prepareStatement(sql);
			if(param!=null){
				for(int i=0;i<param.length;i++){
					pst.setObject(i+1,param[i]);
				}
			}
			
			rs = pst.executeQuery();
		} catch (Exception e) {
			// TODO: handle exception
		}
		return rs;
	}
	/**
	 * 关闭
	 * @param rs
	 */
	public void getClose(ResultSet rs){
		
		try {
			if(rs!=null){
				rs.close();
			}
			if(con!=null){
				con.close();
			}
			if(pst!=null){
				pst.close();
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
}

DAO类

package com.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.pojo.Page;
import com.pojo.Student;

public class studentDAO {

	dbUtil db = new dbUtil();
	/**
	 * 分頁
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public Page<Student> Query(int pageNo,int pageSize,String tab){
		
		ArrayList<Student> list = new ArrayList<>();
		
		Page<Student> pa = new Page<Student>();
		
		int page =(pageNo-1)*pageSize;
		
		ResultSet rs = db.execQuery("SELECT * FROM "+tab+" LIMIT "+page+","+pageSize+";", null);
		try {
			while(rs.next()){
				Student stu = new Student();
				stu.setId(rs.getInt(1));
				stu.setName(rs.getString(2));
				stu.setSex(rs.getString(3));
				stu.setAge(rs.getInt(4));
				stu.setAddress(rs.getString(5));
				list.add(stu);
			}
			pa.setCount(getCount(tab));
			pa.setPageNo(pageNo);
			pa.setPageSize(pageSize);
			pa.setData(list);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return pa;
		
	}
    //返回的是数据库的总数量
	public int getCount(String tab){
		
		ResultSet rs = db.execQuery("select count(*) from "+tab+"", null);
		
		int row=0;
		try {
			while(rs.next()){
				row=rs.getInt(1);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return row;
	}
}

pojo类

package com.pojo;

import java.util.ArrayList;

public class Page<T> {

	// 每页存放5条数据
	private int pageSize = 5;
	// 当前页数
	private int pageNo = 1;
	// 总的数量
	private int count = 0;
	// 数据存放
	private ArrayList<T> data = null;

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getPageNo() {
		return pageNo;
	}

	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}

	public int getCount() {
		return count;
	}

	public void setCount(int count) {
		this.count = count;
	}

	public ArrayList<T> getData() {
		return data;
	}

	public void setData(ArrayList<T> data) {
		this.data = data;
	}

	// 首页
	public int getIndexPage() {

		return 1;
	}

	// 上一页
	public int getUpPage() {

		int page = pageNo - 1;
		if (page <= 1) {
			page = 1;
		}
		return page;
	}

	// 下一页
	public int getDownPage() {
		int page = pageNo + 1;
		if (page >= getSumPage()) {

			page = getSumPage();
		}
		return page;
	}

	// 尾页 总页数
	public int getSumPage() {

		if (count % pageSize == 0) {

			return count / pageSize;

		} else {
			return count / pageSize + 1;
		}
	}

	// 尾页
	public int getLastPage() {

		if (count % pageSize == 0) {

			return count / pageSize;

		} else {
			return count / pageSize + 1;
		}
	}
}

标签实现类

package com.zuxia;

import java.io.IOException;
import java.util.ArrayList;

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

import com.dao.studentDAO;
import com.pojo.Page;
import com.pojo.Student;

public class pageTag extends TagSupport{
	
	private Integer pageIndex;
	private Integer pageSize;
	private String tableName;
	
	public Integer getPageIndex() {
		return pageIndex;
	}

	public void setPageIndex(Integer pageIndex) {
		this.pageIndex = pageIndex;
	}

	public Integer getPageSize() {
		return pageSize;
	}

	public void setPageSize(Integer pageSize) {
		this.pageSize = pageSize;
	}

	public String getTableName() {
		return tableName;
	}

	public void setTableName(String tableName) {
		this.tableName = tableName;
	}

	@Override
	public int doStartTag() throws JspException {
		// TODO Auto-generated method stub
		JspWriter out = pageContext.getOut();
		Page<Student> page = new studentDAO().Query(pageIndex, pageSize, tableName);
		ArrayList<Student> list = page.getData();
		try {
			out.print("<table border='1' cellspacing='0' cellpadding='5' width='50%' align='center'>");
				out.print("<tr>");
				out.print("<td><h3>");out.print("序号");out.print("</h3></td>");
				out.print("<td><h3>");out.print("姓名");out.print("</h3></td>");
				out.print("<td><h3>");out.print("性别");out.print("</h3></td>");
				out.print("<td><h3>");out.print("年龄");out.print("</h3></td>");
				out.print("<td><h3>");out.print("地址");out.print("</h3></td>");
				out.print("</tr>");
			for (int i=0;i<list.size();i++) {
				Student stu = list.get(i);
				out.print("<tr>");
				out.println("<td>"+stu.getId()+"</td>");
				out.println("<td>"+stu.getName()+"</td>");
				out.println("<td>"+stu.getSex()+"</td>");
				out.println("<td>"+stu.getAge()+"</td>");
				out.println("<td>"+stu.getAddress()+"</td>");
				out.print("</tr>");
			}
			
			out.print("<tr>");
			out.print("<td colspan='5' style='text-align: center;'>");
			out.print("<a href='index.jsp?pageIndex=1'>首页</a>&nbsp;&nbsp;<a href='index.jsp?pageIndex="+page.getUpPage()+"'>上一页</a>&nbsp;&nbsp;<a href='index.jsp?pageIndex="+page.getDownPage()+"'>下一页</a>&nbsp;&nbsp;<a href='index.jsp?pageIndex="+page.getSumPage()+"'>尾页</a>");
			out.print("</td>");
			out.print("</tr>");
			out.print("</table>");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return SKIP_BODY;
	}
	
	@Override
	public int doAfterBody() throws JspException {
		// TODO Auto-generated method stub
		return super.doAfterBody();
	}
	
	@Override
	public int doEndTag() throws JspException {
		// TODO Auto-generated method stub
		return super.doEndTag();
	}
	
}

pageTag.tld配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
        "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
        
<taglib>
	<!-- taglib的版本 -->
	<tlib-version>1.0</tlib-version>
	<!-- jsp的版本 -->
	<jsp-version>1.2</jsp-version>
	<!-- 标签的短名 -->
	<short-name>myTag</short-name>
	<!-- 提供给jsp页面引用的路径 -->
	<uri>page.com</uri>
	<tag>
		<!-- 标签名 -->
		<name>page</name>
		<!-- 路径 -->
		<tag-class>com.zuxia.pageTag</tag-class>
		<!-- 标签类型(empty/jsp) -->
		<body-content>empty</body-content>
		<attribute>
			<!-- 变量名称 -->
			<name>pageIndex</name>
			<!-- 是否必填 -->
			<required>true</required>
			<!-- 是否可以输入表达式-->
			<rtexprvalue>true</rtexprvalue>
			<!-- 提示信息 -->
			<description>请输入起始坐标</description>
		</attribute>
		<attribute>	
			<!-- 变量名称 -->
			<name>pageSize</name>
			<!-- 是否必填 -->
			<required>true</required>
			<!-- 是否可以输入表达式-->
			<rtexprvalue>true</rtexprvalue>
			<!-- 提示信息 -->
			<description>请输入起始坐标</description>
		</attribute>	
		<attribute>
			<!-- 变量名称 -->
			<name>tableName</name>
			<!-- 是否必填 -->
			<required>true</required>
			<!-- 是否可以输入表达式-->
			<rtexprvalue>true</rtexprvalue>
			<!-- 提示信息 -->
			<description>请输入起始坐标</description>
		</attribute>
	</tag>
</taglib>

页面引用

<%@ taglib uri="page.com" prefix="myTag" %>

<%
		request.setCharacterEncoding("UTF-8");
	%>
	<myTag:page pageIndex="${param.pageIndex == null ? 1 : param.pageIndex}" pageSize="5" tableName="stuinfo"/>

好了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值