使用Jsp/Js/Ajax/Json/Jquery/Easyui + Servlet + JDBC + Lucene/Mysql/Oracle完成数据库分页
- package loaderman.action;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.util.LinkedHashMap;
- import java.util.Map;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import loaderman.entity.Page;
- import loaderman.service.impl.EmpService;
- import loaderman.service.inter.IEmpService;
- import net.sf.json.JSONArray;
- /**
- * 员工管理模块
- * 控制器
- */
- public class EmpServlet extends HttpServlet {
- public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
- this.doPost(request,response);
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
- try {
- //设置编号方式
- request.setCharacterEncoding("UTF-8");
- //获取客户端传入的参数
- String strPage = request.getParameter("page");//rows
- if(strPage == null || strPage.trim().length()==0){
- strPage = "1";
- }
- Integer currPageNO = Integer.parseInt(strPage);
- //调用业务层
- IEmpService iEmpService = new EmpService();
- Page page = iEmpService.show(currPageNO);
- //创建Map集合
- Map<String,Object> map = new LinkedHashMap<String,Object>();
- map.put("total",page.getAllRecordNO());
- map.put("rows",page.getEmpList());
- //使用第三方工具将map转成json文本
- JSONArray jsonArray = JSONArray.fromObject(map);
- String jsonJAVA = jsonArray.toString();
- //去掉二边的空格
- jsonJAVA = jsonJAVA.substring(1,jsonJAVA.length()-1);
- System.out.println("jsonJAVA=" + jsonJAVA);
- //以字符流的方式,将json字符串输出到客户端
- response.setContentType("text/html;charset=UTF-8");
- PrintWriter pw = response.getWriter();
- pw.write(jsonJAVA);
- pw.flush();
- pw.close();
- }catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- package loaderman.dao.impl;
- import java.math.BigDecimal;
- import java.util.List;
- import loaderman.dao.inter.IEmpDao;
- import loaderman.entity.Emp;
- import loaderman.util.JdbcUtil;
- import org.apache.commons.dbutils.QueryRunner;
- import org.apache.commons.dbutils.handlers.BeanListHandler;
- import org.apache.commons.dbutils.handlers.ScalarHandler;
- /**
- * 员工管理模块
- * 持久层实现
- */
- public class EmpDao implements IEmpDao{
- public Integer getAllRecord() throws Exception {
- QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());
- String sql = "SELECT COUNT(EMPNO) FROM EMP";
- BigDecimal bigDecimal = (BigDecimal) runner.query(sql,new ScalarHandler());
- return bigDecimal.intValue();
- }
- public List<Emp> findAllRecord(int start, int end) throws Exception {
- QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());
- String sql = " SELECT XX.EMPNO,XX.ENAME,XX.JOB,XX.MGR,XX.HIREDATE,XX.SAL,XX.COMM,XX.DEPTNO" +
- " FROM (SELECT ROWNUM ID,EMP.* FROM EMP WHERE ROWNUM<?) XX" +
- " WHERE ID>?";
- Object[] params = {end,start};
- return runner.query(sql,new BeanListHandler<Emp>(Emp.class),params);
- }
- public static void main(String[] args) throws Exception{
- EmpDao dao = new EmpDao();
- System.out.println("共有" + dao.getAllRecord() + "个员工");
- System.out.println("------------------------------------------------第1页");
- for(Emp e : dao.findAllRecord(0,4)){
- System.out.println(e);
- }
- System.out.println("------------------------------------------------第2页");
- for(Emp e : dao.findAllRecord(3,7)){
- System.out.println(e);
- }
- System.out.println("------------------------------------------------第3页");
- for(Emp e : dao.findAllRecord(6,10)){
- System.out.println(e);
- }
- System.out.println("------------------------------------------------第4页");
- for(Emp e : dao.findAllRecord(9,13)){
- System.out.println(e);
- }
- System.out.println("------------------------------------------------第5页");
- for(Emp e : dao.findAllRecord(12,16)){
- System.out.println(e);
- }
- }
- }
- package loaderman.dao.inter;
- import loaderman.entity.Emp;
- import java.util.List;
- /**
- * 员工管理模块
- * 持久层接口
- */
- public interface IEmpDao {
- /**
- * 获取总记录数
- * @return 总记录数
- */
- public Integer getAllRecord() throws Exception;
- /**
- * 分批查询所有记录
- * @param start 表示 从第几条记录开始
- * @param end 表示 到第几条记录结束
- * @return 表示 start到end之间的记录集合,包含start和end
- */
- public List<Emp> findAllRecord(int start,int end) throws Exception;
- }
- package loaderman.entity;
- import java.util.Date;
- /**
- * 员工
- */
- public class Emp {
- private Integer empno;//编号
- private String ename;//姓名
- private String job;//工作
- private Integer mgr;//上级编号
- private Date hiredate;//入职时间
- private Integer sal;//月薪
- private Integer comm;//佣金
- private Integer deptno;//部门编号
- public Emp(){}
- public Integer getEmpno() {
- return empno;
- }
- public void setEmpno(Integer empno) {
- this.empno = empno;
- }
- public String getEname() {
- return ename;
- }
- public void setEname(String ename) {
- this.ename = ename;
- }
- public String getJob() {
- return job;
- }
- public void setJob(String job) {
- this.job = job;
- }
- public Integer getMgr() {
- return mgr;
- }
- public void setMgr(Integer mgr) {
- this.mgr = mgr;
- }
- public Date getHiredate() {
- return hiredate;
- }
- public void setHiredate(Date hiredate) {
- this.hiredate = hiredate;
- }
- public Integer getSal() {
- return sal;
- }
- public void setSal(Integer sal) {
- this.sal = sal;
- }
- public Integer getComm() {
- return comm;
- }
- public void setComm(Integer comm) {
- this.comm = comm;
- }
- public Integer getDeptno() {
- return deptno;
- }
- public void setDeptno(Integer deptno) {
- this.deptno = deptno;
- }
- @Override
- public String toString() {
- return this.empno+":"+this.ename+":"+this.sal+":"+this.hiredate+":"+this.deptno;
- }
- }
- package loaderman.entity;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * 分页类
- * @author AdminTC
- */
- public class Page {
- private Integer currPageNO;//当前页号OK
- private Integer perPageSize = 9;//每页显示记录数,默认为3条记录OK
- private Integer allRecordNO;//总记录数OK
- private Integer allPageNO;//总页号OK
- private List<Emp> empList = new ArrayList<Emp>();//该本页显示的内容OK
- public Page(){}
- public Integer getCurrPageNO() {
- return currPageNO;
- }
- public void setCurrPageNO(Integer currPageNO) {
- this.currPageNO = currPageNO;
- }
- public Integer getPerPageSize() {
- return perPageSize;
- }
- public void setPerPageSize(Integer perPageSize) {
- this.perPageSize = perPageSize;
- }
- public Integer getAllRecordNO() {
- return allRecordNO;
- }
- public void setAllRecordNO(Integer allRecordNO) {
- this.allRecordNO = allRecordNO;
- }
- public Integer getAllPageNO() {
- return allPageNO;
- }
- public void setAllPageNO(Integer allPageNO) {
- this.allPageNO = allPageNO;
- }
- public List<Emp> getEmpList() {
- return empList;
- }
- public void setEmpList(List<Emp> empList) {
- this.empList = empList;
- }
- }
- package loaderman.service.impl;
- import loaderman.dao.impl.EmpDao;
- import loaderman.dao.inter.IEmpDao;
- import loaderman.entity.Emp;
- import loaderman.entity.Page;
- import loaderman.service.inter.IEmpService;
- import java.util.List;
- /**
- * 员工管理模块
- * 业务层实现
- */
- public class EmpService implements IEmpService{
- private IEmpDao iEmpDao = new EmpDao();
- public Page show(int currPageNO) throws Exception {
- Page page = new Page();
- //封装当前页号
- page.setCurrPageNO(currPageNO);
- //封装总记录数
- Integer allRecordNO = iEmpDao.getAllRecord();
- page.setAllRecordNO(allRecordNO);
- //封装总页数
- Integer allPageNO = null;
- if(page.getAllRecordNO() % page.getPerPageSize() == 0){
- allPageNO = page.getAllRecordNO() / page.getPerPageSize();
- }else{
- allPageNO = page.getAllRecordNO() / page.getPerPageSize() + 1;
- }
- page.setAllPageNO(allPageNO);
- //封装该本显示的内容
- Integer start = (page.getCurrPageNO()-1) * page.getPerPageSize();
- Integer end = page.getCurrPageNO() * page.getPerPageSize() + 1;
- List<Emp> empList = iEmpDao.findAllRecord(start,end);
- page.setEmpList(empList);
- return page;
- }
- public static void main(String[] args) throws Exception{
- EmpService service = new EmpService();
- System.out.println("---------------------------------------NO1");
- Page page = service.show(1);
- for(Emp e : page.getEmpList()){
- System.out.println(e);
- }
- System.out.println("---------------------------------------NO2");
- page = service.show(2);
- for(Emp e : page.getEmpList()){
- System.out.println(e);
- }
- System.out.println("---------------------------------------NO3");
- page = service.show(3);
- for(Emp e : page.getEmpList()){
- System.out.println(e);
- }
- System.out.println("---------------------------------------NO4");
- page = service.show(4);
- for(Emp e : page.getEmpList()){
- System.out.println(e);
- }
- System.out.println("---------------------------------------NO5");
- page = service.show(5);
- for(Emp e : page.getEmpList()){
- System.out.println(e);
- }
- }
- }
- package loaderman.service.inter;
- import loaderman.entity.Page;
- /**
- * 员工管理模块
- * 业务层接口
- */
- public interface IEmpService {
- /**
- * 根据页号获取该页需要显示的内容
- * @param currPageNO 当前页号
- * @return 封装该页需要显示的内容
- */
- public Page show(int currPageNO) throws Exception;
- }
- package loaderman.util;
- import com.mchange.v2.c3p0.ComboPooledDataSource;
- /**
- * 工具类
- */
- public class JdbcUtil {
- /**
- * 加载src目录下的c3p0-config.xml文件
- */
- private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
- /**
- * 获取数据源
- * @return 数据源
- */
- public static ComboPooledDataSource getDataSource() {
- return dataSource;
- }
- }
- <?xml version="1.0" encoding="UTF-8"?>
- <c3p0-config>
- <default-config>
- <property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
- <property name="jdbcUrl">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>
- <property name="user">scott</property>
- <property name="password">tiger</property>
- <property name="initialPoolSize">5</property>
- <property name="maxPoolSize">5</property>
- <property name="minPoolSize">1</property>
- <property name="acquireIncrement">2</property>
- </default-config>
- </c3p0-config>
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <servlet>
- <servlet-name>EmpServlet</servlet-name>
- <servlet-class>loaderman.action.EmpServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>EmpServlet</servlet-name>
- <url-pattern>/EmpServlet</url-pattern>
- </servlet-mapping>
- </web-app>
使用Jsp/Js/Ajax/Json/Jquery/Easyui + Servlet + JDBC + Lucene/Mysql/Oracle完成数据库分页的更多相关文章
- Jsp +Js + Jquery + EasyUI + Servlet + Lucene,完成分页
package loaderman.fy.action; import java.io.IOException; import java.io.PrintWriter; import java.uti ...
- Ajax json jquery实现菜单案例
需求: 运用AJAX请求文件menu.json,配置菜单栏,并实现以下功能点: 1. 点击向左箭头,菜单向左移动,隐藏 2. 点击向右箭头,菜单向右移动,显示3. 点击一级菜单,被点击菜单的子菜单显示 ...
- 使用Jsp +Js + Jquery + EasyUI + Servlet + Lucene,完成分页
步一:创建ArticleDao.java类 public class ArticleDao { public Integer getAllObjectNum(String keywords) thro ...
- php ajax json jquery 记录
php+jquery+ajax+json简单小例子 <html> <title>php+jquery+ajax+json简单小例子</title> <?php ...
- Ajax+json+jquery实现无限瀑布流布局
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- AJAX+json+jquery实现预加载瀑布流布局
宽度是一定的高度不定的瀑布流布局 也可以说是无缝拼图 当浏览器滚动到底部时候自动加载图片 加载的图片地址用json 在img.js里 ,还有正在加载动画是用 css3制作的 在ff等支持css3可以显 ...
- 原生js ajax与jquery ajax的区别
原生js ajax的调用: ajax({ type : "get", url : "02_ajax_get.txt", data : { "userN ...
- Maven+JSP+Servlet+JDBC+Redis+Mysql实现的黑马旅游网
项目简介 项目来源于:https://gitee.com/haoshunyu/travel 本系统是基于Maven+JSP+Servlet+JdbcTemplate+Redis+Mysql实现的旅游网 ...
- 24、jQuery常用AJAX-API/Java调用MySQL / Oracle过程与函数
1)掌握jQuery常用AJAX-API 2)掌握Java调用MySQL / Oracle过程与函数 一)jQuery常用AJAX-API 目的:简化客户端与服务端进行局部刷新的异步通讯 (1)取 ...
随机推荐
- 第一章 Django之web框架(1)
Django 是新一代 Web 框架 中非常出色的成员.那么 Web 框架这个术语的确切含义到底是 什么呢? 要回答这个问题,让我们来看看通过编写标准的 CGI 程序来开发 Web 应用,这在大约19 ...
- Xshell连接阿里云服务被拒绝
问题描述:突然的Xshell连接阿里云服务被拒绝了(如图)网上众多的方案都不行例如:https://www.cnblogs.com/wanglle/p/11416987.html(参考博文,本人这个问 ...
- 团队第二次作业:需求分析&系统设计
所属课程 https://edu.cnblogs.com/campus/xnsy/Autumn2019SoftwareEngineeringFoundation/ 作业要求 https://edu.c ...
- Ubuntu系统---FeiQ安装记录
Ubuntu系统---FeiQ安装记录 linux下安装飞秋/飞鸽传书之类的软件iptux信使,可以与windows在一个局域网下聊天与传书文件,安装很简单. 首先,直接运行下面的语句即可:sudo ...
- eclipse新建jsp模版设置
第一步:找到JSP模板 eclipse -- >perferences - >Web -> jsp files -Editor ->templates: 第二步:准备编辑JSP ...
- java线程基础巩固---采用多线程方式模拟银行排队叫号以及Runnable接口存在的必要性
采用多线程模拟银行排队叫号: 关于银行拿排队号去叫号的过程我想不必过多解释了,就是有几个业务窗口,并行的处理业务,每处里完一个人,则会叫下一个排队的号去处理业务,一个人是不会被多个窗口工作人员叫号的, ...
- percona-toolkit主从同步整理(MySQL)
前言:MYSQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的管理也就显得非常重要.而数据作为软件的核心部分,对于其有效的管理显得更为重要.随着时间的推移,软件 ...
- 多种view视图和序列化--django2
models.py from django.db import models # Create your models here. class Idc(models.Model): name = mo ...
- Idea中Module is not specified解决办法
打开idea,想跑一个类,但是,给我报了一个红叉: 当我点击run的时候,弹出来一个框: “Error:Module not specified” Module 未指定 “这个原因是项目文件夹有修改 ...
- Modbus协议深入讲解_NI
from:https://www.ni.com/zh-cn/innovations/white-papers/14/the-modbus-protocol-in-depth.html 已更新 Mar ...