权限系统设计-day02
练习中的问题:
1,<s:url action="employee_input" />
这个标签用来让struts自动生成请求的路径,struts生成的路径是一个全路径,包含了context/package/action_method.action
1),context:就是我们在tomcat里面配置的path
2),package:struts中的包路径;
3),action_method:写在s:url标签中的action;
4),.action:就是在struts中配置的后缀名;
2,<s:a action="employee_input"><s:param name="employee.id" value="#u.id"/>编辑</s:a>
这个标签用来让struts自动生成<a>标签;
1),生成的a标签的href也是全路径;
2),在a标签中可以加上<s:param>,
<s:param name="" value=""/>
1),name属性代表添加到url中的参数的名字;
2),value属性代表添加到url中参数的值;
3,修改掉值的问题:
现象:在修改的时候,如果修改页面中有一些属性不需要修改,在修改之后,这些属性的值就没了;
原因:在编辑的时候,数据包装到这个Employee中的,由于表单数据缺失,employee中会少一些属性;

在update方法中,直接修改这个实例,hibernate中,会根据对象生成完整的UPDATE语句,所以属性被null覆盖了

解决方法:在包装参数之前,先把employee查询出来,在查询出来的对象上面再包装值;
prepare拦截器:
1,如果我们的Action实现了Preparable接口,prepare拦截器就会在我这个action所有的方法执行之前调用;
2,可以只拦截指定的方法;
1),比如 要拦截的方法名字叫做save;
2),在Action中创建一个public void prepareSave()方法,这个方法就可以在save方法执行之前执行;
3,默认情况下,在defalut-stack中,prepare拦截器是先于params拦截器执行的,所以在prepare拦截器中不能直接得到参数;
4,把默认拦截器栈修改为paramsPrepareParamsStack;
4,opensessioninview:
问题的出现:当我的employee和dept关联,在列表里面就显示不出来dept相关信息(no session的错误)
解决:提前开启session,延迟关闭session(把sesion的开启和关闭放到filter中);我们就把这种模式称为open session in view;这种模式专门用来处理延迟加载的问题;
注意,使用了Opensessioninview的模式,我们必须保证,这个opensessioninview的filter使用的是spring提供的;
spring处理session是一整套方案:
1,在filter中开启session,放到current thread中;
2,在aop的事务中,得到当前的session,开启事务;
3,在dao中(sessionFactory),得到当前的session,处理DML+QUERY;
4,在aop的事务结束时,提交事务(并不会关闭session);
5,请求返回的时候,在filter中关闭session;

5,在修改employee的时候,修改了department,报错;
问题原因:因为使用了opensessioninviewfilter,所以在prepareSave中查询到的employee和employee关联的department都是持久化对象,在提交数据的时候,我们修改了department的OID值,在hibernate中,是不允许修改持久化对象的OID的;所以hibernate报错;
解决问题:在prepareSave方法中,设置得到的employee对象关联的部门对象为空;
权限系统设计-day02的更多相关文章
- 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(四)授权代码维护
一.前言 权限系统设计中,授权代码是用来控制数据访问权限的.授权代码说白了只是一树型结构的数据,没有什么其它的业务意义.那么这个页面的功能也就非常简单授权代码维护:新增.修改.删除授权代码数据. 二. ...
- 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(三)图形化机构树
一.前言 组织机构是国内管理系统中很重要的一个概念,以前我们基本都是采用数据列表的形式展现,最多只是采用树形列表展现.虽然够用,但是如果能做成图形化当然是最好不过了.这里我不用任何图形控件,就用最原始 ...
- 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(二)菜单导航
一.前言 上篇博客中已经总体的说了一下权限系统的思路和表结构设计,那接下来我们就要进入正文了,先从菜单导航这个功能开始. 二.实现 这个页面基本不用什么需求分析了,大家都很明白,不过在这个页面要多维护 ...
- 权限系统设计实现MVC4 + WebAPI + EasyUI + Knouckout
权限系统设计实现MVC4 + WebAPI + EasyUI + Knouckout (一) 一.前言 之前的博客一直都还没写到框架的实现及权限系统,今天开始写我的权限系统,我以前做过的项目基本上都有 ...
- 基于Spring Cloud、JWT 的微服务权限系统设计
基于Spring Cloud.JWT 的微服务权限系统设计 https://gitee.com/log4j/pig https://github.com/kioyong/spring-cloud-de ...
- 基于RBAC模型的权限系统设计(Github开源项目)
RBAC(基于角色的访问控制):英文名称Rose base Access Controller.本博客介绍这种模型的权限系统设计.取消了用户和权限的直接关联,改为通过用户关联角色.角色关联权限的方法来 ...
- SpringSecurity原理剖析与权限系统设计
Spring Secutity和Apache Shiro是Java领域的两大主流开源安全框架,也是权限系统设计的主要技术选型.本文主要介绍Spring Secutity的实现原理,并基于Spring ...
- 权限系统设计(0):权限系统设计基本概念改需-MAC/RBAC引子
此篇主要对权限系统设计所涉的一些专业术语重点梳理.从我们windows的文件系统 自主访问控制 到基于角色访问控制. 权限设计基本术语 对后面会用到的词汇做一个简要说明 什么是权限(许可) 权限(Pr ...
- 若依管理系统RuoYi-Vue(二):权限系统设计详解
若依Vue系统中的权限管理部分的功能都集中在了系统管理菜单模块中,如下图所示.其中权限部分主要涉及到了用户管理.角色管理.菜单管理.部门管理这四个部分. 一.若依Vue系统中的权限分类 根据观察,若依 ...
随机推荐
- PHP常用函数大全500+
php usleep() //函数延迟代码执行若干微秒. unpack() //函数从二进制字符串对数据进行解包. uniqid() //函数基于以微秒计的当前时间,生成一个唯一的 ID. time_ ...
- mysql 5.7版本后时间datetime 默认为 0000-00-00 00:00:00 问题
CREATE TABLE `test_user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` char(25) DEFAULT '' ...
- Java数组的声明和遍历
Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如 n ...
- vue的动态路由(登录之后拿到动态路由通过addRouters()动态添加路由)
登录后我们拿到路由动态路由,后端传的数据可能为这个 { path: '/index', meta: { title: '首页', icon: 'icon-shouye', tab_index: , / ...
- 将Go的main包拆分为多个文件
将Go的main包拆分为多个文件的写法和普通包是完全一致的,其使用规则也相同.如编写main包结构如下: main |----main.go |----show.go 在main.go中编写了main ...
- 【工具】Idea GenerateAllSetter
使用工具自动生成setter方法调用,不是idea原生态生成getter/setter https://github.com/gejun123456/intellij-generateAllSetMe ...
- GLSL ES 3.0 和 2.0 的区别
GLSL ES 3.0 和 2.0 的区别 语法区别 attribute和varying. 取而代之的是 in和out 头文件多了个#version 300 es 纹理 texture2D 和 tex ...
- The type 'Expression<>' is defined in an assembly that is not referenced.You must add a reference to assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
在我将一个.net framework 4.0+mvc4+ef5的项目,升级到.net framework 4.6.1+mvc5+ef6之后,解决了所有的升级带来的问题,唯独在razor的cshtml ...
- Python 实现整数线性规划:分枝定界法(Branch and Bound)
今天做作业,要实现整数线性规划的分枝定界法算法.找了一些网上的博客,发现都很屎,感觉自己写的这个比较清楚.规范,所以在此记录.如有错误,请指正. from scipy.optimize import ...
- Linux禁止普通用户su至root
linux系统为了限制权限,有时候需要禁止普通用户su到root用户 为禁止普通用户su至root,需要分别修改/etc/pam.d/su和/etc/login.defs两个配置文件. 二.详细配置 ...