练习中的问题:

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的更多相关文章

  1. 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(四)授权代码维护

    一.前言 权限系统设计中,授权代码是用来控制数据访问权限的.授权代码说白了只是一树型结构的数据,没有什么其它的业务意义.那么这个页面的功能也就非常简单授权代码维护:新增.修改.删除授权代码数据. 二. ...

  2. 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(三)图形化机构树

    一.前言 组织机构是国内管理系统中很重要的一个概念,以前我们基本都是采用数据列表的形式展现,最多只是采用树形列表展现.虽然够用,但是如果能做成图形化当然是最好不过了.这里我不用任何图形控件,就用最原始 ...

  3. 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(二)菜单导航

    一.前言 上篇博客中已经总体的说了一下权限系统的思路和表结构设计,那接下来我们就要进入正文了,先从菜单导航这个功能开始. 二.实现 这个页面基本不用什么需求分析了,大家都很明白,不过在这个页面要多维护 ...

  4. 权限系统设计实现MVC4 + WebAPI + EasyUI + Knouckout

    权限系统设计实现MVC4 + WebAPI + EasyUI + Knouckout (一) 一.前言 之前的博客一直都还没写到框架的实现及权限系统,今天开始写我的权限系统,我以前做过的项目基本上都有 ...

  5. 基于Spring Cloud、JWT 的微服务权限系统设计

    基于Spring Cloud.JWT 的微服务权限系统设计 https://gitee.com/log4j/pig https://github.com/kioyong/spring-cloud-de ...

  6. 基于RBAC模型的权限系统设计(Github开源项目)

    RBAC(基于角色的访问控制):英文名称Rose base Access Controller.本博客介绍这种模型的权限系统设计.取消了用户和权限的直接关联,改为通过用户关联角色.角色关联权限的方法来 ...

  7. SpringSecurity原理剖析与权限系统设计

    Spring Secutity和Apache Shiro是Java领域的两大主流开源安全框架,也是权限系统设计的主要技术选型.本文主要介绍Spring Secutity的实现原理,并基于Spring ...

  8. 权限系统设计(0):权限系统设计基本概念改需-MAC/RBAC引子

    此篇主要对权限系统设计所涉的一些专业术语重点梳理.从我们windows的文件系统 自主访问控制 到基于角色访问控制. 权限设计基本术语 对后面会用到的词汇做一个简要说明 什么是权限(许可) 权限(Pr ...

  9. 若依管理系统RuoYi-Vue(二):权限系统设计详解

    若依Vue系统中的权限管理部分的功能都集中在了系统管理菜单模块中,如下图所示.其中权限部分主要涉及到了用户管理.角色管理.菜单管理.部门管理这四个部分. 一.若依Vue系统中的权限分类 根据观察,若依 ...

随机推荐

  1. Nginx命令行控制

    在Linux中,需要使用命令行来控制Nginx服务器的启动与停止.重载配置文件.回滚日志文件.平滑升级等行为.默认情况下,Nginx被安装在目录usrlocal/nginx/中,其二进制文件路径为us ...

  2. Selenium-WebDriver框架常用基本操作

    1.基础元素定位的八种方法 WebDriver driver = new ChromeDriver(); WebElement element = new WebElement(); 1.1 By.i ...

  3. JVM学习资料

      java虚拟机学习-深入理解JVM(1) java虚拟机学习-慢慢琢磨JVM(2) java虚拟机学习-慢慢琢磨JVM(2-1)ClassLoader的工作机制 java虚拟机学习-JVM内存管理 ...

  4. CSS 左右两边底部对齐

    https://demo.cssworld.cn/4/3-2.php <style type="text/css"> .parent{ width:500px; tex ...

  5. cocos2dx 开启控制台

    打开 SimulatorWin.cpp 把这句启用: #define SIMULATOR_WITH_CONSOLE_AND_MENU 1 这句本来因为#define隐藏了

  6. requests库写接口测试框架初学习

    学习网址:    https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dscpm/ff75b907-415d-4220-89 ...

  7. java类(Class)的概念;对象的概念,声明类的属性 和方法,局部变量和成员变量,面向对象编程思维,抽象的概念

    类(Class)的概念 类是对一组具有相同特征和行为的对象的抽象描述. 理解: [1] 类包含了两个要素:特性和行为 => 同一类事物具有相同的特征和行为. [2] 类是一个群体性概念.例如:网 ...

  8. iOS端临近封包时要做哪些事情?

    iOS封包前的注意事项: 0.功能测试,打点测试都已OK 1.创建case,使用master执行此轮case,修改版本号 2.建议使用各个系统的机型,如8,9,10,11,12, iPad等 3.ma ...

  9. pg 生成数据字典

    select (select relname||'--'||(select description from pg_description where objoid=oid and objsubid= ...

  10. SpringCloud入门

    一. 什么是 SpringCloud           什么是 SpringCloud:是一个服务治理平台,提供了一些服务框架.包含了:服务注册与发现.配置中心.消息中心 .负载均衡.数据监控等等. ...