编程语言
首页 > 编程语言> > 狂神说Java【SMBMS】——SMBMS超市订单管理系统(七) ——获取角色列表

狂神说Java【SMBMS】——SMBMS超市订单管理系统(七) ——获取角色列表

作者:互联网

 

1、RoleDao接口

package com.thhh.dao.role;

import com.thhh.pojo.Role;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

public interface RoleDao {
    /**
     * 1、获取角色列表
     * @param conn:数据库连接对象
     * @return:返回的结构集
     * @throws SQLException
     */
    public List<Role> getRoleList(Connection conn) throws SQLException;
}

2、RoleDaoImpl接口实现

package com.thhh.dao.role;

import com.thhh.dao.BaseDao;
import com.thhh.pojo.Role;
import org.junit.Test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class RoleDaoImpl implements RoleDao{
    //1、获取角色列表

    @Override
    public List<Role> getRoleList(Connection conn) throws SQLException {
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        List<Role> list = null;//存储角色对象的集合

        if (conn!=null){
            list = new ArrayList<Role>();
            String sql = "SELECT * FROM smbms_role";//直接写死,不用参数
            Object[] params = {};
            rs = BaseDao.executeQuery(sql,params,conn,pstmt,rs);
            while (rs.next()){
                Role role = new Role();
                role.setId(rs.getInt("id"));
                role.setRoleCode(rs.getString("roleCode"));
                role.setRoleName(rs.getString("roleName"));
                list.add(role);
            }
            BaseDao.close(null,pstmt,rs);
        }
        return list;
    }
}

3、RoleService接口

package com.thhh.service.role;

import com.thhh.pojo.Role;

import java.util.List;

public interface RoleService {
    //1、获取角色列表
    public List<Role> getRoleList();
}

4、RoleService接口实现

package com.thhh.service.role;

import com.thhh.dao.BaseDao;
import com.thhh.dao.role.RoleDao;
import com.thhh.dao.role.RoleDaoImpl;
import com.thhh.pojo.Role;
import org.junit.Test;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

public class RoleServiceImpl implements RoleService{
    private RoleDao roleDao = null;

    public RoleServiceImpl() {
        this.roleDao = new RoleDaoImpl();   //servlet中一旦调用这个service,就会实例化该Dao对象
    }

    @Override
    public List<Role> getRoleList() {
        Connection conn = null;//获取连接
        List<Role> roleList = null;
        try {
            conn = BaseDao.getConnection();
            roleList = roleDao.getRoleList(conn);//服务层调用Dao层方法
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            BaseDao.close(conn,null,null);//关闭连接
        }
        return roleList;
    }
}

5、测试

@Test
public void test(){
    RoleService roleService = new RoleServiceImpl();
    List<Role> list = roleService.getRoleList();
    for (Role role:list) {
        System.out.println(role.getId()+"\t"+role.getRoleName()+"\t"+role.getRoleCode());
    }
}

6、编写servlet

href="${pageContext.request.contextPath }/jsp/user.do?method=query"

/jsp/user.do
//这个URL映射的servlet我们在前面已经注册过了,所以区别就是它后面跟的参数
    
method=query
这个参数就是在传递指定servlet应该调用的方法

​ 这一次编写的servlet比较的复杂,我们把它单独拎出来看

    //3、按照用户名/职位名称查询用户列表或整表查询
    //【重点&难点】
    public void quary(HttpServletRequest req, HttpServletResponse resp){
        //1、从前端获取数据
        String queryname = req.getParameter("queryname");
        String queryUserRole = req.getParameter("queryUserRole");
        String pageIndex = req.getParameter("pageIndex");//通过隐藏域进行的提交,默认 = 1

        int UserRole = 0;//我们先让UserRole = 0,因为从前端接收到的queryUserRole可能就是一个NULL,此时我们就需要将其指定为0
        int pageSize = 5;//这个数字最好是写在配置文件中,这样以后想要修改一页上面显示的行数,我们就不用再从新编译代码和测试了
        int currentPageNo = 1;//先给当前页设置一个默认的值

        //2、通过判断参数决定哪些请求需要处理
        if (queryname == null){
            queryname = "";//如果前端没有按照用户名查询,我们就将用户名设置""
        }
        if (queryUserRole!=null && queryUserRole!=""){
            UserRole = Integer.parseInt(queryUserRole);//当前端传过来的queryUserRole有数据的时候我们才对其进行解析
        }
        if (pageIndex!=null){
            currentPageNo = Integer.parseInt(pageIndex);
        }

        //3、为了实现分页,需要使用工具类PageSupport并传入总用户数,计算出totalPageCount
        //参数totalCount由getUserCount得出;pageSize是固定死了的;currentPageNo默认设为1
        UserService userService = new UserServiceImpl();
        int totalCount = userService.getUserCount(queryname,UserRole);
        //使用最开始导入的工具类
        PageSupport pageSupport = new PageSupport();
        pageSupport.setPageSize(pageSize);//设置一页多少行数据
        pageSupport.setTotalCount(totalCount);//设置总页数
        pageSupport.setCurrentPageNo(currentPageNo);//设置当前页数


        int totalPageCount = 0;
        totalPageCount = pageSupport.getTotalPageCount();

        //4、控制翻页
        if (currentPageNo<1){//在第一页的时候还想点击上一页
            currentPageNo = 1;
        }else if(currentPageNo>pageSupport.getTotalPageCount()) {//在第最后一页的时候还想点击下一页
            currentPageNo = totalPageCount;
        }

        //5、用户列表展示
        List<User> userList = userService.getUserList(queryname,UserRole,currentPageNo,pageSize);
        //将集合返回给前端进行解析显示
        req.setAttribute("userList",userList);

        //6、角色列表展示
        List<Role> roleList = new RoleServiceImpl().getRoleList();
        req.setAttribute("roleList",roleList);

        //7、将参数返回前端
        req.setAttribute("queryUserName",queryname);
        req.setAttribute("queryUserRole",queryUserRole);
        req.setAttribute("totalPageCount",totalPageCount);
        req.setAttribute("totalCount",totalCount);
        req.setAttribute("currentPageNo",currentPageNo);

        //8、重定向刷新页面
        try {
            System.out.println("=======================进入到servlet,且i调用method = query");
            req.getRequestDispatcher("userlist.jsp").forward(req,resp);
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

​ 首先,这个servlet直接和前端的用户管理页面进行交互,且用户管理页面所有展示的数据都是由这个servlet的query()返回的,所以我们应该按照前端素材来编写servlet的query()




​ 通过上面的分析我们可以发现:我们需要从前端页面获取3个参数,并给前端返回7个参数

//1、从前端获取数据
String queryname = req.getParameter("queryname");
String queryUserRole = req.getParameter("queryUserRole");
String pageIndex = req.getParameter("pageIndex");//通过隐藏域进行的提交,默认 = 1

int UserRole = 0;//我们先让UserRole = 0,因为从前端接收到的queryUserRole可能就是一个NULL,此时我们就需要将其指定为0
int pageSize = 5;//这个数字最好是写在配置文件中,这样以后想要修改一页上面显示的行数,我们就不用再从新编译代码和测试了
int currentPageNo = 1;//先给当前页设置一个默认的值
//2、通过判断参数决定哪些请求需要处理
if (queryname == null){
    queryname = "";//如果前端没有按照用户名查询,我们就将用户名设置""
}
if (queryUserRole!=null && queryUserRole!=""){
    UserRole = Integer.parseInt(queryUserRole);//当前端传过来的queryUserRole有数据的时候我们才对其进行解析
}
if (pageIndex!=null){
    currentPageNo = Integer.parseInt(pageIndex);
}
//3、为了实现分页,需要使用工具类PageSupport并传入总用户数,计算出totalPageCount
//参数totalCount由getUserCount得出;pageSize是固定死了的;currentPageNo默认设为1
UserService userService = new UserServiceImpl();
int totalCount = userService.getUserCount(queryname,UserRole);
//使用最开始导入的工具类
PageSupport pageSupport = new PageSupport();
pageSupport.setPageSize(pageSize);//设置一页多少行数据
pageSupport.setTotalCount(totalCount);//设置总页数
pageSupport.setCurrentPageNo(currentPageNo);//设置当前页数


int totalPageCount = 0;
totalPageCount = pageSupport.getTotalPageCount();
//4、控制翻页
if (currentPageNo<1){//在第一页的时候还想点击上一页
    currentPageNo = 1;
}else if(currentPageNo>pageSupport.getTotalPageCount()) {//在第最后一页的时候还想点击下一页
    currentPageNo = totalPageCount;
}
//5、用户列表展示
List<User> userList = userService.getUserList(queryname,UserRole,currentPageNo,pageSize);
//将集合返回给前端进行解析显示
req.setAttribute("userList",userList)
//6、角色列表展示
List<Role> roleList = new RoleServiceImpl().getRoleList();
req.setAttribute("roleList",roleList);
//7、将参数返回前端
req.setAttribute("queryUserName",queryname);
req.setAttribute("queryUserRole",queryUserRole);
req.setAttribute("totalPageCount",totalPageCount);
req.setAttribute("totalCount",totalCount);
req.setAttribute("currentPageNo",currentPageNo);
//8、重定向刷新页面
try {
    System.out.println("=======================进入到servlet,且i调用method = query");
    req.getRequestDispatcher("userlist.jsp").forward(req,resp);
} catch (ServletException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

7、测试




测试完成!

标签:Java,currentPageNo,req,queryname,SMBMS,role,import,狂神,queryUserRole
来源: https://www.cnblogs.com/yayuya/p/16065599.html