Structs2中的prepare和Spring中的scope="prototype“的功能和作用
2014-08-24 19:43
337 查看
Structs2中的Preparable接口
Structs2的Action在实现com.opensymphony.xwork2.Preparable接口后,可以重写prepare()方法,此时在Action中,prepare()方法的执行点是在:setXxx()和execute()的执行之前。
比如需求:在执行Action的方法前,接收前台隐藏域传过来的值,再根据该值执行相应逻辑
如前台传过来ID,我们根据ID查找数据库对应的用户信息,再跳转到modify()中修改信息
但实际的运行过程中发现,通过Debug断点调试得知prepare()方法接收到的ID值是零
即前台隐藏域中的ID值没有传过来,事实上问题就出在默认的defaultStack拦截器栈上
其实defaultStack无法接收prepare()需要的数据,而应借助paramsPrepareParamsStack拦截器栈
事实上使用prepare拦截器之前,应先调用params拦截器,prepare()才能接收到表单数据
基于这个思路,于是可以通过各种手段将params拦截器放置在prepare拦截器之前即可
比如将defaultStack中的所有拦截器拷贝到struts.xml的我们自定义的myStack拦截器栈中
再按照paramsPrepareParamsStack拦截器栈中的params和prepare顺序修改二者位置即可
最近读starting struts2 online,里面有一节Move CRUD Operations into the same Action,提供了Move CRUD Operations into the same Action大概的sample,于是进行了补充,记录下来,以备使用。
一、思路
在这本书里,lan roughley提到在结合preparable和ModenDriven拦截器实现Move CRUD Operations into the same Action,采用通配符的方式为所有的crud只写一个action配置,当然,这也要求相关文件的命名和目录组织
摘抄自:http://blog.csdn.net/yangqicong/article/details/6869980
Spring 中的scope="prototype"属性
Spring默认的scope是单例模式(singleton),这样只会创建一个Action对象,每次访问的都是同一个Action对象,数据不安全。
Structs2要求,每次访问都对应不同的Action,scope=”prototype“(原型模式)可以保证,当有请求时,都创建一个Action对象。
Structs2的Action在实现com.opensymphony.xwork2.Preparable接口后,可以重写prepare()方法,此时在Action中,prepare()方法的执行点是在:setXxx()和execute()的执行之前。
比如需求:在执行Action的方法前,接收前台隐藏域传过来的值,再根据该值执行相应逻辑
如前台传过来ID,我们根据ID查找数据库对应的用户信息,再跳转到modify()中修改信息
但实际的运行过程中发现,通过Debug断点调试得知prepare()方法接收到的ID值是零
即前台隐藏域中的ID值没有传过来,事实上问题就出在默认的defaultStack拦截器栈上
其实defaultStack无法接收prepare()需要的数据,而应借助paramsPrepareParamsStack拦截器栈
事实上使用prepare拦截器之前,应先调用params拦截器,prepare()才能接收到表单数据
基于这个思路,于是可以通过各种手段将params拦截器放置在prepare拦截器之前即可
比如将defaultStack中的所有拦截器拷贝到struts.xml的我们自定义的myStack拦截器栈中
再按照paramsPrepareParamsStack拦截器栈中的params和prepare顺序修改二者位置即可
最近读starting struts2 online,里面有一节Move CRUD Operations into the same Action,提供了Move CRUD Operations into the same Action大概的sample,于是进行了补充,记录下来,以备使用。
一、思路
在这本书里,lan roughley提到在结合preparable和ModenDriven拦截器实现Move CRUD Operations into the same Action,采用通配符的方式为所有的crud只写一个action配置,当然,这也要求相关文件的命名和目录组织
摘抄自:http://blog.csdn.net/yangqicong/article/details/6869980
Spring 中的scope="prototype"属性
Spring默认的scope是单例模式(singleton),这样只会创建一个Action对象,每次访问的都是同一个Action对象,数据不安全。
Structs2要求,每次访问都对应不同的Action,scope=”prototype“(原型模式)可以保证,当有请求时,都创建一个Action对象。
相关文章推荐
- Spring 注解 @Scope("prototype") 的作用
- Struts2+hibernate+spring 配置文件中scope="prototype"的作用
- Spring中scope="prototype"属性的作用
- Struts2+hibernate+spring 配置文件中scope="prototype"的作用 .
- sping+struts2中配置Action的bean中scope="prototype"的作用
- spring scope="prototype" 和scope="singleton"区分
- struts+spring action应配置为scope="prototype"
- struts+spring action应配置为scope="prototype"
- Struts2+hibernate+spring 配置文件中scope="prototype"的作用
- spring scope="prototype" 和scope="singleton"区分
- struts2.0中spring配置文件中action的属性 scope="prototype" .
- spring scope="prototype" 学习笔记
- spring scope="prototype" 和scope="singleton"区分
- spring <bean scope="prototype">探讨
- spring action scope="prototype"
- spring scope="prototype" 学习笔记
- spring bean scope="prototype" 有状态bean 无状态bean
- spring <bean scope="prototype">探讨
- Struts2+hibernate+spring 配置文件中scope="prototype"的作用
- spring scope="prototype"