我是靠谱客的博主 紧张汽车,这篇文章主要介绍javaWeb学习-----smbms(修改密码,用户管理底层),现在分享给大家,希望可以做个参考。

4.密码修改

4.1.编写前端页面

​ 写项目,建议从底层向上写,思考功能和架构。
请添加图片描述

4.2.userDao接口

复制代码
1
2
3
//修改当前密码 public int updatePwd(Connection connection,int id,String userPassword) throws Exception;

4.3.userDao的实现类

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//修改当前用户密码 @Override public int updatePwd(Connection connection, int id, String userPassword) throws Exception { int i = 0; PreparedStatement preparedStatement = null; if (connection != null){ String sql = "update smbms_user set userPassword = ? where id = ?"; Object[] params = {userPassword,id}; i = Base.execute(connection, preparedStatement, sql, params); } Base.close(null,preparedStatement,null); return i; }

4.4.userService接口

复制代码
1
2
3
//修改用户密码 public boolean updatePwd(int id, String userPassword) throws Exception;

4.5.userService的实现类

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//修改当前用户的密码 @Override public boolean updatePwd(int id, String userPassword){ boolean flag = false; Connection connection = null; try { connection = Base.getConnection(); if (userDAO.updatePwd(connection,id,userPassword) > 0){ flag = true; } } catch (Exception e) { e.printStackTrace(); }finally { Base.close(connection,null,null); } return flag; }

4.6.userServet

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class UserServlet extends HttpServlet { //servlet:控制层,调用业务层代码 @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //从session里面拿id Object user = req.getSession().getAttribute(Constans.USER_SESSION); String newpassword = req.getParameter("newpassword"); boolean flag = false; //调用userService中的方法 if (user != null && !StringUtils.isNullOrEmpty(newpassword)){ UserService userService = new UserServiceImpl(); try { flag = userService.updatePwd(((User) user).getId(), newpassword); if (flag){ req.setAttribute("message","修改密码成功,请退出,使用新密码登录。"); //密码修改成功,移除session req.getSession().removeAttribute(Constans.USER_SESSION); }else { req.setAttribute("message","修改密码失败。"); } } catch (Exception e) { e.printStackTrace(); } }else { req.setAttribute("message","新密码有问题。"); } req.getRequestDispatcher("jap/pwdmodify.jsp").forward(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }

4.7.优先使用Ajax修改密码

使用阿里巴巴的fastJson,导入包

复制代码
1
2
3
4
5
6
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.75</version> </dependency>
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//servlet方法复用 public class UserServlet extends HttpServlet { //servlet:控制层,调用业务层代码 @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String method = req.getParameter("method"); if (method.equals("savepwd")&&method!=null){ this.updatePwd(req,resp); }else if (method.equals("pwdmodify")&&method!=null){ this.pwdModify(req,resp); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } //修改密码 public void updatePwd(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //从session里面拿id Object user = req.getSession().getAttribute(Constans.USER_SESSION); String newpassword = req.getParameter("newpassword"); boolean flag = false; //调用userService中的方法 if (user != null && !StringUtils.isNullOrEmpty(newpassword)){ UserService userService = new UserServiceImpl(); try { flag = userService.updatePwd(((User) user).getId(), newpassword); if (flag){ req.setAttribute("message","修改密码成功,请退出,使用新密码登录。"); //密码修改成功,移除session req.getSession().removeAttribute(Constans.USER_SESSION); }else { req.setAttribute("message","修改密码失败。"); } } catch (Exception e) { e.printStackTrace(); } }else { req.setAttribute("message","新密码有问题。"); } req.getRequestDispatcher("jap/pwdmodify.jsp").forward(req,resp); } //验证旧密码 public void pwdModify(HttpServletRequest req, HttpServletResponse resp) throws IOException { Object user = req.getSession().getAttribute(Constans.USER_SESSION); String oldPassword = (String) req.getAttribute("oldPassword"); //万能的Map,结果集 Map<String,String> resultMap = new TreeMap<>(); if (user==null){//如果session失效了,登录过期 resultMap.put("result","sessionerror"); }else if (StringUtils.isNullOrEmpty(oldPassword)){//旧密码为空 resultMap.put("result","error"); }else { String userPassword = ((User) user).getUserPassword();//数据库中用户的密码 if (userPassword.equals(oldPassword)){ resultMap.put("result","true"); }else { resultMap.put("result","false"); } } resp.setContentType("application/json"); PrintWriter writer = resp.getWriter(); //JSONSArray,阿里巴巴的JSON工具类,把map类型转换为json类型传递给前端 //json格式={key:value} writer.write(JSONArray.toJSONString(resultMap)); writer.flush(); writer.close(); } }

5.用户管理实底层现

请添加图片描述

导入用户的工具类、用户列表页面导入:用户列表、分页条

5.1获取用户数量

5.1.1创建分页的类
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public class PageSupporttest { //当前页码-来自于用户输入 private int currentPageNo = 1; //总数量(表) private int totalCount = 0; //页面容量 private int pageSize = 0; //总页数-totalCount/pageSize(+1) private int totalPageCount = 1; public int getCurrentPageNo() { return currentPageNo; } public void setCurrentPageNo(int currentPageNo) { if(currentPageNo > 0){ this.currentPageNo = currentPageNo; } } public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { if(totalCount > 0){ this.totalCount = totalCount; //设置总页数 this.setTotalPageCountByRs(); } } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { if(pageSize > 0){ this.pageSize = pageSize; } } public int getTotalPageCount() { return totalPageCount; } public void setTotalPageCount(int totalPageCount) { this.totalPageCount = totalPageCount; } public void setTotalPageCountByRs(){ if(this.totalCount % this.pageSize == 0){ this.totalPageCount = this.totalCount / this.pageSize; }else if(this.totalCount % this.pageSize > 0){ this.totalPageCount = this.totalCount / this.pageSize + 1; }else{ this.totalPageCount = 0; } } }
5.1.2获取用户的数量

userDao

复制代码
1
2
3
//根据用户名或者角色名查询当前所有用户的数量 public int getUserCount(Connection connection,String username,int userRole) throws Exception;

userDaoImpl

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//根据用户名或者角色名查询当前所有用户的数量 @Override public int getUserCount(Connection connection, String username, int userRole) throws Exception { int i = 0; PreparedStatement preparedStatement = null; ResultSet resultSet = null; if (connection != null){ StringBuilder sql = new StringBuilder(); sql.append("select count(1) as count from smbms_user user,smbms_role role where user.userRole = role.id"); ArrayList<Object> list = new ArrayList<>(); if (StringUtils.isNullOrEmpty(username)){ sql.append(" and userName like ?"); list.add("%" + username + "%");//index = 0 } if (userRole > 0){ sql.append(" and u.userRole = ?"); list.add(userRole);//index = 1 } Object[] params = list.toArray(); resultSet = Base.execute(connection, preparedStatement, resultSet, sql.toString(), params); if (resultSet.next()){ i = resultSet.getInt("count");//从结果集中获取数量 } } Base.close(null,preparedStatement,resultSet); return i; }

userService

复制代码
1
2
3
//根据用户名或者角色名查询当前所有用户的数量 public int getUserCount(String username,int userRole);

userServiceImpl

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//根据用户名或者角色名查询当前所有用户的数量 @Override public int getUserCount(String username, int userRole) { int count = 0; Connection connection = null; try { connection = Base.getConnection(); count = userDAO.getUserCount(connection, username, userRole); } catch (Exception e) { e.printStackTrace(); }finally { Base.close(connection,null,null); } return count; }

5.2获取用户列表

userDao

复制代码
1
2
3
//通过条件查询---userList public List<User> getUserList(Connection connection,String username,int userRole,int currentPageNo,int pageSize) throws Exception;

userDaoImpl

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
public List<User> getUserList(Connection connection, String username, int userRole, int currentPageNo, int pageSize) throws Exception { List<User> userslist = new ArrayList<>(); PreparedStatement preparedStatement = null; ResultSet resultSet = null; if (connection != null){ //用户存储sql语句 StringBuilder sql = new StringBuilder(); sql.append("select u.*,r.roleName as userRoleName from smbms_user u,smbms_role r where u.userRole = r.id"); //用于存储参数 ArrayList<Object> list = new ArrayList<>(); if (!StringUtils.isNullOrEmpty(username)){ sql.append(" and u.userName like ?"); list.add("%" + username + "%");//index = 0 } if (userRole > 0){ sql.append(" and u.userRole = ?"); list.add(userRole);//index = 1 } //在数据中,分页使用,limit startIndex,pageSize;总数 sql.append(" order by creationDate DESC limit ?,?"); //1 0 -(5) //2 5 -(5) //3 10 -(5) //当前记录号=(当前页-1)*页面大小 currentPageNo = (currentPageNo-1)*pageSize; list.add(currentPageNo); list.add(pageSize); Object[] params = list.toArray(); resultSet = Base.execute(connection, preparedStatement, resultSet, sql.toString(), params); while (resultSet.next()){ User user = new User(); user.setId(resultSet.getInt("id")); user.setUserCode(resultSet.getString("userCode")); user.setUserName(resultSet.getString("userName")); user.setGender(resultSet.getInt("gender")); user.setBirthday(resultSet.getDate("birthday")); user.setPhone(resultSet.getString("phone")); user.setUserRole(resultSet.getInt("userRole")); user.setUserRoleName(resultSet.getString("userRoleName")); userslist.add(user); } } Base.close(null,preparedStatement,resultSet); return userslist; }

userService

复制代码
1
2
3
//通过条件查询---userList public List<User> getUserList(String queryUsername, int queryUserRole, int currentPageNo, int pageSize) throws IOException;

userServiceImpl

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//通过条件查询---userList @Override public List<User> getUserList(String username, int userRole, int currentPageNo, int pageSize){ List<User> userList = new ArrayList<>(); Connection connection = null; try { connection = Base.getConnection(); userList = userDAO.getUserList(connection, username, userRole, currentPageNo, pageSize); } catch (Exception e) { e.printStackTrace(); }finally { Base.close(connection,null,null); } return userList; }

5.3获取角色列表

为了职责的统一,可以把角色的操作单独放到另一个包中。

RoleDAO

复制代码
1
2
3
//获取角色列表 public List<Role> getRoleList(Connection connection) throws Exception;

RoleDOAImpl

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//获取角色列表 @Override public List<Role> getRoleList(Connection connection) throws Exception { List<Role> roleList = new ArrayList<>(); PreparedStatement preparedStatement = null; ResultSet resultSet = null; if (connection != null){ String sql = "select * from smbms_role"; Object[] params = {}; resultSet = Base.execute(connection, preparedStatement, resultSet, sql, params); while (resultSet.next()){ Role role = new Role(); role.setId(resultSet.getInt("id")); role.setRoleCode(resultSet.getInt("roleCode")); role.setRoleName(resultSet.getString("roleName")); roleList.add(role); } } Base.close(null,preparedStatement,resultSet); return roleList; }

RoleService

复制代码
1
2
3
//获取角色列表 public List<Role> getRoleList() throws Exception;

RoleServiceImpl

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//获取角色列表 @Override public List<Role> getRoleList(){ List<Role> roleList = null; Connection connection = null; try { connection = Base.getConnection(); roleList = roleDAO.getRoleList(connection); } catch (Exception e) { e.printStackTrace(); }finally { Base.close(connection,null,null); } return roleList; }

5.4用户显示的Service

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

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

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

4.用户列表展示

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//查询用户列表 public void query(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { UserServiceImpl userService = new UserServiceImpl(); RoleServiceImpl roleService = new RoleServiceImpl(); List<User> userList = null; List<Role> roleList = null; //从前端获取到的数据 String queryUsername = req.getParameter("queryname"); String temp = req.getParameter("queryUserRole"); String pageIndex = req.getParameter("pageIndex"); //这是为了让界面有一个默认值0,不会出错 int queryUserRole = 0; //第一次请求,一定是第一页,且页面大小固定 int currentPageNo = 1; int pageSize = Constants.pageSize; //获取用户列表 if (queryUsername == null) { queryUsername = ""; } if (temp != null && !temp.equals("")) { queryUserRole = Integer.parseInt(temp);//给查询赋值 } if (pageIndex != null) { try { currentPageNo = Integer.parseInt(pageIndex); } catch (NumberFormatException e) { resp.sendRedirect("error.jsp"); } } //获取用户的总数(分页:上一页,下一页) int totalCount = userService.getUserCount(queryUsername, queryUserRole); //通过页面的类设置当前页面、总的数量、页面大小 PageSupport page = new PageSupport(); page.setCurrentPageNo(currentPageNo); page.setPageSize(pageSize); page.setTotalCount(totalCount); //最大页数 int totalPageCount = page.getTotalPageCount(); //控制首页和尾页 //如果页面小于1,就显示第一页 if (currentPageNo < 1) { currentPageNo = 1; } else if (currentPageNo > totalPageCount) { //如果页面大于最大页数,就显示最后一页 currentPageNo = totalPageCount; } //获取用户列表展示.角色列表 userList = userService.getUserList(queryUsername, queryUserRole, currentPageNo, pageSize); roleList = roleService.getRoleList(); req.setAttribute("userList", userList); req.setAttribute("roleList", roleList); req.setAttribute("totalCount", totalCount); req.setAttribute("currentPageNo", currentPageNo); req.setAttribute("totalPageCount", totalPageCount); req.setAttribute("queryUserName", queryUsername); req.setAttribute("queryUserRole", queryUserRole); //转发请求 req.getRequestDispatcher("userlist.jsp").forward(req, resp); }

最后

以上就是紧张汽车最近收集整理的关于javaWeb学习-----smbms(修改密码,用户管理底层)的全部内容,更多相关javaWeb学习-----smbms(修改密码内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(82)

评论列表共有 0 条评论

立即
投稿
返回
顶部