java_springMVC_拦截器

第一步:写拦截器类

创建一个类:LoginInterceptor,派生自HandlerInterceptor

当用户登录后我们会写sesion,拦截请求,如果此时session中找不到此用户,则跳转到登录页面。

public class LoginInterceptor implements HandlerInterceptor{

@Override

public boolean preHandle(HttpServletRequest request,

HttpServletResponse response, Object handler) throws Exception {

System.out.println("preHandle");

User user = (User)request.getSession().getAttribute("user");

if (user != null){

return true;

}else{

System.out.println(request.getContextPath());

response.sendRedirect(request.getContextPath()+"/login");

}

return false;

}

 

@Override

public void postHandle(HttpServletRequest request,

HttpServletResponse response, Object handler,

ModelAndView modelAndView) throws Exception {

System.out.println("postHandle");

}

 

@Override

public void afterCompletion(HttpServletRequest request,

HttpServletResponse response, Object handler, Exception ex)

throws Exception {

System.out.println("afterCompletion");

}

}

注:当请求过来时,首先进入preHandle方法拦截,在里面进行判断,之后可以选择进行页面跳转或者不跳转。

return false;表示当前请求被拦截,不会再触发controller了,因此不会显示原页面。

Return true;表示此次拦截通过,最后会进入到afterCompletion方法。

 

login目录下创建一个login.jsp,将在controller中增加loginjsp的代码。

@Controller

public class indexController {

@RequestMapping(value = "/login")

public String login(HttpServletRequest request, HttpServletResponse response) {

return "login/login";

}

}

 

第二步:配置

springMVC-servlet.xml配置内容如下:

<!-- 配置拦截器 -->

<mvc:interceptors>

<mvc:interceptor>

<mvc:mapping path="/**"/>

<mvc:exclude-mapping path="/login"/>

<bean class="com.gary.util.LoginInterceptor"></bean>

</mvc:interceptor>

</mvc:interceptors>

其中/**表示所有请求都会被拦截,也可以配置某一类被拦截,如/user/**,而路径中有user的走此拦截器。

如果是多个拦截器,则在这里写多个<mvc:interceptor>,配置不同的路径进入不同的拦截器类,并按在此的前后顺序依此进入拦截器。

 

测试:

在页面中输入http://localhost:8080/firstSpringMVC/user/addUser

结果不是弹出添加用户界面,而是弹出登录页面。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值