SpringMVC拦截器配置与执行步骤详解是怎样的?

2026-05-26 05:161阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计842个文字,预计阅读时间需要4分钟。

SpringMVC拦截器配置与执行步骤详解是怎样的?

1. 区别过滤器与拦截器: - 过滤器(Filter)主要用于对请求和响应进行预处理,如字符编码转换、请求头设置等。 - 拦截器(Interceptor)则可以在请求处理之前、请求处理之后或异常处理中进行操作,适用于更细粒度的控制。

2. SpringMVC中拦截器的必要实现方法: - `preHandle()`:在请求处理之前执行,返回true表示继续执行,返回false表示中断执行。 - `postHandle()`:在请求处理之后执行,在视图渲染之前。 - `afterCompletion()`:在请求完成后执行,如清理资源等。

3. 拦截器类编写示例: java package com.imooc.core;

import com.imooc.bean.User; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;

SpringMVC拦截器配置与执行步骤详解是怎样的?

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

public class UserInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 获取用户信息 User user=(User) request.getSession().getAttribute(user); if (user==null) { response.sendRedirect(/login); return false; } return true; }

@Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 请求处理之后进行调用,但在视图被渲染之前 }

@Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 在整个请求结束之后调用,也就是在DispatcherServlet渲染了对应的视图之后执行 } }

1.与过滤器filter的区别

2.springMVC中拦截器的必须实现的三个方法:

3. 拦截器类的编写:

package com.imooc.core; import com.imooc.bean.User; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginInterceptor implements HandlerInterceptor { //在业务处理器被调用前的方法,若是返回false则不会继续进入业务处理器 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { User user = (User)request.getSession().getAttribute("session_user"); if(user==null) { response.sendRedirect(request.getContextPath()+"/login"); return false;//会终止所有的请求 } return true; } //在业务处理器被调用后,dispatcher响应客户端前的方法,一般用于生成日志文件时调用 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } //dispatcher响应客户端后的方法,一般用于资源的清理 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }

4.在spring的配置文件中注册拦截器:

<!-- 拦截器的注册 --> <mvc:interceptors> <mvc:interceptor> <!--**表示往后的所有子目录也包括进来--> <mvc:mapping path="/user/**"></mvc:mapping> <!--exclude-mapping在所有拦截中进行排除,一般在通配符会有意义。--> <!--即以下的方法不会被拦截--> <mvc:exclude-mapping path="/user/updatepwd"></mvc:exclude-mapping> <mvc:exclude-mapping path="/user/updatebackground/*"></mvc:exclude-mapping> <!--填写之前配置好的拦截器--> <bean class="com.imooc.core.LoginInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>

注意:要是有多个拦截器执行顺序以spring的配置文件中的注册拦截器顺序执行:

<!-- 拦截器的注册 --> <mvc:interceptors> <!--先注册先执行--> <mvc:interceptor> <mvc:mapping path="/user/**"/> <bean class="com.imooc.core.LogInterceptor"></bean> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="/user/**"></mvc:mapping> <!--exclude-mapping在所有拦截中进行排除,一般在通配符会有意义。--> <mvc:exclude-mapping path="/user/updatepwd"></mvc:exclude-mapping> <mvc:exclude-mapping path="/user/updatebackground/*"></mvc:exclude-mapping> <bean class="com.imooc.core.LoginInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>

其次拦截器里的方法顺序:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

本文共计842个文字,预计阅读时间需要4分钟。

SpringMVC拦截器配置与执行步骤详解是怎样的?

1. 区别过滤器与拦截器: - 过滤器(Filter)主要用于对请求和响应进行预处理,如字符编码转换、请求头设置等。 - 拦截器(Interceptor)则可以在请求处理之前、请求处理之后或异常处理中进行操作,适用于更细粒度的控制。

2. SpringMVC中拦截器的必要实现方法: - `preHandle()`:在请求处理之前执行,返回true表示继续执行,返回false表示中断执行。 - `postHandle()`:在请求处理之后执行,在视图渲染之前。 - `afterCompletion()`:在请求完成后执行,如清理资源等。

3. 拦截器类编写示例: java package com.imooc.core;

import com.imooc.bean.User; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;

SpringMVC拦截器配置与执行步骤详解是怎样的?

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

public class UserInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 获取用户信息 User user=(User) request.getSession().getAttribute(user); if (user==null) { response.sendRedirect(/login); return false; } return true; }

@Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 请求处理之后进行调用,但在视图被渲染之前 }

@Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 在整个请求结束之后调用,也就是在DispatcherServlet渲染了对应的视图之后执行 } }

1.与过滤器filter的区别

2.springMVC中拦截器的必须实现的三个方法:

3. 拦截器类的编写:

package com.imooc.core; import com.imooc.bean.User; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginInterceptor implements HandlerInterceptor { //在业务处理器被调用前的方法,若是返回false则不会继续进入业务处理器 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { User user = (User)request.getSession().getAttribute("session_user"); if(user==null) { response.sendRedirect(request.getContextPath()+"/login"); return false;//会终止所有的请求 } return true; } //在业务处理器被调用后,dispatcher响应客户端前的方法,一般用于生成日志文件时调用 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } //dispatcher响应客户端后的方法,一般用于资源的清理 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }

4.在spring的配置文件中注册拦截器:

<!-- 拦截器的注册 --> <mvc:interceptors> <mvc:interceptor> <!--**表示往后的所有子目录也包括进来--> <mvc:mapping path="/user/**"></mvc:mapping> <!--exclude-mapping在所有拦截中进行排除,一般在通配符会有意义。--> <!--即以下的方法不会被拦截--> <mvc:exclude-mapping path="/user/updatepwd"></mvc:exclude-mapping> <mvc:exclude-mapping path="/user/updatebackground/*"></mvc:exclude-mapping> <!--填写之前配置好的拦截器--> <bean class="com.imooc.core.LoginInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>

注意:要是有多个拦截器执行顺序以spring的配置文件中的注册拦截器顺序执行:

<!-- 拦截器的注册 --> <mvc:interceptors> <!--先注册先执行--> <mvc:interceptor> <mvc:mapping path="/user/**"/> <bean class="com.imooc.core.LogInterceptor"></bean> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="/user/**"></mvc:mapping> <!--exclude-mapping在所有拦截中进行排除,一般在通配符会有意义。--> <mvc:exclude-mapping path="/user/updatepwd"></mvc:exclude-mapping> <mvc:exclude-mapping path="/user/updatebackground/*"></mvc:exclude-mapping> <bean class="com.imooc.core.LoginInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>

其次拦截器里的方法顺序:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。