由于之前碰到需要拦截器的部分,我加以总结,以下就是在实战项目中的springmvc拦截器配置,做一个小例子,以便大家方便使用。
Spring 拦截器配置 Sprigmvc部分进行配置
<!-- 配置资源文件,防止被拦截 -->
<mvc:resources location="/WebRoot/images/" mapping="/images/**"/>
<mvc:resources location="/WebRoot/js/" mapping="/js/**"/>
<mvc:resources location="/WebRoot/css/" mapping="/css/**"/>
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截所有的url包括子url路径-->
<mvc:mapping path="/**"/>
<bean class="com.xyx.ssm.interceptot.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name="prefix" value="/admin/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
//拦截器手动写代码
package com.xyx.ssm.interceptot;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.xyx.ssm.po.User;
public class MyInterceptor implements HandlerInterceptor {
//执行 Handler 完成之后执行。应用场景:统一异常处理,统一日志处理等
@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
System.out.println("HandlerInterceptor1....afterCompletion");
}
//进入 Handler 方法之后,返回 ModelAndView 之前执行。可以
//看到该方法中有个 modelAndView 的形参。应用场景:从 modelAndView 出发:
//将公用的模型数据(比如菜单导航之类的)在这里传到视图,也可以在这里同一指定视图
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
System.out.println("HandlerInterceptor1....postHandle");
}
//进入 Handler 方法之前执行。可以用于身份认证、身份授权。
//比如如果认证没有通过表示用户没有登陆,需要此方法拦截不再往下执行(return
//false),否则就放行(return true)
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object arg2) throws Exception {
System.out.println("HandlerInterceptor1....preHandle");
User user = (User) request.getSession().getAttribute("user");
if(user != null){
return true;
}
//执行到这里表示用户身份需要验证,跳转到登陆页面
request.getRequestDispatcher("admin/login.jsp").forward(request, response);
return false;
}
}