在SpringBoot中如何配置基础拦截器

2024-11-13 01:46:22

1、所有的开发之中拦截器一定是一个必须要使用的功能,利用拦截器可以更加有效的实现数据的验证处理,而且最为幸运的是在SpringBoot之中所使用的拦截器与Spring中的拦截器完全一样。

2、基础拦截器操作拦截器是一种AOP操作实现,那么在AOP之中用户一定不需要去关注拦截器的存在,用户只需要按照自己已经习惯的处理方式进行代码的编写即可。创建一个程序的控制器类:package com.gwolf.controller;import com.gwolf.util.controller.AbstractBaseController;import com.gwolf.vo.Member;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;@Controllerpublic class MemberController extends AbstractBaseController{ @RequestMapping(value="/member_add_pre", method = RequestMethod.GET) public String memberAddPre() { return "member_add"; } @RequestMapping(value="/member_add", method = RequestMethod.POST) @ResponseBody public Object memberAdd(Member member) { return member; }}

在SpringBoot中如何配置基础拦截器

3、定义一个member_add.html的页面实现表单定义:<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"> <head> <title>SpringBoot模板渲染</title> <link rel="icon" type="image/x-icon" href="/images/baidu.ico" /> <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> </head><body> <form th:action="@{/member_add}" method="post"> 用户编号:<input type="text" name="mid" value="101"> 用户姓名:<input type="text" name="name" value="SMITH"> <input type="submit" value="表单提交"> </form></body></html>

在SpringBoot中如何配置基础拦截器

4、此时一个正常的MVC的代码就实现完成了,随后需要编写一个拦截器对其进行控制。为了更好的说明问题,现在将拦截器定义在外包中:package com.gwolf.util;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.method.HandlerMethod;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class MyInterceptor implements HandlerInterceptor{ private Logger log = LoggerFactory.getLogger(MyInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HandlerMethod handlerMethod = (HandlerMethod)handler; this.log.info("[****MyInterceptor.preHandle****" + handlerMethod.getBean().getClass().getSimpleName()); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { HandlerMethod handlerMethod = (HandlerMethod)handler; this.log.info("[****MyInterceptor.postHandle****" + handlerMethod.getBean().getClass().getSimpleName()); this.log.info("[****MyInterceptor.postHandle****" + modelAndView); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { HandlerMethod handlerMethod = (HandlerMethod)handler; this.log.info("[****MyInterceptor.afterCompletion****拦截结束" ); }}

在SpringBoot中如何配置基础拦截器

5、那么此时如果要想使用拦截器则必须有一个拦截器的配置类。现在不再编写配置文件了,所有的配置直接利用一个类完成。package com.gwolf.config;import com.gwolf.util.MyInterceptor;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;//定义mvc配置@Configurationpublic class MyWebApplicationConfig extends WebMvcConfigurerAdapter{ @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**"); super.addInterceptors(registry); }}

在SpringBoot中如何配置基础拦截器

6、在浏览器中访问地址:http://localhost:8080/get

在SpringBoot中如何配置基础拦截器

7、现在只要找到了可以操作的控制器程序类,那么就可以依照在Spring中讲解的拦截器代码那么进行各种验证规则的编写以及相应的错误输出了。

猜你喜欢