目录
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("");
//拼接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代码
--%>
<%--判断如果指定的数据为空就跳转页面--%>
<%--再次发出请求
--%>
书本主页
<%--模糊查询组件--%>
- 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("");
//拼接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代码
--%>
<%--判断如果指定的数据为空就跳转页面--%>
<%--再次发出请求
- 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("");
//拼接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();
}
}
- 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} |
效果图



