狂神说 javaweb 36集:smbms 用户管理分页OK_SMBMS 项目搭建(一)

36,smbms 用户管理分页OK

3.获取角色操作

为了我们职责统一,可以把角色的操作单独放在一个包中,和pojo类对应!

  1. RoleDao

     //获取角色列表
     public List<Role> getRoleList(Connection connection) throws Exception;
  2. RoleDaoImpl

     public class RoleDaoImpl implements RoleDao{
         //获取角色列表
         public List<Role> getRoleList(Connection connection) throws Exception {
             PreparedStatement pstm = null;
             ResultSet rs = null;
             List<Role> roleList = new ArrayList<Role>();
             if (connection != null) {
                 String sql = "select * from smbms_role ";
                 Object[] params = {};
                 rs = BaseDao.execute( connection, pstm, rs, sql, params );
     
     
                 while (rs.next()) {
                     Role role = new Role();
                     role.setId( rs.getInt( "id" ) );
                     role.setRoleCode( rs.getString( "roleCode" ) );
                     role.setRoleName( rs.getString( "roleName" ) );
                     roleList.add(role);
                }
                 BaseDao.closeResource(null, pstm, rs);
            }
             return roleList;
        }
  3. RoleService

     //获取角色列表
     public List<Role> getRoleList();
  4. RoleServiceImpl

     //获取角色列表
     public class RoleServiceImpl implements RoleService{
     
         //引入Dao
         private RoleDao roleDao;
     
         public RoleServiceImpl() {
             roleDao = new RoleDaoImpl();
        }
     
         public List<Role> getRoleList() {
     
             Connection connection = null;
             List<Role> roleList = null;
     
             connection = BaseDao.getConnection();
             try {
                 roleList = roleDao.getRoleList( connection );
            } catch (Exception e) {
                 e.printStackTrace();
            }finally {
                 BaseDao.closeResource( connection,null,null );
            }
             return  roleList;
        }
     }

4、用户显示的Servlet

  1. 获取用户前端的数据(查询)

  2. 判断请求是否需要执行,看参数的值判断

  3. 为了实现分页,需要计算出当前页面和总页面,页面大小…

  4. 用户列表展示

  5. 返回前端

小黄鸭调试法:自言自语

此概念是参照于一个来自《程序员修炼之道》书中的一个故事。传说中程序大师随身携带一只小黄鸭,在调试代码的时候会在桌上放上这只小黄鸭,然后详细地向鸭子解释每行代码 [1] 。

许多程序员都有过向别人(甚至可能向完全不会编程的人)提问及解释编程问题,就在解释的过程中击中了问题的解决方案。一边阐述代码的意图一边观察它实际上的意图并做调试,这两者之间的任何不协调会变得很明显,并且更容易发现自己的错误。如果没有玩具小鸭子也可以考虑向其它东西倾诉,比如桌上的花花草草,键盘鼠标。

类似的,有一种现象叫做cone of answers,这是一个常见的现象。你的朋友跑来问你一个问题,但是当他自己把问题说完,或者说到一半的时候就想出了答案走了,留下一脸茫然的你。是的,这个时候你就起到了那只小黄鸭的作用。

相似的概念还有不少,例如自白调试、纸板程序员或程序员的假人、想出脑外等等。总的来说,在你试图表述自己的想法的过程中,自然地在促使自己去整理思路,重新考虑问题。

项目原理流程图:

 

项目原理流程图

 

问题

分页的实现

查询不能正常运行

自己写错误的

 
    //重点,难点
    public void query(HttpServletRequest req, HttpServletResponse resp){
 
        //查询用户列表
 
        //从前端获取数据:
        String queryUsername = req.getParameter( "queryname" );
        String temp = req.getParameter( "queryUserRole" );//临时
        String pageIndex = req.getParameter( "pageIndex" );
        int queryUserRole =0;
 
        //获取用户列表
        UserServiceImpl userService = new UserServiceImpl();
        List<User> userList = null;
 
        //第一次走这个请求,一定是第一页,页面的大小固定的;
        int pageSize = 5;//可以把这个写到配置文件里,方便后期修改
        int currentpageNo = 1;
 
 
        if (queryUsername == null){
            queryUsername = "";
        }
 
        if(temp != null && !temp.equals("")){
            queryUserRole = Integer.parseInt( temp );//给查询赋值! 0,1,2,3
        }
 
        if (pageIndex != null){
            currentpageNo = Integer.parseInt( pageIndex );
        }
 
        //获取用户的总数(分页:上一页,下一页的情况)
        int totalCount = userService.getUserCount( queryUsername, queryUserRole );
        //总页数
        PageSupport pageSupport = new PageSupport();
        pageSupport.setCurrentPageNo(currentpageNo);
        pageSupport.setPageSize( pageSize );
        pageSupport.setTotalCount( totalCount );
 
        int totalPageCount = pageSupport.getTotalPageCount();//总共页数
 
        //控制首页和尾页
        //如果页面要小于1了,就显示第一页的东西
        if (totalPageCount < 1){
            totalPageCount = 1;
        }else if(currentpageNo > totalPageCount){//当前页面大于了最后一页
            currentpageNo = totalPageCount;
        }
 
        //获取用户列表展示
        userList = userService.getUserList( queryUsername, queryUserRole, currentpageNo, pageSize );
        req.setAttribute( "userList", userList);
 
        RoleService roleService = new RoleServiceImpl();
        List<Role> roleList = roleService.getRoleList();
        req.setAttribute( "roleList",roleList );
        req.setAttribute( "totalCount",totalCount);
        req.setAttribute( "currentPageNo",currentpageNo);
        req.setAttribute( "totalPageCount",totalPageCount);
        req.setAttribute( "queryUsername",queryUsername);
        req.setAttribute( "queryUserRole",queryUserRole);
 
        //返回前端
        try {
            req.getRequestDispatcher( "userlist.jsp" ).forward( req,resp );
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
 
    }
 

正确的

 //重点,难点
 public void query(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
    //查询用户列表
    //从前端获取数据
    String queryUserName = request.getParameter("queryname");
    String temp = request.getParameter("queryUserRole");
    String pageIndex = request.getParameter("pageIndex");
    int queryUserRole = 0;
    UserService userService = new UserServiceImpl();
    List<User> userList = null;
    //第一次走这个请求,一定是第一页,页面大小是固定的
    //设置页面容量
    int pageSize = 5;
    //默认当前页码
    int currentPageNo = 1;
 
    if (queryUserName == null) {
        queryUserName = "";
    }
    if (temp != null && !temp.equals("")) {
        queryUserRole = Integer.parseInt(temp);
    }
 
    if (pageIndex != null) {
        currentPageNo = Integer.valueOf(pageIndex);
    }
    //总数量(表)
    int totalCount = userService.getUserCount(queryUserName, queryUserRole);
    //总页数
    PageSupport pages = new PageSupport();
    pages.setCurrentPageNo(currentPageNo); //当前页
    pages.setPageSize(pageSize);           //页面大小
    pages.setTotalCount(totalCount);       //总数量
 
    int totalPageCount = pages.getTotalPageCount(); //总页面数量
 
    //控制首页和尾页
    //如果页面小于第一页,就显示第一页
    if (currentPageNo < 1) {
        currentPageNo = 1;
        //如果当前页面大于最后一页,当前页等于最后一页即可
    } else if (currentPageNo > totalPageCount) {
        currentPageNo = totalPageCount;
    }
 
    //获取用户列表展示
    userList = userService.getUserList(queryUserName, queryUserRole, currentPageNo, pageSize);
    request.setAttribute("userList", userList);
    //获取角色列表
    List<Role> roleList = null;
    RoleService roleService = new RoleServiceImpl();
    roleList = roleService.getRoleList();
    request.setAttribute("roleList", roleList);
 
    request.setAttribute("queryUserName", queryUserName);
    request.setAttribute("queryUserRole", queryUserRole);
    request.setAttribute("totalPageCount", totalPageCount);
    request.setAttribute("totalCount", totalCount);
    request.setAttribute("currentPageNo", currentPageNo);
 
    request.getRequestDispatcher("userlist.jsp").forward(request, response);
 }
 
posted @   坚持做  阅读(261)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示