Java SSM 项目实战 day05 用户操作
发布日期:2021-06-29 15:04:17 浏览次数:3 分类:技术文章

本文共 10632 字,大约阅读时间需要 35 分钟。

一、用户查询

在这里插入图片描述

1、创建UserController

在这里插入图片描述

在这里插入图片描述

package com.itzheng.ssm.controller;import com.itzheng.ssm.domain.UserInfo;import com.itzheng.ssm.service.IUserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import java.util.List;@Controller@RequestMapping("/user")public class UserController {
@Autowired private IUserService userService; @RequestMapping("/findAll.do") public ModelAndView findAll() throws Exception{
ModelAndView mv = new ModelAndView(); List
userList = userService.findAll(); return mv; }}

在这里插入图片描述

2、在业务层当中

(1)完善IUserService

在这里插入图片描述

(2)完善UserServiceImpl

在这里插入图片描述

在这里插入图片描述

@Override    public List
findAll() throws Exception {
return userDao.findAll(); }
(3)在IUserDao当中创建findAll()

在这里插入图片描述

@Select("select * from users")    List
findAll() throws Exception;
(4)完善UserController当中的findAll方法

添加数据以及设置跳转页面

在这里插入图片描述

package com.itzheng.ssm.controller;import com.itzheng.ssm.domain.UserInfo;import com.itzheng.ssm.service.IUserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import java.util.List;@Controller@RequestMapping("/user")public class UserController {
@Autowired private IUserService userService; @RequestMapping("/findAll.do") public ModelAndView findAll() throws Exception{
ModelAndView mv = new ModelAndView(); List
userList = userService.findAll(); mv.addObject("userList",userList); mv.setViewName("user-list"); return mv; }}
(5)创建user-list.jsp

在这里插入图片描述

<%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
数据 - AdminLTE2定制版

用户管理 全部用户

列表

ID 用户名 邮箱 联系电话 状态 操作
${user.id } ${user.username } ${user.email } ${user.phoneNum } ${user.statusStr } 详情 添加角色

在这里插入图片描述

(6)运行测试

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
用户状态没有显示

修改UserInfo

在这里插入图片描述

public String getStatusStr() {
//状态0 表示未开启 1表示开启 if(status == 0){
statusStr = "未开启"; }else if(status == 1){
statusStr = "开启"; } return statusStr; }

在这里插入图片描述

二、创建用户

在这里插入图片描述

1、创建user-add.jsp

在这里插入图片描述

<%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%>
数据 - AdminLTE2定制版

用户管理 用户表单

用户信息
用户名称
密码
邮箱
联系电话
用户状态

点击新建

在这里插入图片描述
在这里插入图片描述

2、在UserController当中创建用户添加方法,创建save方法

在这里插入图片描述

//用户添加    @RequestMapping("/save.do")    public String  save(UserInfo userInfo) throws Exception{
userService.save(userInfo); return "redirect:findAll.do"; }

在这里插入图片描述

3、业务层

(1)IUserService

在这里插入图片描述

void save(UserInfo userInfo) throws  Exception;
(2)UserServiceImpl

在这里插入图片描述

@Override    public void save(UserInfo userInfo) throws Exception {
userDao.save(userInfo); }
(3)IUserDao

在这里插入图片描述

@Insert("insert into users(email,username,password,phoneNum,status) values (#{email},#{username},#{password},#{phoneNum},#{status})")    void save(UserInfo userInfo) throws Exception;
(4)配置加密,在UserServiceImpl当中配置

在这里插入图片描述

@Autowired    private BCryptPasswordEncoder bCryptPasswordEncoder;    @Override    public void save(UserInfo userInfo) throws Exception {
//对密码进行加密处理 userInfo.setPassword(bCryptPasswordEncoder.encode(userInfo.getPassword())); userDao.save(userInfo); }
(5)创建工具类BCryptPassWordEncoderUtils

在zheng_ssm_utils当中的src当中的main的java当中的com.itzheng.ssm.utils当中创建BCryptPassWordEncoderUtils类

在这里插入图片描述

package com.itzheng.ssm.utils;import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;public class BCryptPasswordEncoderUtils {
private static BCryptPasswordEncoder bCryptPassWordEncoder = new BCryptPasswordEncoder(); public static String encodePassword(String password) {
return bCryptPassWordEncoder.encode(password); } public static void main(String[] args) {
String password = "123"; String rpassword = encodePassword(password); System.out.println(rpassword); }}

如果报错说明没有引入org.springframework.security手动引入

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

运行测试项目

在这里插入图片描述

在这里插入图片描述

每次运行项目结果不一样
在这里插入图片描述

(6)运行项目添加用户

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行后报错
提示密码的值太大
在这里插入图片描述

报错的原因是加密后的字段比较长无法存入到数据库当中

更改数据库当中的password的长度

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
从新添加一下用户
在这里插入图片描述
添加成功
在这里插入图片描述

(8)处理用户(在密码加密之后不能登录的问题),因为密码被加密了

修改spring-security.xml文件

在这里插入图片描述

修改UserServiceImpl当中的loadUserByUsername

在这里插入图片描述

//处理自己的用户对象封装成UserDetails//  User user=new User(userInfo.getUsername(),"{noop}"+userInfo.getPassword(),getAuthority(userInfo.getRoles()));User user = new User(userInfo.getUsername(), userInfo.getPassword(), userInfo.getStatus() == 0 ? false : true, true, true, true, getAuthority(userInfo.getRoles()));

在这里插入图片描述

登录成功

(9)在数据库当中修改一下Tom的密码

在这里插入图片描述

复制工具类生成的密码,设置到数据库当中
在这里插入图片描述
并提交

三、用户详情查询流程分析

在这里插入图片描述

1、在UserController当中创建对应从查询方法

在这里插入图片描述

@RequestMapping("/findById.do")    public ModelAndView findById(String id)throws Exception{
ModelAndView mv = new ModelAndView(); UserInfo userInfo = userService.findById(id); return mv; }

2、业务层IUserService当中创建对应的方法

在这里插入图片描述

在这里插入图片描述

UserInfo findById(String id) throws Exception;

在UserServiceImpl当中

在这里插入图片描述

@Override    public UserInfo findById(String id) throws Exception {
return userDao.findById(id); }

3、dao当中IUserDao当中创建对应的方法的查询方法

(1)创建IPermissionDao接口

在这里插入图片描述

在这里插入图片描述

package com.itzheng.ssm.dao;import com.itzheng.ssm.domain.Permission;import org.apache.ibatis.annotations.Select;import java.util.List;public interface IPermissionDao {
@Select("select * from permission where id in (select permissionId from role_permission where roleId = #{id} )") public List
findPermissionByRoleId(String id) throws Exception;}
(2) IRoleDao当中的findRoleByUserId

在这里插入图片描述

package com.itzheng.ssm.dao;import com.itzheng.ssm.domain.Role;import org.apache.ibatis.annotations.Many;import org.apache.ibatis.annotations.Result;import org.apache.ibatis.annotations.Results;import org.apache.ibatis.annotations.Select;import java.util.List;public interface IRoleDao {
//根据用户id查询出所有对应的角色 @Select("select * from role where id in (select roleId from users_role where userId=#{userId})") @Results({
@Result(id = true, property = "id", column = "id"), @Result(property = "roleName", column = "roleName"), @Result(property = "roleDesc", column = "roleDesc"), @Result(property = "permissions", column = "id", javaType = java.util.List.class, many = @Many(select = "com.itzheng.ssm.dao.IPermissionDao.findPermissionByRoleId")) }) public List
findRoleByUserId(String userId) throws Exception;}

4、完善UserController的findById方法

在这里插入图片描述

设置跳转的界面

//查询指定id的用户    @RequestMapping("/findById.do")    public ModelAndView findById(String id)throws Exception{
ModelAndView mv = new ModelAndView(); UserInfo userInfo = userService.findById(id); mv.addObject("userInfo",userInfo); mv.setViewName("user-show"); return mv; }

5、创建user-show.jsp

在这里插入图片描述

<%@ page language="java" contentType="text/html; charset=UTF-8"         pageEncoding="UTF-8" %><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>    
数据 - AdminLTE2定制版

用户管理 全部用户

列表

名称 描述
${user.username}
${role.roleName } ${role.roleDesc }
${permission.permissionName} ${permission.url}

6、运行测试

在这里插入图片描述

在这里插入图片描述

7、没有显示权限信息需要在数据库当中插入一些数据

(1)向permission当中插入数据
insert into permission(permissionname,url) values ('user findAll','/user/findAll.do');insert into permission(permissionname,url) values ('user findById','/user/findById.do');

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(2)向中间表role_permission当中插入数据
insert into ROLE_PERMISSION(permissionid,roleid) values('61DC9373D3364855A98111F6E7D87CC2','1111');insert into ROLE_PERMISSION(permissionid,roleid) values('C6548DDAF9E841389C591BBD7022E56D','1111');insert into ROLE_PERMISSION(permissionid,roleid) values('61DC9373D3364855A98111F6E7D87CC2','2222');

在这里插入图片描述

8、再次查询

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

转载地址:https://code100.blog.csdn.net/article/details/116711954 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:第七届 互联网+大赛 报名详细流程 全国大学生创业网 (保姆级指南:如何同意对方邀请)
下一篇:Android Studio 实现登录注册-源代码 二(Servlet + 连接MySql数据库)

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月28日 11时43分22秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章