这几天一直没有更新blog,主要是将tycho整个框架升了一下级。由原来的jdk1.4升级为jdk6.0,velocity1.4升级为1.5,struts1.29升级为struts2.0.5,spring1.2.9升级为spring2,还有hibernate2升级为hibernate3。从头到脚的翻新了一遍。级升过程中,最为复杂的要属struts了。复杂其实并不是说它的结构,而是兼容性。使用过struts2的朋友都应该道知,struts2其实就是webwork的下一个版本。在这个版本当中,struts自身保留下来的东西实在是少之又少。一直以来我都没有学习过webwork,这次将系统升级到struts2,着实费了不少功夫。
虽然struts2发布没多久,网上关于相关的资料已经非常多了,给大家推荐一个网友的blog,http://www.blogjava.net/max/ 有兴趣的朋友可以去看看,上面对struts2的讲解基本上比较详细了。在这里提醒各位一个小细节,在开发过程中,我们可能会自定义拦截器(interceptor),用来帮助我们完成相应的功能。其实struts2自身也提供了一些拦截器,例如我们常用的效验(validation)功能就是例用拦截器完成的。但是,当我们自定义拦截器后,发现,struts2自身的拦截器却不起作用了。这里因为我们的拦截器覆盖了struts2自身的拦截器的原因造成的。解决方法是,配置一个拦截器栈,将struts2自身的拦截器配置进去即可。如下:
|
<interceptors> <!-- 自定义拦截器 --> <interceptor name="noLogin" class="com.mxjava.tycho.servlet.interceptor.NoLoginInterceptor"/> <!-- 拦截器栈 --> <interceptor-stack name="appStack"> <interceptor-ref name="noLogin"/> <!-- struts2自身拦截器 --> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors>
<action name="login" class="LoginAction"> <!-- 配置拦截器栈 --> <interceptor-ref name="appStack"/> <result type="velocity">/vms/user/login.vm</result> <result name="login" type="redirect-action">index.htm</result> </action> |
|