1. package loaderman.action;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.util.LinkedHashMap;
  6. import java.util.Map;
  7.  
  8. import javax.servlet.ServletException;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12.  
  13. import loaderman.entity.Page;
  14. import loaderman.service.impl.EmpService;
  15. import loaderman.service.inter.IEmpService;
  16. import net.sf.json.JSONArray;
  17.  
  18. /**
  19. * 员工管理模块
  20. * 控制器
  21. */
  22. public class EmpServlet extends HttpServlet {
  23. public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
  24. this.doPost(request,response);
  25. }
  26. public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
  27. try {
  28. //设置编号方式
  29. request.setCharacterEncoding("UTF-8");
  30.  
  31. //获取客户端传入的参数
  32. String strPage = request.getParameter("page");//rows
  33. if(strPage == null || strPage.trim().length()==0){
  34. strPage = "1";
  35. }
  36. Integer currPageNO = Integer.parseInt(strPage);
  37.  
  38. //调用业务层
  39. IEmpService iEmpService = new EmpService();
  40. Page page = iEmpService.show(currPageNO);
  41.  
  42. //创建Map集合
  43. Map<String,Object> map = new LinkedHashMap<String,Object>();
  44. map.put("total",page.getAllRecordNO());
  45. map.put("rows",page.getEmpList());
  46.  
  47. //使用第三方工具将map转成json文本
  48. JSONArray jsonArray = JSONArray.fromObject(map);
  49. String jsonJAVA = jsonArray.toString();
  50.  
  51. //去掉二边的空格
  52. jsonJAVA = jsonJAVA.substring(1,jsonJAVA.length()-1);
  53. System.out.println("jsonJAVA=" + jsonJAVA);
  54.  
  55. //以字符流的方式,将json字符串输出到客户端
  56. response.setContentType("text/html;charset=UTF-8");
  57. PrintWriter pw = response.getWriter();
  58. pw.write(jsonJAVA);
  59. pw.flush();
  60. pw.close();
  61.  
  62. }catch (Exception e) {
  63. e.printStackTrace();
  64. }
  65. }
  66. }
  1. package loaderman.dao.impl;
  2.  
  3. import java.math.BigDecimal;
  4. import java.util.List;
  5.  
  6. import loaderman.dao.inter.IEmpDao;
  7. import loaderman.entity.Emp;
  8. import loaderman.util.JdbcUtil;
  9. import org.apache.commons.dbutils.QueryRunner;
  10. import org.apache.commons.dbutils.handlers.BeanListHandler;
  11. import org.apache.commons.dbutils.handlers.ScalarHandler;
  12.  
  13. /**
  14. * 员工管理模块
  15. * 持久层实现
  16. */
  17. public class EmpDao implements IEmpDao{
  18. public Integer getAllRecord() throws Exception {
  19. QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());
  20. String sql = "SELECT COUNT(EMPNO) FROM EMP";
  21. BigDecimal bigDecimal = (BigDecimal) runner.query(sql,new ScalarHandler());
  22. return bigDecimal.intValue();
  23. }
  24. public List<Emp> findAllRecord(int start, int end) throws Exception {
  25. QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());
  26. String sql = " SELECT XX.EMPNO,XX.ENAME,XX.JOB,XX.MGR,XX.HIREDATE,XX.SAL,XX.COMM,XX.DEPTNO" +
  27. " FROM (SELECT ROWNUM ID,EMP.* FROM EMP WHERE ROWNUM<?) XX" +
  28. " WHERE ID>?";
  29. Object[] params = {end,start};
  30. return runner.query(sql,new BeanListHandler<Emp>(Emp.class),params);
  31. }
  32.  
  33. public static void main(String[] args) throws Exception{
  34. EmpDao dao = new EmpDao();
  35. System.out.println("共有" + dao.getAllRecord() + "个员工");
  36. System.out.println("------------------------------------------------第1页");
  37. for(Emp e : dao.findAllRecord(0,4)){
  38. System.out.println(e);
  39. }
  40. System.out.println("------------------------------------------------第2页");
  41. for(Emp e : dao.findAllRecord(3,7)){
  42. System.out.println(e);
  43. }
  44. System.out.println("------------------------------------------------第3页");
  45. for(Emp e : dao.findAllRecord(6,10)){
  46. System.out.println(e);
  47. }
  48. System.out.println("------------------------------------------------第4页");
  49. for(Emp e : dao.findAllRecord(9,13)){
  50. System.out.println(e);
  51. }
  52. System.out.println("------------------------------------------------第5页");
  53. for(Emp e : dao.findAllRecord(12,16)){
  54. System.out.println(e);
  55. }
  56. }
  57. }
  1. package loaderman.dao.inter;
  2.  
  3. import loaderman.entity.Emp;
  4.  
  5. import java.util.List;
  6.  
  7. /**
  8. * 员工管理模块
  9. * 持久层接口
  10. */
  11. public interface IEmpDao {
  12. /**
  13. * 获取总记录数
  14. * @return 总记录数
  15. */
  16. public Integer getAllRecord() throws Exception;
  17. /**
  18. * 分批查询所有记录
  19. * @param start 表示 从第几条记录开始
  20. * @param end 表示 到第几条记录结束
  21. * @return 表示 start到end之间的记录集合,包含start和end
  22. */
  23. public List<Emp> findAllRecord(int start,int end) throws Exception;
  24. }
  1. package loaderman.entity;
  2.  
  3. import java.util.Date;
  4.  
  5. /**
  6. * 员工
  7. */
  8. public class Emp {
  9. private Integer empno;//编号
  10. private String ename;//姓名
  11. private String job;//工作
  12. private Integer mgr;//上级编号
  13. private Date hiredate;//入职时间
  14. private Integer sal;//月薪
  15. private Integer comm;//佣金
  16. private Integer deptno;//部门编号
  17. public Emp(){}
  18. public Integer getEmpno() {
  19. return empno;
  20. }
  21. public void setEmpno(Integer empno) {
  22. this.empno = empno;
  23. }
  24. public String getEname() {
  25. return ename;
  26. }
  27. public void setEname(String ename) {
  28. this.ename = ename;
  29. }
  30. public String getJob() {
  31. return job;
  32. }
  33. public void setJob(String job) {
  34. this.job = job;
  35. }
  36. public Integer getMgr() {
  37. return mgr;
  38. }
  39. public void setMgr(Integer mgr) {
  40. this.mgr = mgr;
  41. }
  42. public Date getHiredate() {
  43. return hiredate;
  44. }
  45. public void setHiredate(Date hiredate) {
  46. this.hiredate = hiredate;
  47. }
  48. public Integer getSal() {
  49. return sal;
  50. }
  51. public void setSal(Integer sal) {
  52. this.sal = sal;
  53. }
  54. public Integer getComm() {
  55. return comm;
  56. }
  57. public void setComm(Integer comm) {
  58. this.comm = comm;
  59. }
  60. public Integer getDeptno() {
  61. return deptno;
  62. }
  63. public void setDeptno(Integer deptno) {
  64. this.deptno = deptno;
  65. }
  66. @Override
  67. public String toString() {
  68. return this.empno+":"+this.ename+":"+this.sal+":"+this.hiredate+":"+this.deptno;
  69. }
  70. }
  1. package loaderman.entity;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. /**
  7. * 分页类
  8. * @author AdminTC
  9. */
  10. public class Page {
  11. private Integer currPageNO;//当前页号OK
  12. private Integer perPageSize = 9;//每页显示记录数,默认为3条记录OK
  13. private Integer allRecordNO;//总记录数OK
  14. private Integer allPageNO;//总页号OK
  15. private List<Emp> empList = new ArrayList<Emp>();//该本页显示的内容OK
  16. public Page(){}
  17. public Integer getCurrPageNO() {
  18. return currPageNO;
  19. }
  20. public void setCurrPageNO(Integer currPageNO) {
  21. this.currPageNO = currPageNO;
  22. }
  23. public Integer getPerPageSize() {
  24. return perPageSize;
  25. }
  26. public void setPerPageSize(Integer perPageSize) {
  27. this.perPageSize = perPageSize;
  28. }
  29. public Integer getAllRecordNO() {
  30. return allRecordNO;
  31. }
  32. public void setAllRecordNO(Integer allRecordNO) {
  33. this.allRecordNO = allRecordNO;
  34. }
  35. public Integer getAllPageNO() {
  36. return allPageNO;
  37. }
  38. public void setAllPageNO(Integer allPageNO) {
  39. this.allPageNO = allPageNO;
  40. }
  41. public List<Emp> getEmpList() {
  42. return empList;
  43. }
  44. public void setEmpList(List<Emp> empList) {
  45. this.empList = empList;
  46. }
  47. }
  1. package loaderman.service.impl;
  2.  
  3. import loaderman.dao.impl.EmpDao;
  4. import loaderman.dao.inter.IEmpDao;
  5. import loaderman.entity.Emp;
  6. import loaderman.entity.Page;
  7. import loaderman.service.inter.IEmpService;
  8.  
  9. import java.util.List;
  10.  
  11. /**
  12. * 员工管理模块
  13. * 业务层实现
  14. */
  15. public class EmpService implements IEmpService{
  16. private IEmpDao iEmpDao = new EmpDao();
  17. public Page show(int currPageNO) throws Exception {
  18. Page page = new Page();
  19.  
  20. //封装当前页号
  21. page.setCurrPageNO(currPageNO);
  22.  
  23. //封装总记录数
  24. Integer allRecordNO = iEmpDao.getAllRecord();
  25. page.setAllRecordNO(allRecordNO);
  26.  
  27. //封装总页数
  28. Integer allPageNO = null;
  29. if(page.getAllRecordNO() % page.getPerPageSize() == 0){
  30. allPageNO = page.getAllRecordNO() / page.getPerPageSize();
  31. }else{
  32. allPageNO = page.getAllRecordNO() / page.getPerPageSize() + 1;
  33. }
  34. page.setAllPageNO(allPageNO);
  35.  
  36. //封装该本显示的内容
  37. Integer start = (page.getCurrPageNO()-1) * page.getPerPageSize();
  38. Integer end = page.getCurrPageNO() * page.getPerPageSize() + 1;
  39. List<Emp> empList = iEmpDao.findAllRecord(start,end);
  40. page.setEmpList(empList);
  41.  
  42. return page;
  43. }
  44.  
  45. public static void main(String[] args) throws Exception{
  46. EmpService service = new EmpService();
  47. System.out.println("---------------------------------------NO1");
  48. Page page = service.show(1);
  49. for(Emp e : page.getEmpList()){
  50. System.out.println(e);
  51. }
  52. System.out.println("---------------------------------------NO2");
  53. page = service.show(2);
  54. for(Emp e : page.getEmpList()){
  55. System.out.println(e);
  56. }
  57. System.out.println("---------------------------------------NO3");
  58. page = service.show(3);
  59. for(Emp e : page.getEmpList()){
  60. System.out.println(e);
  61. }
  62. System.out.println("---------------------------------------NO4");
  63. page = service.show(4);
  64. for(Emp e : page.getEmpList()){
  65. System.out.println(e);
  66. }
  67. System.out.println("---------------------------------------NO5");
  68. page = service.show(5);
  69. for(Emp e : page.getEmpList()){
  70. System.out.println(e);
  71. }
  72. }
  73. }
  1. package loaderman.service.inter;
  2.  
  3. import loaderman.entity.Page;
  4. /**
  5. * 员工管理模块
  6. * 业务层接口
  7. */
  8. public interface IEmpService {
  9. /**
  10. * 根据页号获取该页需要显示的内容
  11. * @param currPageNO 当前页号
  12. * @return 封装该页需要显示的内容
  13. */
  14. public Page show(int currPageNO) throws Exception;
  15. }
  1. package loaderman.util;
  2.  
  3. import com.mchange.v2.c3p0.ComboPooledDataSource;
  4. /**
  5. * 工具类
  6. */
  7. public class JdbcUtil {
  8. /**
  9. * 加载src目录下的c3p0-config.xml文件
  10. */
  11. private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
  12. /**
  13. * 获取数据源
  14. * @return 数据源
  15. */
  16. public static ComboPooledDataSource getDataSource() {
  17. return dataSource;
  18. }
  19. }
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <c3p0-config>
  3. <default-config>
  4. <property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
  5. <property name="jdbcUrl">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>
  6. <property name="user">scott</property>
  7. <property name="password">tiger</property>
  8. <property name="initialPoolSize">5</property>
  9. <property name="maxPoolSize">5</property>
  10. <property name="minPoolSize">1</property>
  11. <property name="acquireIncrement">2</property>
  12. </default-config>
  13. </c3p0-config>
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  5. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  6. <servlet>
  7. <servlet-name>EmpServlet</servlet-name>
  8. <servlet-class>loaderman.action.EmpServlet</servlet-class>
  9. </servlet>
  10. <servlet-mapping>
  11. <servlet-name>EmpServlet</servlet-name>
  12. <url-pattern>/EmpServlet</url-pattern>
  13. </servlet-mapping>
  14.  
  15. </web-app>

使用Jsp/Js/Ajax/Json/Jquery/Easyui + Servlet + JDBC + Lucene/Mysql/Oracle完成数据库分页的更多相关文章

  1. Jsp +Js + Jquery + EasyUI + Servlet + Lucene,完成分页

    package loaderman.fy.action; import java.io.IOException; import java.io.PrintWriter; import java.uti ...

  2. Ajax json jquery实现菜单案例

    需求: 运用AJAX请求文件menu.json,配置菜单栏,并实现以下功能点: 1. 点击向左箭头,菜单向左移动,隐藏 2. 点击向右箭头,菜单向右移动,显示3. 点击一级菜单,被点击菜单的子菜单显示 ...

  3. 使用Jsp +Js + Jquery + EasyUI + Servlet + Lucene,完成分页

    步一:创建ArticleDao.java类 public class ArticleDao { public Integer getAllObjectNum(String keywords) thro ...

  4. php ajax json jquery 记录

    php+jquery+ajax+json简单小例子 <html> <title>php+jquery+ajax+json简单小例子</title> <?php ...

  5. Ajax+json+jquery实现无限瀑布流布局

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. AJAX+json+jquery实现预加载瀑布流布局

    宽度是一定的高度不定的瀑布流布局 也可以说是无缝拼图 当浏览器滚动到底部时候自动加载图片 加载的图片地址用json 在img.js里 ,还有正在加载动画是用 css3制作的 在ff等支持css3可以显 ...

  7. 原生js ajax与jquery ajax的区别

    原生js ajax的调用: ajax({ type : "get", url : "02_ajax_get.txt", data : { "userN ...

  8. Maven+JSP+Servlet+JDBC+Redis+Mysql实现的黑马旅游网

    项目简介 项目来源于:https://gitee.com/haoshunyu/travel 本系统是基于Maven+JSP+Servlet+JdbcTemplate+Redis+Mysql实现的旅游网 ...

  9. 24、jQuery常用AJAX-API/Java调用MySQL / Oracle过程与函数

      1)掌握jQuery常用AJAX-API 2)掌握Java调用MySQL / Oracle过程与函数 一)jQuery常用AJAX-API 目的:简化客户端与服务端进行局部刷新的异步通讯 (1)取 ...

随机推荐

  1. 第一章 Django之web框架(1)

    Django 是新一代 Web 框架 中非常出色的成员.那么 Web 框架这个术语的确切含义到底是 什么呢? 要回答这个问题,让我们来看看通过编写标准的 CGI 程序来开发 Web 应用,这在大约19 ...

  2. Xshell连接阿里云服务被拒绝

    问题描述:突然的Xshell连接阿里云服务被拒绝了(如图)网上众多的方案都不行例如:https://www.cnblogs.com/wanglle/p/11416987.html(参考博文,本人这个问 ...

  3. 团队第二次作业:需求分析&系统设计

    所属课程 https://edu.cnblogs.com/campus/xnsy/Autumn2019SoftwareEngineeringFoundation/ 作业要求 https://edu.c ...

  4. Ubuntu系统---FeiQ安装记录

    Ubuntu系统---FeiQ安装记录 linux下安装飞秋/飞鸽传书之类的软件iptux信使,可以与windows在一个局域网下聊天与传书文件,安装很简单. 首先,直接运行下面的语句即可:sudo ...

  5. eclipse新建jsp模版设置

    第一步:找到JSP模板 eclipse -- >perferences - >Web -> jsp files -Editor ->templates: 第二步:准备编辑JSP ...

  6. java线程基础巩固---采用多线程方式模拟银行排队叫号以及Runnable接口存在的必要性

    采用多线程模拟银行排队叫号: 关于银行拿排队号去叫号的过程我想不必过多解释了,就是有几个业务窗口,并行的处理业务,每处里完一个人,则会叫下一个排队的号去处理业务,一个人是不会被多个窗口工作人员叫号的, ...

  7. percona-toolkit主从同步整理(MySQL)

    前言:MYSQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的管理也就显得非常重要.而数据作为软件的核心部分,对于其有效的管理显得更为重要.随着时间的推移,软件 ...

  8. 多种view视图和序列化--django2

    models.py from django.db import models # Create your models here. class Idc(models.Model): name = mo ...

  9. Idea中Module is not specified解决办法

    打开idea,想跑一个类,但是,给我报了一个红叉: 当我点击run的时候,弹出来一个框: “Error:Module not specified”  Module 未指定 “这个原因是项目文件夹有修改 ...

  10. Modbus​协议​深入​讲解_NI

    from:https://www.ni.com/zh-cn/innovations/white-papers/14/the-modbus-protocol-in-depth.html 已​更新 Mar ...