java页面分页显示代码_通用分页jsp页面显示
注:本章内容都是在上一篇文章 通用分页后台显示:https://www.cnblogs.com/ly-0919/p/11058942.html 的基础上进行改进,所以有许多的类都在上一篇,
带来不便请谅解!!!
通用分页的核心
.将上一次查询请求再发一次,只不过改变了页码。
本章重点:
1、改造上次PageBean里 的内容;
2、页面展示
3、创建控制层 servlet
4、自定义分页标签
5、助手类信息
1、补全后的PageBean:
package com.yuan.util;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;/**
* 分页工具类
**/
public classPageBean {private int page = 1;//页码
private int rows = 10;//页大小
private int total = 0;//总记录数
private boolean pagination = true;//是否分页
private Map paMap = new HashMap<>();privateString url;public voidsetRequest(HttpServletRequest req) {
Map parameterMap =req.getParameterMap();
StringBuffer url=req.getRequestURL();//保存上一次请求所携带的参数
this.setPaMap(req.getParameterMap());this.setUrl(req.getRequestURL().toString());//在jsp页面来控制是否分页//this.setPagination(req.getParameter("pagination"));//在jsp页面控制一页展示多少条信息//this.setRows(req.getParameter("rows"));
this.setPage(req.getParameter("page"));
}//setPage重载
private voidsetPage(String page) {this.page = StringUtils.isNotBlank(page) ? Integer.valueOf(page):this.page;
}//setPagination重载
public voidsetPagination(String pagination) {this.pagination = StringUtils.isNotBlank(pagination) ? !"false".equals(pagination):this.pagination;
}//setRows重载
public voidsetRows(String rows) {this.rows = StringUtils.isNotBlank(rows)?Integer.valueOf(rows):this.rows;
}public MapgetPaMap() {returnpaMap;
}public void setPaMap(MappaMap) {this.paMap =paMap;
}publicString getUrl() {returnurl;
}public voidsetUrl(String url) {this.url =url;
}publicPageBean() {
super();
}public intgetPage() {returnpage;
}public void setPage(intpage) {this.page =page;
}public intgetRows() {returnrows;
}public void setRows(introws) {this.rows =rows;
}public intgetTotal() {returntotal;
}public void setTotal(inttotal) {this.total =total;
}public voidsetTotal(String total) {this.total =Integer.parseInt(total);
}publicboolean isPagination() {returnpagination;
}public voidsetPagination(boolean pagination) {this.pagination =pagination;
}/**
* 获得起始记录的下标
*
* @return*/
public intgetStartIndex() {return (this.page - 1) * this.rows;
}
@OverridepublicString toString() {return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination + "]";
}/**
* 获取最大页码数
* @return*/
public intgetMaxPage() {return this.total % this.rows == 0 ? this.total / this.rows : this.total / this.rows+1;
}/**
* 下一页
* @return*/
public intgetNexPage() {return this.page < this.getMaxPage() ? this.page+1 : this.page;
}/**
* 上一页
* @return*/
public intgetPreviousPage() {return this.page > 1 ? this.page-1 : this.page;
}
}
2、jsp页面展示,分页代码插入到了控制层的Servlet里面
Insert title here
小说目录
书名:
编号 | 名称 | 价格 |
${s.bid } | ${s.bname } | ${s.price} |
3、创建控制层Servlet
packagecom.web;importjava.io.IOException;importjava.sql.SQLException;importjava.util.List;importjava.util.Map;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importcom.yuan.dao.BookDao;importcom.yuan.entity.Book;importcom.yuan.util.PageBean;public class BookServlet extendsHttpServlet {/****/
private static final long serialVersionUID = 1L;private BookDao bookDao = newBookDao();
@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {
doPost(req, resp);
}
@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {
String bname= req.getParameter("bname");
Book book= newBook();
book.setBname(bname);//
PageBean bean = newPageBean();try{
bean.setRequest(req);
List list = this.bookDao.list(book,bean);
req.setAttribute("bookList", list);
req.setAttribute("pageBean", bean);
req.getRequestDispatcher("/BookList.jsp").forward(req, resp);
}catch (InstantiationException | IllegalAccessException |SQLException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
附:web.xml文件配置
Test_pagebean
bookServlet
com.web.BookServlet
bookServlet
/bookServlet.action
4、自定义分页标签
packagecom.tag;importjava.io.IOException;importjava.util.Map;importjava.util.Map.Entry;importjava.util.Set;importjavax.servlet.jsp.JspException;importjavax.servlet.jsp.JspWriter;importjavax.servlet.jsp.tagext.BodyTagSupport;importcom.yuan.util.PageBean;public class PageTag extendsBodyTagSupport {/****/
private static final long serialVersionUID = 1L;privatePageBean pageBean;publicPageBean getPageBean() {returnpageBean;
}public voidsetPageBean(PageBean pageBean) {this.pageBean =pageBean;
}
@Overridepublic int doStartTag() throwsJspException {
JspWriter out=pageContext.getOut();try{
out.print(toHTML());
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}return super.doStartTag();
}privateString toHTML() {
StringBuilder sb= newStringBuilder();//拼接下一次发送请求所要提交的隐藏的form表单
sb.append("
");
sb.append("");
Map paMap =pageBean.getPaMap();if(paMap != null && paMap.size()>0) {
Set> entrySet =paMap.entrySet();for (Entryentry : entrySet) {//上一次请求可能携带页码name=page的参数,但是改参数在前面已经单独赋值,//因为上一次请求是第一页的数据,下一次可能是第二页,一位这前后请求page对应的值是不一样的,需要单独赋值
if(!"page".equals(entry.getKey())) {for(String val:entry.getValue()) {
sb.append("");
}
}
}
}
sb.append("
");//拼接分页条
sb.append("
sb.append("每页"+pageBean.getRows()+"条,共"+pageBean.getTotal()+"条,第"+pageBean.getPage()+"页,共"+pageBean.getMaxPage()+"页
sb.append(" href='javascript:gotoPage(1)'>首页
sb.append(" href='javascript:gotoPage("+pageBean.getPreviousPage()+")'>上一页
sb.append(" href='javascript:gotoPage("+pageBean.getNexPage()+")'>下一页
sb.append(" href='javascript:gotoPage("+pageBean.getMaxPage()+")'>尾页
sb.append(" id='skipPage'");
sb.append(" style='text-align: center; font-size: 12px; width: 50px;'>
sb.append(" href='javascript:skipPage()'>Go
");
sb.append("
");//拼接分页所需要的js代码
sb.append("
sb.append(" function gotoPage(page) {");
sb.append(" document.getElementById('pageBeanForm').page.value = page;");
sb.append(" document.getElementById('pageBeanForm').submit();");
sb.append(" }");
sb.append(" function skipPage() {");
sb.append(" var page = document.getElementById('skipPage').value;");
sb.append(" if(!page || isNaN(page) || parseInt(page)<1 || parseInt(page)>"+pageBean.getMaxPage()+"){");
sb.append(" alert('请输入1~N的数字');");
sb.append(" return;");
sb.append(" }");
sb.append(" gotoPage(page);");
sb.append(" }");
sb.append(" ");returnsb.toString();
}
}
.注意在append拼接时需要注意空格
将自定义标签的类配到tld文件中
/p>
PUBLIC"-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
1.0
1.2
test
/zking
Page //标签库中的标签名
com.tag.PageTag//标签的助手类全路径名
JSP
pageBean//标签属性名 在配置的时候必须与助手类的属性一致
true//该属性是否必填
true//是否支持表达式(EL)
5、助手类信息
StringUtils :
packagecom.yuan.util;public classStringUtils {//私有的构造方法,保护此类不能在外部实例化
privateStringUtils() {
}/*** 如果字符串等于null或去空格后等于"",则返回true,否则返回false
*
*@params
*@return
*/
public static booleanisBlank(String s) {boolean b = false;if (null == s || s.trim().equals("")) {
b= true;
}returnb;
}/*** 如果字符串不等于null或去空格后不等于"",则返回true,否则返回false
*
*@params
*@return
*/
public static booleanisNotBlank(String s) {return !isBlank(s);
}
}
EncodingFiter :
packagecom.yuan.util;importjava.io.IOException;importjava.util.Iterator;importjava.util.Map;importjava.util.Set;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.annotation.WebFilter;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/*** 中文乱码处理
**/@WebFilter(urlPatterns=("/*"))public class EncodingFiter implementsFilter {private String encoding = "UTF-8";//默认字符集
publicEncodingFiter() {super();
}public voiddestroy() {
}public voiddoFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throwsIOException, 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) throwsServletException {
String s= filterConfig.getInitParameter("encoding");//读取web.xml文件中配置的字符集
if (null != s && !s.trim().equals("")) {this.encoding =s.trim();
}
}
}
jsp页面显示(首页):
下一页:
尾页:
上一页:
跳转:
如需要对另一个数据库表的信息进行分页,需修改dao层查询的语句,新建实体类;还有就是新建一个servlet和jsp页面。
完善上一篇后台显示对比的另一个实体类;
新建servlet和jsp页面。
jsp页面代码:
Insert title here
小说目录
书名:
编号 | 名称 |
${s.id } | ${s.bookName } |
控制层Servlet:
packagecom.web;importjava.io.IOException;importjava.sql.SQLException;importjava.util.List;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importcom.yuan.dao.BlogDao;importcom.yuan.entity.Bookxyj;importcom.yuan.util.PageBean;
@WebServlet("/BlogServlet")public class BlogServlet extendsHttpServlet {/****/
private static final long serialVersionUID = 1L;private BlogDao blogDao = newBlogDao();
@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {
doPost(req, resp);
}
@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {
Bookxyj xyj= newBookxyj();
xyj.setBookName(req.getParameter("bookName"));
PageBean pageBean= newPageBean();try{
pageBean.setRequest(req);
List list = this.blogDao.list(xyj, pageBean);
req.setAttribute("blogList", list);
req.setAttribute("pageBean", pageBean);
req.getRequestDispatcher("/blogList.jsp").forward(req, resp);
}catch (InstantiationException | IllegalAccessException |SQLException e) {
e.printStackTrace();
}super.doPost(req, resp);
}
}
谢谢观看!!!上一篇地址 https://www.cnblogs.com/ly-0919/p/11058942.html
java页面分页显示代码_通用分页jsp页面显示相关推荐
- java里的文件显示繁体_关于在JSP页面上同时显示简体和繁体的问题(字符编码)...
编写过JSP页面的朋友大概对于中文乱码问题已经是司空见惯了,网上对于这方面问题的解决办法也很多,在此我就不多赘述了. 但是最近我遇到了一个问题,就是我编写过的页面,有时候会显示繁体字:而这个是通常的G ...
- 最佳页面置换算法代码_(存储管理)页面置换算法
1. 最佳(OPT,Optimal) 所选择的被换出的页面将是永久或者是最长时间内不再被访问,通常可以保证获得最低的缺页率.是一种理论上的算法,因为无法知道一个页面多长时间不再被访问.所以常用于评价其 ...
- java通用分页条件查询_通用分页查询
packagecom.dao;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;import ...
- vs中列表分页符代码_电脑办公技巧Excel中Ctrl+K的使用技巧(十二)/Word2016中快速删除分页符与空白页的方法...
ctrl+k是超链接的快捷键,你可以批量创建超链接,学会使用这个方法你可以快速在文件之间快速跳跃了,无比方便快捷,感兴趣的小伙伴一起看下去吧! 1.在Excel中打开另一个Excel文件(其他类型文件 ...
- java实现语法高亮插件_通用代码高亮插件(SyntaxHighlighter)
写这篇博文的起源是我想把自己的博客弄的更加美观,相信你也一样. 首先,我要说SyntaxHighlighter插件的实现方式及应用示例,然后再说明如何将其应用到自己的博客,使博客的代码着色更加美观. ...
- java怎么设置404界面_如何使用Spring MVC显示自定义的404 Not Found页面
本篇文章给大家带来的内容是关于如何使用Spring MVC显示自定义的404 Not Found页面,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 不知道大家对千篇一律的404 No ...
- h5评论直接显示代码_全套H5教程免费学,让你0基础自学制作H5页面
当前,H5页面已成为各大品牌及新闻媒体普遍采取的表现形式,它可以通过优质的内容.新颖的创意向用户推广产品.传播信息,并利用互联网的快速性,短时间内达到很高的浏览量和识别度.相较于H5而言,海报或视频设 ...
- SpringSSM的教师管理系统--ajax版本,分页,图片上传,jsp页面使用bootstrap布局
项目的结构 maven的配置 pom.xml 文件 ](maven的配置 pom.xml 文件) <project xmlns="http://maven.apache.org/POM ...
- wpf时间显示代码_如何在ASP.NET和WPF中显示QR代码
wpf时间显示代码 I've half-jokingly said that there's never a good reason to use a QR Code. However, I'm wo ...
最新文章
- 2022-2028年中国电梯行业市场调查及前瞻分析报告
- vc++图像保存,重绘
- python 内部函数传参_python中函数传参详解
- postman调用webservice接口_【分享】关于接口对前后端和测试的意义
- 代码编译突然变缓慢问题解决办法(codeblock)
- Nacos深入浅出(三)
- 有趣的计算机黑科技,6个让你欲罢不能的电脑黑科技软件,我一定要分享出来!...
- F450无人机组装与调试
- html上绘制网格线,【玩转D3.js】--(1)绘制网格线
- 使用饭碗警告实现简单的用户反馈通知
- 一个男朋友写给女朋友的信!爆笑(真勇敢)
- 计算机名词解释(计算机科学导论)
- AI趋势下,小布助手的进化论
- ffmpeg视频特效
- 微信公众平台开发案例
- Java编程:浅析泛型类型中的桥接方法
- RapidMiner 离散/缺失
- CRM代表什么?需要CRM软件的7个理由
- Linux下调试1588单步时间戳报文
- 【野蛮生长】2021成长目标
热门文章
- Matlab Tricks(十三)—— 提取矩阵的对角线元素
- Linux 内核的壳 —— shell
- 机器学习基础(三十二) —— 使用 Apriori 算法进行关联分析
- SQOOP——MySQL 和 HDFS 的桥梁
- C++中的萃取机制(traits)
- 机器学习常用数学公式
- Android WebView重定向问题,Android Webview重定向问题解决方法
- python编程例子-几个Python小案例,爱上Python编程!
- arcgis python 教程-按区域消除--arcgis python实例教程
- 如何系统的自学python-自学Python应该如何正确系统学习,避免少走弯路