java分页实现(一)
分页实现
1.工具类 MyPagination.java
package com.wgh.tools;import java.util.ArrayList;
import java.util.List;import com.wgh.model.Diary;public class MyPagination {public List<Diary> list=null;private int recordCount=0; //记录数private int pagesize=0; //每页显示的记录数private int maxPage=0; //最大页数//初始化分页信息public List<Diary> getInitPage(List<Diary> list,int Page,int pagesize){List<Diary> newList=new ArrayList<Diary>();this.list=list;recordCount=list.size(); //获取list集合的元素个数this.pagesize=pagesize;this.maxPage=getMaxPage(); //获取最大页数try{for(int i=(Page-1)*pagesize;i<=Page*pagesize-1;i++){try{if(i>=recordCount){break;}}catch(Exception e){}newList.add((Diary)list.get(i));}}catch(Exception e){e.printStackTrace();//输出异常信息}return newList;}//获取指定页的数据public List<Diary> getAppointPage(int Page){List<Diary> newList=new ArrayList<Diary>();try{for(int i=(Page-1)*pagesize;i<=Page*pagesize-1;i++){try{if(i>=recordCount){break;}}catch(Exception e){}newList.add((Diary)list.get(i));}}catch(Exception e){e.printStackTrace();//输出异常信息}return newList;}//获取最大记录数public int getMaxPage(){int maxPage=(recordCount%pagesize==0)?(recordCount/pagesize):(recordCount/pagesize+1);return maxPage;}//获取总记录数public int getRecordSize(){return recordCount;}//获取当前页数public int getPage(String str){if(str==null){//当页数等于null时,让其等于0str="0";}int Page=Integer.parseInt(str);if(Page<1){//当页数小于1时,让其等于1Page=1;}else{if(((Page-1)*pagesize+1)>recordCount){//当页数大于最大页数时,让其等于最大页数Page=maxPage;}}return Page;}/*** 在页面中输出分页导航* @param Page* @param url* @param para* @return*/public String printCtrl(int Page,String url,String para){String strHtml="<table width='100%' border='0' cellspacing='0' cellpadding='0'><tr> <td height='24' align='right'>当前页数:【"+Page+"/"+maxPage+"】 ";try{if(Page>1){strHtml=strHtml+"<a href='"+url+"&Page=1"+para+"'>第一页</a> ";strHtml=strHtml+"<a href='"+url+"&Page="+(Page-1)+para+"'>上一页</a>";}if(Page<maxPage){strHtml=strHtml+"<a href='"+url+"&Page="+(Page+1)+para+"'>下一页</a> <a href='"+url+"&Page="+maxPage+para+"'>最后一页 </a>";}strHtml=strHtml+"</td> </tr> </table>";}catch(Exception e){e.printStackTrace();}return strHtml;}
}
2.控制类(数据的 删减查) DiaryServlet.java
package com.wgh.servlet;import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.List;
import java.util.Random;import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.wgh.dao.DiaryDao;
import com.wgh.model.Diary;
import com.wgh.tools.MyPagination;
import javax.servlet.annotation.WebServlet;/*** Servlet implementation class DiaryServlet*/
@WebServlet("/DiaryServlet")
public class DiaryServlet extends HttpServlet {private static final long serialVersionUID = 1L;MyPagination pagination = null;// 数据分页类的对象DiaryDao dao = null;// 日记相关的数据库操作类的对象 /*** @see HttpServlet#HttpServlet()*/public DiaryServlet() {super();// TODO Auto-generated constructor stubdao = new DiaryDao();// 实例化日记相关的数据库操作类的对象}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubresponse.setContentType("text/heml;charset=UTF-8");request.setCharacterEncoding("UTF-8");String action = request.getParameter("action");if ("preview".equals(action)) {preview(request, response); // 预览九宫格日记} else if ("save".equals(action)) {save(request, response); // 保存九宫格日记} else if ("listAllDiary".equals(action)) {listAllDiary(request, response); // 查询全部九宫格日记} else if ("listMyDiary".equals(action)) {listMyDiary(request, response); // 查询我的日记} else if ("delDiary".equals(action)) {delDiary(request, response); // 删除我的日记}}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}/*** 功能:删除日记* * @param request* @param response* @throws ServletException* @throws IOException*/private void delDiary(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {int id = Integer.parseInt(request.getParameter("id")); // 获取要删除的日记的IDString imgName = request.getParameter("imgName"); // 获取图片名String url = request.getParameter("url"); // 获取返回的URL地址int rtn = dao.delDiary(id);// 删除日记PrintWriter out = response.getWriter();if (rtn > 0) {// 当删除日记成功时/************* 删除日记图片及缩略图 ******************/String path = getServletContext().getRealPath("\\")+ "images\\diary\\";java.io.File file = new java.io.File(path + imgName + "scale.jpg");// 获取缩略图file.delete(); //删除指定的文件file = new java.io.File(path + imgName + ".png");// 获取日记图片file.delete();/*******************************/out.println("<script>alert('删除日记成功!');window.location.href='DiaryServlet?action="+ url + "';</script>");} else {// 当删除日记失败时out.println("<script>alert('删除日记失败,请稍后重试!');history.back();</script>");}}/*** 功能:查询我的日记* * @param request* @param response* @throws IOException* @throws ServletException*/private void listMyDiary(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {HttpSession session = request.getSession();// 获取日记内容String strPage = (String) request.getParameter("Page");// 获取当前页码int Page = 1;List<Diary> list = null;if (strPage == null) {int userid = Integer.parseInt(session.getAttribute("uid").toString()); // 获取用户ID号String sql = "select d.*,u.username from tb_diary d inner join tb_user u on u.id=d.userid where d.userid="+ userid + " order by d.writeTime DESC";// 应用内联接查询日记信息pagination = new MyPagination();list = dao.queryDiary(sql); // 获取日记内容int pagesize = 4; // 指定每页显示的记录数list = pagination.getInitPage(list, Page, pagesize); // 初始化分页信息request.getSession().setAttribute("pagination", pagination);// 保存分页信息} else {pagination = (MyPagination) request.getSession().getAttribute("pagination");// 获取分页信息Page = pagination.getPage(strPage);list = pagination.getAppointPage(Page); // 获取指定页数据}request.setAttribute("diaryList", list); // 保存当前页的日记信息request.setAttribute("Page", Page); // 保存的当前页码request.setAttribute("url", "listMyDiary");// 保存当前页的URL地址request.getRequestDispatcher("listAllDiary.jsp").forward(request,response);// 重定向页面到listAllDiary.jsp}/*** 功能:预览九宫格日记* * @param request* @param response* @throws ServletException* @throws IOException*/public void preview(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String title = request.getParameter("title");// 获取日记标题String template = request.getParameter("template");// 获取日记模板String weather = request.getParameter("weather");// 获取天气// 获取日记内容String[] content = request.getParameterValues("content");for (int i = 0; i < content.length; i++) {if (content[i].equals(null) || content[i].equals("")|| content[i].equals("请在此输入文字")) {content[i] = "没啥可说的"; //为没有设置内容的项目设置默认值}}HttpSession session = request.getSession(true); //获取HttpSessionsession.setAttribute("template", template);// 保存选择的模板session.setAttribute("weather", weather); // 保存天气session.setAttribute("title", title); // 保存日记标题session.setAttribute("diary", content); // 保存日记内容request.getRequestDispatcher("preview.jsp").forward(request, response);// 重定向页面}/*** 功能:保存九宫格日记* * @param request* @param response* @throws ServletException* @throws IOException*/@SuppressWarnings("deprecation")public void save(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {HttpSession session = request.getSession(true);BufferedImage image = (BufferedImage) session.getAttribute("diaryImg");String url = request.getRequestURL().toString();// 获取请求的URL地址url = request.getRealPath("/");// 获取请求的实际地址long date = new Date().getTime();// 获取当前时间Random r = new Random(date);long value = r.nextLong();// 生成一个长整型的随机数url = url + "images/diary/" + value;// 生成图片的URL地址String scaleImgUrl = url + "scale.jpg";// 生成缩略图的URL地址url = url + ".png";ImageIO.write(image, "PNG", new File(url));/***************** 生成图片缩略图 ******************************************/File file = new File(url); // 获取原文件Image src = ImageIO.read(file);int old_w = src.getWidth(null);// 获取原图片的宽int old_h = src.getHeight(null);// 获取原图片的高int new_w = 0;// 新图片的宽int new_h = 0;// 新图片的高double temp = 0;// 缩放比例/********* 计算缩放比例 ***************/double tagSize = 60;if (old_w > old_h) {temp = old_w / tagSize;} else {temp = old_h / tagSize;}/*************************************/new_w = (int) Math.round(old_w / temp);// 计算新图片的宽new_h = (int) Math.round(old_h / temp);// 计算新图片的高image = new BufferedImage(new_w, new_h, BufferedImage.TYPE_INT_RGB);src = src.getScaledInstance(new_w, new_h, Image.SCALE_SMOOTH);image.getGraphics().drawImage(src, 0, 0, new_w, new_h, null);ImageIO.write(image, "JPG", new File(scaleImgUrl)); // 保存缩略图文件/***********************************************************************//**** 将填写的日记保存到数据库中 *****/Diary diary = new Diary();diary.setAddress(String.valueOf(value));// 设置图片地址diary.setTitle(session.getAttribute("title").toString());// 设置日记标题diary.setUserid(Integer.parseInt(session.getAttribute("uid").toString()));// 设置用户IDint rtn = dao.saveDiary(diary); // 保存日记PrintWriter out = response.getWriter();if (rtn > 0) {// 当保存成功时out.println("<script>alert('保存成功!');window.location.href='DiaryServlet?action=listAllDiary';</script>");} else {// 当保存失败时out.println("<script>alert('保存日记失败,请稍后重试!');history.back();</script>");}/*********************************/}/*** 功能:查询全部九宫格日记* * @param request* @param response* @throws ServletException* @throws IOException*/public void listAllDiary(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {String strPage = (String) request.getParameter("Page");// 获取当前页码int Page = 1;List<Diary> list = null;if (strPage == null) {// 当页面初次运行String sql = "select d.*,u.username from tb_diary d inner join tb_user u on u.id=d.userid order by d.writeTime DESC limit 50";pagination = new MyPagination();list = dao.queryDiary(sql); // 获取日记内容int pagesize = 5; // 指定每页显示的记录数list = pagination.getInitPage(list, Page, pagesize); // 初始化分页信息request.getSession().setAttribute("pagination", pagination);} else {pagination = (MyPagination) request.getSession().getAttribute("pagination");Page = pagination.getPage(strPage);// 获取当前页码list = pagination.getAppointPage(Page); // 获取指定页数据}request.setAttribute("diaryList", list); // 保存当前页的日记信息request.setAttribute("Page", Page); // 保存的当前页码request.setAttribute("url", "listAllDiary");// 保存当前页面的URLrequest.getRequestDispatcher("listAllDiary.jsp").forward(request,response);// 重定向页面}
}
3.分页的显示
<%response.sendRedirect(“DiaryServlet?action=listAllDiary”); %>
<div style="background-color: #FFFFFF;"><%=pagination.printCtrl(Integer.parseInt(request.getAttribute("Page").toString()),"DiaryServlet?action="+request.getAttribute("url"),"")%> </div>
java分页实现(一)相关推荐
- java分页中显示更多_早期更多失败– Java 8
java分页中显示更多 快速失败或早期失败是一种软件工程概念,旨在通过在不应该发生的事情发生时立即停止执行来防止复杂问题的发生. 在之前的博客文章和演示中,我将详细介绍这种方法的优点,在此博客文章中, ...
- java sql分页_mysql、sqlserver、oracle分页,java分页统一接口实现
定义:pageStart 起始页,pageEnd 终止页,pageSize页面容量 oracle分页: select * from ( select mytable.*,rownum num from ...
- java 分页_Spring Boot + MyBatis 如何借助PageHelper插件实现分页效果
概述 上文中已经介绍了Spring和MyBatis的整合,在上文的基础上我们加入了PageHelper这个插件,来实现MyBatis列表查询的分页效果 PageHelper是啥 PageHelper是 ...
- java分页插件PageHelper的内置list数据操作失败
问题描述: java分页插件PageHelper的内置list数据在hanlder处理器中获取失败,但是测试确通过了,如下图 但是测试代码成功 @ContextConfiguration(locati ...
- Elasticsearch 使用java分页查询条数超过1w的解决办法 -search_after方式
1.需求:job跑批每隔5分钟查询es数据取出并进行推送. 问题:原使用java分页查询es.当大于1w时无法取出后续数据造成了数据丢失. 使用scroll_id查询性能消耗太大不适应此场景. es调 ...
- java分页(java分页插件pagehelper)
在Java中如何用Serverlet实现分页查看数据库 serverlet跟分页关系不大吧.想得到可以啊,看查询语句怎么写的了.最好在查询语句中使用分页查询,页面上做一下获取页数什么的处理.全部查询在 ...
- Java分页导出Excel文件
Java分页导出Excel文件 1.开发微信小程序接入广告获取收益 技术: Springboot + mongodb + maven +Layui + thymeleaf 上一篇博客已经讲解了Java ...
- Java分页类定义和使用
1 简介 在后端与前端进行交互的过程中,需要对后端得到的数据进行分页推送给前端,比如说在某个博客网站上某用户编写了100篇文档,但在页面展示时,可能在每个页面仅仅展示10条数据,如下图所示 因此,而且 ...
- sql按时间取去重最近_sql 去重排序及 java分页
一.sql去重排序: 需求,对数据库数据按mfrom去重(显示最新数据),并对去重后的数据按mcreated_time进行倒序排列: sql语句为: (1)SELECT * FROM messages ...
- Java 分页之最简单的算法
分页实现有很多方式,如jQuery自带框架pagination或在java封装一个类pager等. 下写一个简单易懂的分页算法 逻辑: // 步骤1:设置每页页数大小 long pageS ...
最新文章
- Swift3中的 GCD
- 如何网络推广为你出招解决网站跳出率高问题!
- ws.v6p.coindex.php,php_168_v6目录
- 《java基础知识》Java变量作用域
- Linux提升系统安全性:自动注销 TMOUT
- 使用jQuery清空file文件域的解决方案
- 如何彻底禁用Chrome浏览器的缓存功能
- 工作4年工资8K,还有什么理由不努力?
- 平板电脑有什么用_除了盖泡面,平板电脑没什么用了
- 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的物资管理系统
- 熟悉 scrollTop ,轻松做5个方面的事情。
- 结合thinkphp5与hplus(h+)写的一个带权限的后台管理系统
- 如何利用 COMSOL 自动执行建模操作
- 为什么学习嵌入式会搞单片机以及如何学习C51单片机
- 计算机ps移动是什么键,ps快捷键都有哪些 移动工具V等
- 内网渗透之信息收集(更新中)
- 110 AddressBook
- 唐灵州吕氏夫人墓志的史证和书证价值
- GSAP教程之Tween详解
- 计算机网络的有线接入,台式电脑怎么连接有线网络