wisdomsell-day4(智能商贸系统第四天)

wisdomsell-day4(智能商贸系统第四天)

1.解决输入懒加载出现的页面无法显示问题(提示noSession)

在xml中配置一个过滤器

过滤器会让mannger对象在最后时候才关闭而不会提早关闭

<filter>
    <filter-name>openEntityManager</filter-name>
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>openEntityManager</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

2.解决配置过滤器后出现的没有序列化问题

两种方式,一种是打注解

 @JsonIgnoreProperties(value={"hibernateLazyInit", "Handler","filedhanler"})
    private Department department;

但是这种方式以后如果类多了,关联多了,每个都要打,容易引发耦合错误

所以最好选第二种方式:第一步创建一个类

//解决懒加载出现的无法序列化问题
public class CustomMapper extends ObjectMapper {
    public CustomMapper() {
        this.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        // 设置 SerializationFeature.FAIL_ON_EMPTY_BEANS 为 false
        this.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
    }
}

第二步在spring-mvc中将注解改一下

3.解决修改部门时出现的n to n 错误

原因:数据传过来时,spring通过set方式将数据放入到Employee对象中,但是在这些字段中,有一个字段是dapartment.id,就是这个“.”引起的n to n 错误,因为,点前面的数据都是通过get来获取到,然后再通过对象.set放入,此时放入的id就有可能和传过来的id不同,导致oid被修改,引发n to n 错误

解决办法

public Employee beforeUpdate(Long id,String cmd){
        if(id!=null&&"update".equals(cmd)){
            Employee employee = employeeService.findOne(id);
            //解决修改部门时出现n to n错误
            //错误出现原因:传过来的字段过来有一个是department.id,而id前面的在spring里面都是先get然后再set,此时就可能会出现被修改
            //解决办法原因:将部门设置为空,此时spring就是重新new一个对象出来,此时就会避免oid被修改了
            employee.setDepartment(null);
            return employee;
        }
        return null;
    }

4.引入shiro框架

主要是为了引入权限

shiro框架是一个轻量级的java安全框架

最核心的是四大基石

分别为身份验证,授权,会话管理,密码安全学

4.1quickStart

导包

<dependencies>
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-core</artifactId>
        <version>1.4.0</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

配置shiro.ini

# -----------------------------------------------------------------------------
# 这个文件中就是咱们的:用户,角色,权限,资源等
# users:代表下面的都是用户
#   root:用户名  123456:密码  admin:角色
# -----------------------------------------------------------------------------
[users]
root = 123456, admin
guest = guest, guest
gu = 123456,it


# -----------------------------------------------------------------------------
# roles:角色
#  admin = * admin角色可以做任何事
#  it = employee:save :it部可以添加员工
# -----------------------------------------------------------------------------
[roles]
admin = *
guest = employee:*
it = employee:save

测试

public class ShiroTest {
    //shiro的关键是要得到权限管理器,因为它的所有功能都是在权限管理器里面完成的

     @Test
      public void test()throws Exception {
         //1.先创建一个工厂

         Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
         //2.得到权限管理器
         SecurityManager securityManager = factory.getInstance();
         //3.放入到工具类中
         SecurityUtils.setSecurityManager(securityManager);
         //4.得到当前用户
         Subject subject = SecurityUtils.getSubject();
         System.out.println(subject.isAuthenticated());

         //判断该用户是否登陆
        if(!subject.isAuthenticated()){
             UsernamePasswordToken token = new UsernamePasswordToken("root", "123456");
             subject.login(token);
         }
         System.out.println("是否登陆"+subject.isAuthenticated());
     }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值