狂神说 javaweb 36集:smbms 用户管理分页OK_SMBMS 项目搭建(一)
3.获取角色操作
为了我们职责统一,可以把角色的操作单独放在一个包中,和pojo类对应!
-
//获取角色列表
public List<Role> getRoleList(Connection connection) throws Exception; -
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;
} -
RoleService
//获取角色列表
public List<Role> getRoleList(); -
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
-
获取用户前端的数据(查询)
-
判断请求是否需要执行,看参数的值判断
-
为了实现分页,需要计算出当前页面和总页面,页面大小…
-
用户列表展示
-
返回前端
小黄鸭调试法:自言自语
此概念是参照于一个来自《
许多程序员都有过向别人(甚至可能向完全不会编程的人)提问及解释编程问题,就在解释的过程中击中了问题的解决方案。一边阐述代码的意图一边观察它实际上的意图并做调试,这两者之间的任何不协调会变得很明显,并且更容易发现自己的错误。如果没有玩具小鸭子也可以考虑向其它东西倾诉,比如桌上的花花草草,键盘鼠标。
类似的,有一种现象叫做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);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人