第三周进度博客

第三周
所花时间 15左右
代码量 700行左右
博客量 2篇
学到的知识点 可视化图表的使用、条件查询,分页

摘要、本周主要通过视频资源学习了条件查询和分页显示的一些操作,条件查询不是很难,通过获得的查询条件拼接sql语句即可,实现了通过姓名模糊查询,通过性别精确查找。分页操作比较难,通过编写了一个PageBean,提供了相关的构造方法。在给出的代码中有具体的解释

一、代码部分

1、分页功能的相关代码

PageBean

复制代码
package entity;
import java.util.ArrayList;
import java.util.List;

public class PageBean<T> {
    
    //当前页
    private int currentPage;
    //当前页显示的条数
    private int currentCount;
    //总条数
    private int totalCount;
    //总页数
    private int totalPage;
    //每页显示的数据
    private List<T> list = new ArrayList<T>();
    
    
    public int getCurrentPage() {
        return currentPage;
    }
    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }
    public int getCurrentCount() {
        return currentCount;
    }
    public void setCurrentCount(int currentCount) {
        this.currentCount = currentCount;
    }
    public int getTotalCount() {
        return totalCount;
    }
    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }
    public int getTotalPage() {
        return totalPage;
    }
    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }
    public List<T> getList() {
        return list;
    }
    public void setList(List<T> list) {
        this.list = list;
    }
}
复制代码

Servlet

复制代码
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("utf-8");

        PageService service = new PageService();
        // 模拟当前是第一页
        String currentPageStr = request.getParameter("currentPage");
        if (currentPageStr == null)
            currentPageStr = "1";
        int currentPage = Integer.parseInt(currentPageStr);
        // 认为每页显示2条
        int currentCount = 2;
        PageBean<User> pageBean = null;
        pageBean = service.findPageBean(currentPage, currentCount);

        request.setAttribute("pageBean", pageBean);
        request.getRequestDispatcher("all.jsp").forward(request, response);
    }
复制代码

service

复制代码
package service;

import java.util.ArrayList;
import dao.PageDao;
import entity.PageBean;
import entity.User;


public class PageService {
    
    PageDao dao=new PageDao();

    public PageBean<User> findPageBean(int currentPage, int currentCount) {

        //目的:就是想办法封装一个PageBean 并返回
                PageBean pageBean = new PageBean();
                //1、当前页private int currentPage;
                pageBean.setCurrentPage(currentPage);
                //2、当前页显示的条数private int currentCount;
                pageBean.setCurrentCount(currentCount);
                //3、总条数private int totalCount;
                int totalCount = dao.getTotalCount();
                System.out.println(totalCount);
                pageBean.setTotalCount(totalCount);
                //4、总页数private int totalPage;
                /*
                 * 总条数        当前页显示的条数    总页数
                 * 10        4                3
                 * 11        4                3
                 * 12        4                3
                 * 13        4                4
                 * 
                 * 公式:总页数=Math.ceil(总条数/当前显示的条数)
                 * 
                 */
                int totalPage = (int) Math.ceil(1.0*totalCount/currentCount);
                pageBean.setTotalPage(totalPage);
                //5、每页显示的数据private List<T> productList = new ArrayList<T>();
                /*
                 * 页数与limit起始索引的关系
                 * 例如 每页显示4条
                 * 页数        其实索引        每页显示条数
                 * 1        0            4
                 * 2        4            4
                 * 3        8            4
                 * 4        12            4
                 * 
                 * 索引index = (当前页数-1)*每页显示的条数
                 * 
                 */
                int index = (currentPage-1)*currentCount;
                
                ArrayList<User> findlist = dao.findlist(index,currentCount);
                pageBean.setList(findlist);
                System.out.println("66");
                return pageBean;
    }
    }
复制代码

dao

复制代码
public int getTotalCount() {
        // TODO 自动生成的方法存根
        int ans = 0;
        String sql = "select * from user";
        Connection con = null;
        Statement state = null;
        ResultSet rs = null;
        con = DBUtil.getConn();
        try {
            state = con.createStatement();
            rs = state.executeQuery(sql);
            while (rs.next()) {
                ans++;
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        DBUtil.close(rs, state, con);
        return ans;
    }

    public ArrayList<User> findlist(int index, int currentCount) {
        // TODO 自动生成的方法存根
        ArrayList<User> list = new ArrayList<>();
        String sql = "select * from user limit ?,?";
        Connection con = null;
        Statement state = null;
        PreparedStatement ps;
        con = DBUtil.getConn();
        ResultSet rs1 = null;
        try {
            ps = con.prepareStatement(sql);
            ps.setInt(1, index);
            ps.setInt(2, currentCount);
            rs1 = ps.executeQuery();
        } catch (SQLException e1) {
            // TODO 自动生成的 catch 块
            e1.printStackTrace();
        }
        User bean = null;
        try {
            while (rs1.next()) {
                String name = rs1.getString("name");
                String sex = rs1.getString("sex");
                String school = rs1.getString("school");
                String adress = rs1.getString("address");
                bean = new User(name, sex, school, adress);
                list.add(bean);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        DBUtil.close(rs1, state, con);
        return list;
    }
复制代码

2、条件查询的相关代码

servlet

复制代码
protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("name");
        String sex = request.getParameter("sex");
        String adress = request.getParameter("adress");
//        System.out.println(name);
//        System.out.println(sex);
        User bean = new User(name, sex, adress);
        PageBean<User> pageBean = null;
        UserService service = new UserService();
        pageBean = service.find(bean);
        request.setAttribute("pageBean", pageBean);
        request.getRequestDispatcher("all.jsp").forward(request, response);
    }
复制代码

dao

复制代码
public ArrayList<User> find(User bean) {
        ArrayList<User> list = new ArrayList<>();
        String sql = "select * from user where ";
        if ((bean.getName() != null && !bean.getName().trim().equals(""))
                && (bean.getSex() != null && !bean.getSex().trim().equals(""))) {
            sql += "name like '%" + bean.getName() + "%' and sex like '%" + bean.getSex() + "%'";
        } else if (bean.getName() != "") {
            sql += "name like '%" + bean.getName() + "%'";
        } else if (bean.getSex() != "") {
            sql += "sex ='" + bean.getSex() + "'";
        }
        if (bean.getName() == "" && bean.getSex() == "") {
            sql = "select * from user";
        }
        Connection con = null;
        Statement state = null;
        ResultSet rs = null;
        con = DBUtil.getConn();
        User beans = null;
        try {
            state = con.createStatement();
            rs = state.executeQuery(sql);
            while (rs.next()) {
                String name = rs.getString("name");
                String sex = rs.getString("sex");
                String school = rs.getString("school");
                String adress = rs.getString("address");
                beans = new User(name, sex, school, adress);
                list.add(beans);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        DBUtil.close(rs, state, con);
        return list;
    }
复制代码
原文地址:https://www.cnblogs.com/zzmds/p/13085451.html