一直以来,博客都是在写一些读书笔记或者学习心得。俗话说,举一反三,是时候沉淀一下了。索性这把这篇文章作为开端吧!
笔者知道,这篇文章的题目一定让某些developer不爽,尤其是学习过J2EE基础的人。学习过J2EE基础的童鞋,一定有自己写listener,filter和servlet的经验。经验多一些是好事,但不要陶醉于自己的经验,作为developer,我们还是要进步滴,尤其是在使用Spring之后。
在Spring中,用拦截器代替了原来的listener和filter,而且的确,Spring中的这个拦截器机制也的确是不负众望。下面笔者就举个例子,如何利用Spring中的拦截器机制写出松耦合,可插拔的代码。
多说一句,笔者非常喜欢软件模块“可插拔”的设计。
在大多数的软件架构中,都会有类似登录检查的机制。这个时候,我们就可以写一个拦截器,比如叫LoginInterceptor,让这个类集成自Spring框架的HandlerInterceptor类。
代码如下:
关于HandlerInterceptor的用法,参见SpringMVC官网地址:点击打开链接
public class LoginInterceptor extends HandlerInterceptorAdapter {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if 验证不通过
return false;
return true;
}
}
<bean id="loginInterceptor" class="LoginInterceptor"/>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<ref bean="loginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
瞧,一个身份验证功能写好了。而且,该功能处于系统的最前端,像一层盔甲保护你的系统,无法登陆的用户压根到不了你的web层。那么问题来了,有一天,你的老板和你说:系统要完全公开,希望任何人可以访问;或者是验