零基础学springmvc05

文章介绍了SpringMVC中的拦截器机制,用于在请求处理前后添加额外操作。拦截器执行包括preHandle预处理、postHandle后处理和afterCompletion最终处理。实现拦截器可以通过继承HandlerInterceptorAdapter并重写相关方法。在配置文件中注册拦截器,并设置拦截和放行的请求路径。示例代码展示了如何实现一个登录拦截器,检查session中的用户信息,未登录时重定向到登录页面。
摘要由CSDN通过智能技术生成
拦截器
  1. 原理

     

  2. springmvc的拦截器

针对请求和响应进行额外的处理,在请求和响应的过程中添加预处理,后处理和最终的处理

  1. 拦截器的执行时间

    1. preHandle():在请求被处理之前进行操作,预处理

    2. postHandle():在请求被处理之后,但是结果还没有渲染前进行操作,可以改变响应结果,后处理

    3. afterCompletion:所有的响应结束后执行善后工作,清理对象,关闭资源,最终处理

    4. 拦截器实现的两种方式

      1. 继承HandlerInterceptorAdater的父类

      2. 实现HandlerInterceptor接口,推荐方式

    5. 拦截器实现步骤

      1. 改造登录方法,在session中存储用户信息,用于进行权限验证

      2. 开发拦截器的功能,实现接口,重写preHandle方法

      3. 在springmvc.xml文件中注册拦截器

配置拦截器依赖

 <!--    注册拦截器-->
     <mvc:interceptors>
         <mvc:interceptor>
 <!--            设置拦截请求(所有)-->
             <mvc:mapping path="/**"/>
 <!--            设置放行请求-->
             <mvc:exclude-mapping path="/showLogin"/>
             <mvc:exclude-mapping path="/login"/>
 <!--            配置拦截器实现功能类-->
             <bean class="com.lgy.interceptor.LoginInterceptor"></bean>
         </mvc:interceptor>
     </mvc:interceptors>

拦截器功能实现类

 package com.lgy.interceptor;
 ​
 import org.springframework.web.servlet.HandlerAdapter;
 import org.springframework.web.servlet.HandlerInterceptor;
 ​
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 ​
 public class LoginInterceptor implements HandlerInterceptor {
     @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response, Object handler) throws Exception {
 ​
         if(request.getSession().getAttribute("user")==null){
             request.setAttribute("msg","你还没登录,请先登录");
             request.getRequestDispatcher("WEB-INF/jsp/login.jsp").forward(request,response);
             return false;
         }
         return true;
     }
 }
 ​
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值