国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

簡單分頁查詢(web基礎學習筆記十三)

2019-11-14 22:47:34
字體:
來源:轉載
供稿:網友
簡單分頁查詢(web基礎學習筆記十三)一、建立資源文件和工具類1.1 、database.PRoperties
jdbc.driver_class=Oracle.jdbc.driver.OracleDriverjdbc.connection.url=jdbc:oracle:thin:@localhost:1521:orcljdbc.connection.username=scottjdbc.connection.passWord=tiger
1.2、建立包:com.pb.emp.untily

ConfigManager類

package com.pb.emp.untily;import java.io.IOException;import java.io.InputStream;import java.util.Properties;public class ConfigManager {    private static ConfigManager configManager;    private static Properties properties;        private ConfigManager(){        String configfile="database.properties";        properties=new Properties();        InputStream in=ConfigManager.class.getClassLoader().getResourceAsStream(configfile);        try {            properties.load(in);            in.close();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    public static ConfigManager getInstance(){        if(configManager==null){            configManager=new ConfigManager();        }        return configManager;            }    public static String getString(String key){        return properties.getProperty(key);    }    }
1.3、建立員工實體類
package com.pb.emp.entity;import java.util.Date;/** * 員工實體類 * @author 森林森 * */public class Emp {    private int empno;                                 private String ename;                           private String job;                            private int mgr;                          private Date hiredate;                         private double sal;                            private double comm;                    private int deptno;        //getter和setter方法     public int getEmpno() {        return empno;    }    public void setEmpno(int 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 int getMgr() {        return mgr;    }    public void setMgr(int mgr) {        this.mgr = mgr;    }    public Date getHiredate() {        return hiredate;    }    public void setHiredate(Date hiredate) {        this.hiredate = hiredate;    }    public double getSal() {        return sal;    }    public void setSal(double sal) {        this.sal = sal;    }    public double getComm() {        return comm;    }    public void setComm(double comm) {        this.comm = comm;    }    public int getDeptno() {        return deptno;    }    public void setDeptno(int deptno) {        this.deptno = deptno;    }                }
二、建立BaseDao基類2.1、建立基類
package com.pb.emp.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import com.pb.emp.untily.ConfigManager;public class BaseDao {    protected Connection conn;    protected PreparedStatement ps;    protected ResultSet rs;        //建立連接    public boolean getConnection(){        String driver=ConfigManager.getInstance().getString("jdbc.driver_class");        String url=ConfigManager.getInstance().getString("jdbc.connection.url");        String username=ConfigManager.getInstance().getString("jdbc.connection.username");        String password=ConfigManager.getInstance().getString("jdbc.connection.password");                try {            Class.forName(driver);            conn=DriverManager.getConnection(url,username, password);        } catch (ClassNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();            return false;        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();            return false;        }        return true;    }       //增加,修改,刪除    public int executeUpdate(String sql, Object[] params){        getConnection();        int updateRow=0;        try {            ps=conn.prepareStatement(sql);            //填充占位符            for(int i=0;i<params.length;i++){                ps.setObject(i+1, params[i]);            }            updateRow = ps.executeUpdate();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return updateRow;    }    //    //查詢        public ResultSet executeSQL(String sql, Object[] params){            getConnection();                        try {                ps=conn.prepareStatement(sql);                //填充占位符                for(int i=0;i<params.length;i++){                    ps.setObject(i+1, params[i]);                }                rs = ps.executeQuery();            } catch (SQLException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }            return rs;        }            // 關閉資源        public boolean closeResource() {            if(rs!=null){                try {                    rs.close();                } catch (SQLException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                    return false;                }            }            if(ps!=null){                try {                    ps.close();                } catch (SQLException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                    return false;                }            }                        if(conn!=null){                try {                    conn.close();                } catch (SQLException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                    return false;                }            }            return true;        }}
2.2、建立分頁類
package com.pb.emp.untily;public class Page {    private int currPageNo=1;  //當前頁號    private int pageSize=0; //每頁顯示的記錄數    private int recordCount=0; //總記錄數    private int totalPageCount=1; //總頁數            public int getCurrPageNo() {        //條中不能加this        if(totalPageCount==0)            return 0;        return currPageNo;    }    public void setCurrPageNo(int currPageNo) {        if(currPageNo>0)        this.currPageNo = currPageNo;    }        public void setPageSize(int pageSize) {        //條中不能加this        if(pageSize>0)        this.pageSize = pageSize;    }    public int getPageSize() {        return pageSize;    }        public int getTotalPageCount() {        return totalPageCount;    }    public void setTotalPageCount(int totalPageCount) {        this.totalPageCount = totalPageCount;    }    public int getRecordCount() {        return recordCount;    }        public void setRecordCount(int recordCount) {        //條中不能加this        if(recordCount>0)        this.recordCount = recordCount;        //調用總頁數設置方法為totalPageCount賦值        //this.settotalPageCountByRs();    }        //設置總頁數    public int settotalPageCountByRs(){        if(this.recordCount%this.pageSize==0){            this.totalPageCount=this.recordCount/this.pageSize;        }else if(this.recordCount%this.pageSize>0){            this.totalPageCount=this.recordCount/this.pageSize+1;    }else{        this.totalPageCount=0;        }        return this.totalPageCount;    }   //開始記錄數    public int getStartRow(){        return (currPageNo-1) * pageSize+1;    }      //結束記錄數    public int  getEndRow(){        return currPageNo * pageSize;    }    public static void main(String[] args) {        Page p=new Page();        p.setCurrPageNo(2);        System.out.println(p.getCurrPageNo());        p.setPageSize(3);        System.out.println(p.getPageSize());        int i=p.getStartRow();        System.out.println("啟始記錄"+i);        int j=p.getEndRow();        System.out.println("結束記錄"+j);    }}

三、建立分頁查詢的實現類3.1、實現類
package com.pb.emp.dao.empl;import java.sql.SQLException;import java.util.ArrayList;import java.util.Date;import java.util.List;import com.pb.emp.dao.BaseDao;import com.pb.emp.dao.EmpDao;import com.pb.emp.entity.Emp;import com.pb.emp.untily.Page;public class EmpDaoImpl extends BaseDao implements EmpDao {       /**     * 獲取新聞總數量     * */    public int getTotalCount() {        int totalCount=0;        String sql="select count(*) from emp";        Object[] params={};         rs=this.executeSQL(sql, params);        try {            while(rs.next()){                totalCount=rs.getInt(1);            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            this.closeResource();        }        return totalCount;    }        /**     * 分頁獲取新聞信息     * */    public List<Emp> getEmpByPage(int pageNo, int pageSize) {        // 建立集合存放查詢結果        List<Emp> emplist = new ArrayList<Emp>();        String sql = "SELECT empno,ename,job,mgr,hiredate,sal,comm,deptno FROM(SELECT empno,ename,job,mgr,hiredate,sal,comm,deptno,ROWNUM rn FROM emp) e WHERE e.rn BETWEEN ? AND ?";        Page pages=new Page();        //設置當前頁和頁顯示顯示記錄數        pages.setCurrPageNo(pageNo); //設置當前頁碼        pages.setPageSize(pageSize); //每頁顯示記錄數        //計算開始和結束記錄數        int startRow = pages.getStartRow();        int endRow = pages.getEndRow();        //填充占位符?        Object [] params={startRow,endRow};        //調用類BaseDao的查詢方法并接收結果        rs=this.executeSQL(sql, params);        try {                        while(rs.next()){                 int empno=rs.getInt("empno");                                              String ename=rs.getString("ename");                                        String job=rs.getString("job");                                         int mgr=rs.getInt("mgr");                                       Date hiredate=rs.getDate("hiredate");                                      double sal=rs.getDouble("sal");                                         double comm=rs.getDouble("comm");                                 int deptno=rs.getInt("deptno");                 //聲明Emp對象                 Emp emp=new Emp();                 //將得到的值添加到對象中                 emp.setEmpno(empno);                 emp.setEname(ename);                 emp.setJob(job);                 emp.setMgr(mgr);                 emp.setHiredate(hiredate);                 emp.setSal(sal);                 emp.setComm(comm);                 emp.setDeptno(deptno);                 //將對象添加到集合                 emplist.add(emp);            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            this.closeResource();        }        return emplist;    }    public static void main(String[] args) {        EmpDaoImpl  e=new EmpDaoImpl();        System.out.println(e.getTotalCount());        List<Emp> emplist=e.getEmpByPage(2, 3);        System.out.println("=====員工信息====");        for (Emp emp : emplist) {            System.out.println(emp.getSal()+"/t"+emp.getComm()+"/t"+emp.getDeptno() );        }    }}
3.2、分離出接口
package com.pb.emp.dao;import java.util.List;import com.pb.emp.entity.Emp;public interface EmpDao {    /**     * 獲取新聞總數量     * */    public int getTotalCount();        public List<Emp> getEmpByPage(int pageNo, int pageSize);}
3.3、分享出service接口和實現類
package com.pb.service;import java.util.List;import com.pb.emp.entity.Emp;public interface Service {    public List<Emp> getEmpByPage(int pageNo, int pageSize);        public int getTotalCount();}
package com.pb.service.impl;import java.util.List;import com.pb.emp.dao.EmpDao;import com.pb.emp.entity.Emp;import com.pb.service.Service;public class ServiceImpl implements Service {      private EmpDao empDao;         /**    * 一定要加setter和getter方法,不然無法調用    * @森林森    */    public EmpDao getEmpDao() {        return empDao;    }    public void setEmpDao(EmpDao empDao) {        this.empDao = empDao;    }    @Override    public List<Emp> getEmpByPage(int pageNo, int pageSize) {                return empDao.getEmpByPage(pageNo, pageSize);    }    @Override    public int getTotalCount() {        // TODO Auto-generated method stub        return empDao.getTotalCount();    }}
四、建立頁面4.1導入service類

建立common.jsp頁面

<jsp:useBean id="empService" class="com.pb.service.impl.ServiceImpl" scope="page"></jsp:useBean><jsp:useBean id="empDao" class="com.pb.emp.dao.empl.EmpDaoImpl" scope="page"></jsp:useBean><jsp:setProperty property="empDao" name="empService" value="<%=empDao%>" />
4.2 實現頁面get方式
<%@page import="com.pb.emp.untily.Page"%><%@page import="com.pb.emp.entity.Emp"%><%@page import="java.util.List"%><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@include file="../common/common.jsp" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><script type="text/Javascript">function go(){    var goid=document.getElementById("goid").value;    var regexp=/^/d+$/;    if(!regexp.test(goid)){        alert("請輸入數字");    }else{        window.location="emp.jsp?pageIndex="+goid;    }}</script></head><body><table border="1" width="80%" align="center"><tr><td>員工編號</td><td>員工姓名</td><td>職位</td><td>入職日期</td><td>工資</td><td>獎金</td><td>部門編號</td></tr><%request.setCharacterEncoding("utf-8");int pageSize=5;String currPageno=request.getParameter("pageIndex");if(currPageno==null){    currPageno="1";}//當前頁int pageNo=Integer.parseInt(currPageno);//總記錄婁int recordCount=empService.getTotalCount();//每頁顯示記錄數Page pages=new Page();//當前頁pages.setCurrPageNo(pageNo);//頁面顯示多少條記錄pages.setPageSize(pageSize);//總記錄數pages.setRecordCount(recordCount);//總頁數int totalPageCount=pages.settotalPageCountByRs();//對首面和最后一面設置不重小于1和大于最后一頁if(pageNo<1){    pageNo=1;}else if (pageNo>totalPageCount){    pageNo=totalPageCount;} List<Emp> emplist=empService.getEmpByPage(pageNo, pageSize); for(Emp emp:emplist){%><tr><td><%=emp.getEmpno() %></td><td><%=emp.getEname() %></td><td><%=emp.getJob() %></td><td><%=emp.getHiredate() %></td><td><%=emp.getSal() %></td><td><%=emp.getComm() %></td><td><%=emp.getDeptno() %></td></tr><% }%><tr><td>共<%=recordCount %>條記錄&nbsp;&nbsp; <%=pageNo %>/<%=totalPageCount %>頁</td><% //控制首頁的顯示if(pageNo>1){%><td><a href="emp.jsp?pageIndex=1">首頁</a></td><td><a href="emp.jsp?pageIndex=<%=pageNo-1%>">上一頁</a></td><%}if(pageNo<totalPageCount){    //控制最后一頁的顯示%><td><a href="emp.jsp?pageIndex=<%=pageNo+1%>">下一頁</a></td><td><a href="emp.jsp?pageIndex=<%=totalPageCount%>">最后一頁</a></td><%}%><td><input type="text" id="goid" name="goid"> </td><td><a href="javascript:go();">GO</a></td></tr></table></body></html>
4.3 實現頁面Post方式

小弟沒持明白,搞明白了再寫


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 喀什市| 南投市| 蒲城县| 衡水市| 正安县| 达拉特旗| 思茅市| 大兴区| 垣曲县| 连云港市| 郯城县| 阳原县| 永善县| 玛曲县| 白城市| 桐庐县| 英吉沙县| 思茅市| 武宣县| 樟树市| 和静县| 无锡市| 西和县| 商洛市| 来安县| 乐安县| 固始县| 华坪县| 瓮安县| 百色市| 甘孜县| 丹寨县| 汝阳县| 抚宁县| 松潘县| 兰坪| 玉环县| 东明县| 怀化市| 乐东| 阿拉善左旗|