哈哈,下午在寝室,无聊。还是干点事情稳当。于是学习了下struts里面的自定义拦截器。
八嘎,原来可以这样。好,写下来。
今天我做的很简单,就是两个jsp页面(一个登陆,一个登陆后转到的页面),一个action,一个interceptor,当然还是一些配置的xml文件,如:web.xml,我就不说了撒。
首先说说登陆的那个页面吧。
login.jsp:
多的我就不说了,说多久啰嗦了,上数据。
done.jsp:
然后是我们的亲爱的action文件。
LoginAction.java:
struts.xml:
这个得先给大家看看。
目标很明确,目的很简单。就是一个表单,填入数字,提交,然后,转到done.jsp里面去,action里面什么都没有做。
上面的我还是运行成功了的。
接下来就开始我们的拦截器吧!O(∩_∩)O~~
这个拦截器里面干了些什么,文件里面的注释都已经写清楚了,我还是说下。
他继承于import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
1.打印出action里面的 time_now
2.打印出request里面的 time_now(和上面对比)
3.设置action里面的time_now
4.基本完成,下一步给其它操作来处理。
写完了?不可能我们这样就对了吧。
当然没有。
下一步:
注册拦截器:
怎么注册?
注册了怎么用喃?
这样用:
注:我另外用了两个struts自带的拦截器。
上面这两个该放在什么地方勒?
看了下面你就知道了:
哈哈,知道了撒。
接下来勒?
运行撒。
填个数据试试撒:
提交后的结果:
不是我们有一些system.out.println()?
这里:
大家看看,一个打印时有个null。为什么呢?
我们来看看这个(正宗action的生存周期):
知道打印action里面的 time_now 为什么是null了吧。
因为拦截器启动的时候,没有action操作的份,所有action里面当然是什么都没有。但是request里面是有的。
当action打印 time_now的时候,拦截器已经重新设置了action里面的time_now了。
总的流程是:提交——》拦截器拦截——》拦截器打印action的time_now——》拦截器打印request的time_now——》拦截器转到action,action打印time_now——》拦截器打印 what。
以上皆是个人实验所得出的结论,不代表完全正确。
继续修炼。。。