可以无视的声明:对于博文中出现的错别字,以及语义不对给大家造成的困扰向大家致歉,同时也希望朋友给予包容和谅解。鄙人现在真的忙的快要疯了,早晨一起床就是赶快发博文,然后就是维护自己网站。上午基本就这几样就没了,下午就是写软文,找友链。晚上就是给大家写博文了。有时碰到有课,都得一样一样往后推,但我不想推掉每日一篇的博文。所以博文出现的个别可以忽视的错误,大家就别计较了。当然我并不是说大家就不用联系我了,关于学习交流的问题,还是希望大家积极交流的。So 奋斗吧,骚年!!!
一、学习案例:通过在LoginAction中比较通过ServletActionContext获取的session和通过ActionContext获取的session,分析两个session的区别。
二、案例分析:通过使用ServletActionContext获取的session设置,在页面能够得到,说明这样是获取的货真价实的HttpSession(服务器对象),而通过ActionContext获取的session是个Map集合,通过之前设置的key我们也能获取其对应的值,说明他两个是维护的同一个对象,其实也就是前者底层的Map对象。而为什么通过ActionContext获取的是Map对象呢?其实这是struts2为了简化我们的单元测试。
a)服务器端代码的单元测试有两种模式
1、容器内测试(Jetty),本质必须有服务器。好像asp.net就是用的Jetty。
2、Mock测试(继承HttpServletRequest、HttpSession、HttpServletResponse等Servlet API)如:JMock,easyMock。
b)关于单元测试,不多讲,如果有朋友想了解的可以自己去问度娘。不过我要说的是,我们一般写程序有jUnit就够了。其实即使jUnit我也没怎么用过,只是在刚开始学习时用过,后来就不怎么用了,因为一般我们能熟练运用debug调试就OK了。
c)struts2为我们提供了一个Preparable接口。
其作用是让Action完成一些初始化工作,初始化工作是放在其实现方法prepare()中的,通过输出测试,我们可以发现prepare()是在execute()之前执行的,其作用和jUnit的init()功能一样,都是起到初始化准备工作。
三、经验之谈:
a)单元测试,我用的不多也不好随便讲,所以有兴趣的朋友,可以自行查阅。
b)在此,我想强调的是debug调试。写程序如果连debug都不会,都会让人笑掉大牙。至于,debug大家在网上扒下资料一看就懂,主要是多练多用。Debug一方面能够帮助我们快速解决问题,另一方面就是有助于我们理解代码执行逻辑。所以初学者遇到问题,先debug下,再解决不了,再去网上查资料,同时初学者千万不要养成什么都依赖度娘的习惯,就如之前的我一样,有问题就问度娘,直接形成了依赖,自己思考都懒得思考,这样最直接的后果就是你会成为一枚实实在在的码农,互联网的搬运工。所以大家遇到问题,先自行思考,实在不行再去问度娘。
四、参考项目:http://download.csdn.net/detail/u011638419/8188623
五、每日一乐:
陌陌有个女的问我在哪上班。我说在国企。
她又问一个月工资多少。我说一万。
然后就各种跟我套近乎。
当我告诉她我一个月工资一万一年就上俩月班的时候她在也没和我说过话。
最终解释权归爱尚合伙人所有,转载请注明出处。