Struts2 Action 单例多例模式
来源:互联网 发布:房产经纪人签单软件 编辑:程序博客网 时间:2024/06/05 17:32
很多时候我们学习框架,只知道怎么用,不知道起原理是什么。这样其实是很危险的一件事情,因为一出问题不知道为什么,折腾了好几天可能误打乱撞,折腾正确了,但是因为时间紧迫,赶项目,完全不去挖掘去原理,没有融会贯通,以后还是会遇到问题,又这样折腾,然后又解决了,这样导致知识点成孤岛,完全没有把他们联系起来。
框架能够带给我们的是开发效率,让开发者对很多东西透明的,由于没有时间加之没有这个环境,或者因为个人原因,没有几个人能够真正学习了解框架的原理。好比J2EE开发著名三大框架SSH,会用的一大把,依葫芦画瓢,但是真正懂掌握的凤毛麟角。这是我一年的深痛领悟。今后的时间将会更加专注本质专注原理。
昨天遇到struts2的问题,不知为何,后来网上查阅了大量资料,动手验证。明白了Struts2 Action 单例多例模式。这里说明一下,如果不用spring注解的话,struts2默认是多例的。出现单例跟多例是因为用了spring注解。
@Controller("admin")public class ccAction {private KhzjBean khzjBean;public void setKhzjBean(KhzjBean khzjBean) {this.khzjBean = khzjBean;}public KhzjBean getKhzjBean() {return khzjBean;}public void test1(){khzjBean.setAddress("aaa");khzjBean.setId(1);}public void test2(){System.out.println(khzjBean.getAddress());System.out.println(khzjBean.getId());System.out.println(khzjBean.getName());}}main.jsp采用这样的方式去访问
<body> <a href="cc_test1.action?khzjBean.name=yyc">测试一</a><a href="cc_test2.action">测试二</a></body>当点击了测试一,再去点击测试二,后台输出的aa 1 yyc,然后我换了一个浏览器再去访问
<a href="cc_test2.action">测试二</a>
后台还是输出aa 1 yyc。其它不变在@Controller("admin")后面加一个@Scope("prototype")。在同样的操作,点击测试一之后在点击测试二,报空指针异常!!
为什么会报空指针异常,因为用spring注解action的话,没有写Scope,默认是@Scope("singleton"),也就是默认是单例的。从此例子看,单例就是spring只new一个action,不管是张三访问还是李四访问,还是张三在不同时间访问,或者在不同浏览器访问,调用的都是同一个action。这个是有点危险的事,慎用!多例的意思是,张三访问,第一次进去的action和第二次进去的action是不一样的,spring自动装配一个新的action。所以上面的访问test2的时候,拿不到数据,报空指针。
- Struts2 Action 单例多例模式
- Struts2 Action
- struts2 action
- Struts2---->action
- struts2------------action
- Struts2 Action
- Struts2 Action
- struts2-action
- Struts2-Action
- Struts2 Action
- struts2 action
- Struts2---Action
- Struts2-Action
- Struts2-Action
- Struts2-Action
- struts2 action
- Struts2-Action
- struts2--Action
- 一次学习成绩的考差,并不能否定每次都考不好
- web应用的数据传输格式
- android 蓝牙各种UUID
- jQuery学习笔记之Ajax在jQuery中的应用
- POJ1976(01背包)t
- Struts2 Action 单例多例模式
- Delphi WebBrowser 无法调用当前浏览器的版本
- 一个男人写给媳妇的搞笑检讨书
- CORBA的简单介绍及HelloWorld
- 最长公共子序列
- nysql 5个子句的使用顺序
- 二分法查找数据
- 【Cocosd2d-x CCMenu菜单之二】
- 相对路径