栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

j2ee通用分页 下

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

j2ee通用分页 下

目录

1.实体类

 2.dao类

3.工具类(util) 

 4.Jsp页面


1.实体类
  • Book.java 
package com.jmh.entity;

import javax.servlet.http.HttpServletRequest;


public class Book{
    private int book_id;//编号
    private String book_name;//名称
    private float price;//价格
    private Integer sa;

    public int getBook_id() {
        return book_id;
    }

    public String getBook_name() {
        return book_name;
    }

    public float getPrice() {
        return price;
    }

    public void setBook_id(int book_id) {
        this.book_id = book_id;
    }

    public void setBook_name(String book_name) {
        this.book_name = book_name;
    }

    public void setPrice(float price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Book{" +
                "book_ + book_id +
                ", book_name='" + book_name + ''' +
                ", price=" + price +
                '}';
    }

    public Book(int book_id, String book_name, float price) {
        this.book_id = book_id;
        this.book_name = book_name;
        this.price = price;
    }

    public Book() {
    }

}

 2.dao类
  •  BookDao.java
package com.jmh.dao;

import com.jmh.base.BaseDao;
import com.jmh.entity.Book;
import com.jmh.util.CommonUtils;
import com.jmh.util.PageBean;
import com.jmh.util.StringUtils;

import java.lang.reflect.InvocationTargetException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class BookDao extends BaseDao {
   public List query(Book b, PageBean pbs){
       //定义基础查询语句
       String sql="select book_id,book_name,price from tb_book where 1=1 ";
       //判断是否符合模糊查询条件     书本名称不为空
       if(StringUtils.isNotBlank(b.getBook_name())){//符合
           //符合就往基础查询语句里面追加模糊查询SQL语句
        sql+=" and book_name like '%"+b.getBook_name()+"%'";
       }

       return  this.exequery(sql, pbs, new callBase() {
           @Override
           public List rsForeach(ResultSet rs) throws InvocationTargetException, SQLException, InstantiationException, IllegalAccessException, NoSuchMethodException {
               List books = CommonUtils.toList(rs, Book.class);
               return  books;
           }
       });
   }
}
  •  BaseDao.java
package com.jmh.base;

import com.jmh.util.DBHelper;
import com.jmh.util.PageBean;

import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class BaseDao {
    
    public interface callBase{
        public List rsForeach(ResultSet rs) throws InvocationTargetException, SQLException, InstantiationException, IllegalAccessException, NoSuchMethodException;
    }
    private Connection con;
    private PreparedStatement ps;
    private ResultSet rs;
    private List list;
    public List exequery(String sql, PageBean pb,callBase ca){
    list=new ArrayList<>();
    //创建连接
    con= DBHelper.getConnection();
    try {
    //判断是否符合统计总数据量
        if(null!=pb&&pb.isPageaction()){//如果对象不为空 并且要分页
            ps=con.prepareCall(this.sumCount(sql));
            rs=ps.executeQuery();
            if(rs.next()){
                pb.setTotls(rs.getInt(1));
            }
            //释放资源
            DBHelper.close(null,ps,rs);
        }
    //判断是否符合分页查询
        if(null!=pb&&pb.isPageaction()){//如果对象不为空 并且要分页
            sql=this.pageIng(sql,pb);
        }
        ps=con.prepareCall(sql);
        rs=ps.executeQuery();
        //返回 回去
        return  ca.rsForeach(rs);
    }catch (Exception e){
        e.printStackTrace();
    }finally {
        DBHelper.close(con,ps,rs);
    }
        return  list;
    }

    
    public String sumCount(String sql){
        String sumCount=" select count(0) from ( "+sql+" ) e";
        //System.out.println("总数据量==="+sumCount);
        return sumCount;
    }

    
    public String pageIng(String sql,PageBean pb){
        String pageIng=sql+" limit "+(pb.getPage()-1)*pb.getRows()+" , "+pb.getRows();
       // System.out.println("分页==="+pageIng);
        return pageIng;
    }
}

3.工具类(util) 
  • CommonUtils.java
package com.jmh.util;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


public class CommonUtils {
    public static  List toList(ResultSet rs,Class ca) throws SQLException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException {
        //1.实例化集合
        List list=new ArrayList();
        //2.获取结果集、集合
        ResultSetMetaData me = rs.getMetaData();
        //3.获取所有属性 根据类方法
        Field[] fe = ca.getDeclaredFields();
        //开始遍历
        while(rs.next()){
            //根据类方法获取对象
            T t = ca.newInstance();
            //遍历结果集、集合获取列名
            for (int i=0;i 
  • EncodingFilter.java
package com.jmh.util;

import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class EncodingFilter implements Filter {

	private String encoding = "UTF-8";// 默认字符集

	public EncodingFilter() {
		super();
	}

	public void destroy() {
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse res = (HttpServletResponse) response;

		// 中文处理必须放到 chain.doFilter(request, response)方法前面
		res.setContentType("text/html;charset=" + this.encoding);
		if (req.getMethod().equalsIgnoreCase("post")) {
			req.setCharacterEncoding(this.encoding);
		} else {
			Map map = req.getParameterMap();// 保存所有参数名=参数值(数组)的Map集合
			Set set = map.keySet();// 取出所有参数名
			Iterator it = set.iterator();
			while (it.hasNext()) {
				String name = (String) it.next();
				String[] values = (String[]) map.get(name);// 取出参数值[注:参数值为一个数组]
				for (int i = 0; i < values.length; i++) {
					values[i] = new String(values[i].getBytes("ISO-8859-1"),
							this.encoding);
				}
			}
		}

		chain.doFilter(request, response);
	}

	public void init(FilterConfig filterConfig) throws ServletException {
		String s = filterConfig.getInitParameter("encoding");// 读取web.xml文件中配置的字符集
		if (null != s && !s.trim().equals("")) {
			this.encoding = s.trim();
		}
	}

}
  •  PageBean.java
package com.jmh.util;

import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;
import java.util.Map;


public class PageBean{
	private Integer page=1;//当前页码 默认为第一页
	private Integer rows=10;//页大小 默认页大小为10条
	private Integer totls=0;//总数据量 默认为0
	private boolean pageaction=true;//判断是否要分页 默认要分页
	private String url;//请求路径
	private Map map;//请求参数、保存请求的参数
	public PageBean() {
	}

	public PageBean(Integer page, Integer rows, Integer totls, boolean pageaction, String url, Map map) {
		this.page = page;
		this.rows = rows;
		this.totls = totls;
		this.pageaction = pageaction;
		this.url = url;
		this.map = map;
	}

	public Integer getPage() {
		return page;
	}
	public void setPage(Integer page) {
		this.page = page;
	}
	public void setPage(String page) {
		if(null!=page){
			this.page = Integer.parseInt(page);
		}
	}
	public Integer getRows() {
		return rows;
	}
	public void setRows(Integer rows) {
		this.rows = rows;
	}
	public void setRows(String rows) {
		if(null!=rows){
			this.rows = Integer.parseInt(rows);
		}
	}
	public Integer getTotls() {
		return totls;
	}
	public void setTotls(Integer totls) {
		this.totls = totls;
	}
	public void setTotls(String totls) {
		if(null!=totls){
			this.totls = Integer.parseInt(totls);
		}
	}
	public boolean isPageaction() {
		return pageaction;
	}
	public void setPageaction(boolean pageaction) {
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}

	public Map getMap() {
		return map;
	}

	public void setMap(Map map) {
		this.map = map;
	}

	@Override
	public String toString() {
		return "PageBean [page=" + page + ", rows=" + rows + ", totls=" + totls + ", pageaction=" + pageaction
				+ ", url=" + url + ", map=" + map + "]";
	}
	
	public void initPageBase(HttpServletRequest req){
		//设置页码
		this.setPage(req.getParameter("page"));
		//设置页大小
		this.setRows(req.getParameter("rows"));
		//设置总数量
		this.setTotls(req.getParameter("totls"));
		//设置是否分页
		this.setPageaction(Boolean.parseBoolean(req.getParameter("pageaction")));
		//设置URL
		this.setUrl(req.getRequestURI());
		//设置map集合
		this.setMap(req.getParameterMap());
	}
	
	public int getPrePage(){
		if(this.page==1){
			return this.page;
		}
		return this.page-1;
	}
	
	public int getMaxPage(){
		int page=this.totls/this.rows;
		if(this.totls%this.rows!=0){
			page++;
		}
		return page;
	}
	
	public int getNextPage(){
		int next=this.page+1;
		if(this.page==getMaxPage()){
			return this.page;
		}
		return this.page+1;
	}

}
  •  PageTag.java
package com.jmh.util;

import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

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

import com.jmh.util.PageTag;

public class PageTag extends BodyTagSupport {
	private PageBean pageBean;

	public PageTag() {
		super();
	}

	public PageBean getPageBean() {
		return pageBean;
	}

	public void setPageBean(PageBean pageBean) {
		this.pageBean = pageBean;
	}

	@Override
	public int doStartTag() throws JspException {
		JspWriter out = pageContext.getOut();
		try {
			out.println(toHtml());
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
		return super.doStartTag();
	}
	
	
	private String toHtml() {
		//pageBean为空或者 不分页
		if(null==pageBean || !pageBean.isPageaction()) {
			return "";
		}
		StringBuilder sb = new StringBuilder();
		//拼接form表单
		
		sb.append("
"); sb.append(""); //参数列表 Map map = pageBean.getMap(); String name =null; String[] values = null; // bookName = '不短命' hobby="篮球" hobby="足球" page="2" Set> entrySet = map.entrySet(); for (Entry entry : entrySet) { name = entry.getKey(); if(name.equals("page")) { continue; } values = entry.getValue(); for (String value : values) { // // // sb.append(""); } } sb.append(""); //拼接div部分 sb.append(""); sb.append("第"+pageBean.getPage()+"页/总共"+pageBean.getMaxPage()+"页,共"+pageBean.getTotls()+"条记录 "); //首页 上一页 if(pageBean.getPage()!=1) { sb.append("首页 rn" + " 上一页 "); }else { sb.append("首页 上一页 "); } //末页 下一页 if(pageBean.getPage()!=pageBean.getMaxPage()) { sb.append("下一页 rn" + " 末页 "); }else { sb.append("下一页 末页 "); } //跳转页 sb.append(" "); sb.append("GO"); sb.append(""); //拼接js sb.append(""); return sb.toString(); } }
  •  StringUtils.java
package com.jmh.util;

public class StringUtils {
	// 私有的构造方法,保护此类不能在外部实例化
	private StringUtils() {
	}

	
	public static boolean isBlank(String s) {
		boolean b = false;
		if (null == s || s.trim().equals("")) {
			b = true;
		}
		return b;
	}
	
	
	public static boolean isNotBlank(String s) {
		return !isBlank(s);
	}

}

 4.Jsp页面
  •  indexTwo.jsp
<%--
  Created by IntelliJ IDEA.
  User: 蒋明辉
  Date: 2022/7/1
  Time: 19:41
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="l" uri="/zking" %>


    书本主页

<%--编写js代码
--%>

<%--判断如果指定的数据为空就跳转页面--%>

    

<%--再次发出请求

    
--%> 书本主页 <%--模糊查询组件--%>
书本名称: 
<%--开始遍历--%>
书本编号 书本名称 书本价格
${sa.book_id} ${sa.book_name} ${sa.price}
<%--分页组件--%> <%-- 当前第${pageBase.page}页/${pageBase.totls}条数据  首页  上一页  下一页  尾页  跳转 --%> ${pageBase}

效果图


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003550.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号