一、学习案例:通过在loginUI.jsp页面填写表单提交成功跳转到结果页面,查看控制台输出,初步了解拦截器工作流程。
二、案例分析:
a)创建拦截器(MyInterceptor.java)实现Interceptor接口。
创建成功后,会实现三个方法:init(),destroy(),intercept()。
我们主要是使用intercept()方法,在此实现功能。
init()会在服务器启动struts.xml加载时进行自动调用。
destroy()会在服务器重启时调用。
b)在struts.xml定义之前创建的拦截器
拦截器定义是在package下定义的,而不是action中。
c)在action中引用拦截器
只需填写定义拦截器的名称即可调用,但是在自己的拦截器之后要紧接着调用defaultStack。
d)在struts.xml中定义拦截器时,我们传递了参数,而在拦截器中我们只需定义一个成员变量,并且添加setXXX()方法即可。Struts2会帮我们自动设值。
三、经验之谈:
a)对于一些概念性的东西,大家最好明白流程和原理,这样有助于记忆。同时,对于初学者来讲不管是java也好,还是其他语言,千万别死记硬背,这种学习方式是大学之前为了应付考试而出现的。学习语言这些东西,理解就是最好的学习方式。
b)拦截器这一块可以将很重要。但重要是相对struts2讲的。Struts2的很多功能的实现都是依靠拦截器完成的。相对我们开发人员来讲,理解和会使用就OK了,实际使用的情况并不多。在我的“爱尚合伙人”中就只在权限模块中使用了。所以关于拦截器这块我主要会带大家查看源码,毕竟是struts2核心的东西,源码这种好东西是必须要看的。
c)关于考虑问题的方式跟大家讲下。当你学某种东西时,比如学习struts2,那我们考虑问题,就应该用struts2的方式去考虑问题,例如,struts2中action中为成员变量赋值是通过setXXX()方法,那么在我们配置拦截器参数,在拦截器中获取时,我们首先就应该想到通过setXXX()方法获取,而不是像过滤器中通过getInitParam()获取。当然这种方式是建立在对工具的了解,以及对工具实现原理了解的基础上的,所以看源码真的很重要哦。
四、参考项目:http://download.csdn.net/detail/u011638419/8198713
五、每日一乐:
我的女友是个吃货。
有一次她吃得很饱肚子很圆,摸着肚子说:“与其让男人把肚子搞大,还不如自己把肚子搞大。”
最终解释权归爱尚合伙人所有,转载请注明出处。
原文地址:http://blog.csdn.net/u011638419/article/details/41510483