【实训记录】中软国际实训记录(四)

16 篇文章 2 订阅
14 篇文章 3 订阅

昨天我们实现了ssm登录分页以及搜索功能,今天我们主要是学习过滤器、批量删除以及角色权限管理。在本文中主要记录今天实现中所遇到的问题以及一些解决方法

1.分页以及模糊查询功能

这里昨天我们已经实现,具体问题可以查看上一篇实训记录文档,主要使用MyBtis的插件PageHelper来实现分页,同时在dependency中添加依赖字段,进行相关配置即可。

2.角色管理数据库以及相关操作
  • 首先对角色进行管理,要在数据库中创建两张表,role与user_role
  • 分别在项目对应文件夹下创建接口与实现的类
    在这里插入图片描述
    在这里插入图片描述
  • 然后在UserService.java里面接口继承UserDetailsService
  • 同时需要在IUserInfoDao中定义findUserByName方法,并且在UserMapper.xml里面进行实现
  • 最后在UserInfo.xml中添加下列代码:
<select id="findUserByName" parameterType="String" resultType="com.zhongruan.bean.UserInfo">
    select * from userinfo where name=#{name}
</select>
2.1 相关接口继承

pass

2.2 role类
package com.zhongruan.bean;

public class Role {
    private int id;
    private String roleName;
    private String roleDesc;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    public String getRoleDesc() {
        return roleDesc;
    }

    public void setRoleDesc(String roleDesc) {
        this.roleDesc = roleDesc;
    }

    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", roleName='" + roleName + '\'' +
                ", roleDesc='" + roleDesc + '\'' +
                '}';
    }
}


2.3 IRoleDao接口
package com.zhongruan.dao;

import com.zhongruan.bean.Role;

import javax.print.DocFlavor;
import java.util.List;

public interface IRoleDao {
    List<Role> findRoleByUserId(int userId);
}
2.4 RoleMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.zhongruan.dao.IRoleDao" >
    <select id="findRoleByUserId" parameterType="int" resultType="com.zhongruan.bean.Role">
        select * from role where id in (select roleId from user_role where userId=#{userId})
    </select>

</mapper>

2.5 修改UserInfoServiceImpl
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    UserInfo userInfo =userInfoDao.findUserByName(username);
    List<Role>roles=roleDao.findRoleByUserId(userInfo.getId());
    User user=new User(userInfo.getName(),"{noop}"+userInfo.getPassword(),getAuthority(roles));
    return user;
}

private Collection<? extends GrantedAuthority> getAuthority(List<Role> roles) {
    List<SimpleGrantedAuthority>list=new ArrayList<>();
    for(Role role:roles){
        list.add(new SimpleGrantedAuthority("ROLE_"+role.getRoleName()));

    }
    return list;
}

2.6 修改login.jsp
  • 修改响应路径即可
3.过滤器

过滤器,对客户端访问资源的过滤,满足条件的通过,不满足的禁止,同时对目标资源访问前后进行逻辑处理,需要对request设置编码,这样做使得所有走过servlet的编码是统一的,对于权限管理来说,在过滤器内部进行去除当前登录客户端角色,再看访问资源,如果匹配则通过,不匹配则不通过。

可以通过下面这个图来进行理解:
在这里插入图片描述

  • 我们需要在web.xml中声明过滤器相关
<filter>
	<filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
  • 然后添加相关的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-4.3.xsd
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">

    <!-- 1.注解扫描位置-->
    <context:component-scan base-package="com.zhongruan.controller" />

    <!-- 2.配置映射处理和适配器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

    <!-- 3.视图的解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/pages/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

  • ps: 遇到一些配置上的小问题,搜索百度解决
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值