1、如何实现登录权限检查
使用session进行约定值的检查
实现方法:
(1)使用Filter
(2)使用Spring的拦截器
拦截器组件简介:Spring MVC特有组件,可以在调用Controller之前拦截,也可以在调用Controller之后拦截,还可以在JSP解析完毕向浏览器输出之前拦截。
先创建一个拦截器:
public class LoginInteceptor implements HandlerInterceptor{//请求处理完毕,输出之前 @Overridepublic void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {System.out.println("afterCompletion");}//进入Controller之后 @Overridepublic void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)throws Exception {System.out.println("postHandle");}//进入Controller之前 @Overridepublic boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {System.out.println("preHandle");//false代表请求被拦截截断,不会传递到Controller,true代表请求将继续传递至Controllerreturn true;}}
拦截器配置:
(1)只想拦截某一个请求:
<!-- 配置拦截器 --> <mvc:interceptors><mvc:interceptor><mvc:mapping path="/hello.do"/><bean class="com.zlc.inteceptor.LoginInterceptor"></bean></mvc:interceptor></mvc:interceptors>
(2)要拦截多个特定请求:
<!-- 配置拦截器 --> <mvc:interceptors><mvc:interceptor><mvc:mapping path="/hello.do"/><mvc:mapping path="/success.do"/><bean class="com.zlc.inteceptor.LoginInterceptor"></bean></mvc:interceptor></mvc:interceptors>
(3)或者使用通配符,拦截某些请求,还可以使用<mvc:exclude-mapping path=""/>,排除某些请求的拦截
<mvc:interceptors><mvc:interceptor><mvc:mapping path="/*"/><!-- 该请求不要拦截 --><mvc:exclude-mapping path="/hello.do"/><bean class="com.zlc.inteceptor.LoginInterceptor"></bean></mvc:interceptor></mvc:interceptors>