 
	 博客信息
		博客信息
	web拦截器作用有权限控制,日志记录等等。SpringBoot 提供 HandlerInterceptor方便我们开发;
我们定义一个自定义拦截器 实现HandlerInterceptor接口,实现三个方法,preHandle是 请求处理之前调用,postHandle是请求处理之后并且视图渲染之前调用,afterCompletion请求结束之后并且视图渲染之后调用;
package com.java1234.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/**
 * 自定义拦截器
 * @author Administrator
 *
 */
public class MyInterceptor implements HandlerInterceptor{
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		System.out.println("========MyInterceptor preHandle 请求处理之前调用=================");
		return true;
	}
	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		System.out.println("========MyInterceptor postHandle 请求处理之后并且视图渲染之前调用=================");
	}
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		System.out.println("========MyInterceptor afterCompletion 请求结束之后并且视图渲染之后调用=================");
	}
}我们再定义一个类继承WebMvcConfigurerAdapter,重写addInterceptors,我们把自定义拦截器添加到拦截器链中去。
package com.java1234.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.java1234.interceptor.MyInterceptor;
@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter{
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**"); // 添加拦截器 以及 拦截器规则
		super.addInterceptors(registry);
	}
	
}简单搞个控制器类测试下;
package com.java1234.action;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 * 用户Controller
 * @author Administrator
 *
 */
@Controller
@RequestMapping(value = "/user")
public class UserController {
	@ResponseBody
	@RequestMapping(value = "/login")
	public String login(){
		System.out.println("login");
		return "测试拦截器";
	}
}项目配置文件配置下:
server: port: 80 context-path: /
启动项目,运行 http://localhost/user/login
执行结果如下:
========MyInterceptor preHandle 请求处理之前调用=================
login
========MyInterceptor postHandle 请求处理之后并且视图渲染之前调用=================
========MyInterceptor afterCompletion 请求结束之后并且视图渲染之后调用=================
测试代码:
链接:https://pan.baidu.com/s/1iFDk37zpoAZcR5dbancAXw 密码:xi0s
上一篇:谷歌浏览器无痕迹测试设置
下一篇:SpringCloud简介
 关注Java1234微信公众号
					关注Java1234微信公众号
				 
				 博主信息
					博主信息
				 
				 按日志类别
					按日志类别
				 按日志日期
					按日志日期
				 友情链接
					友情链接