SpringBoot 基础拦截器

所有的开发之中拦截器一定是一个必须要使用的功能,利用拦截器可以更加有效的实现数据的验证处理

在SpringBoot之中所使用的拦截器与Spring中的拦截器完全一样.

2.1、基础拦截器操作

拦截器是一种AOP操作实现,那么在AOP之中用户一定不需要去关注拦截器的存在,用户只需要按照自己习惯的方式

进行代码的编写即可。

1、创建一个程序的控制器类:

package com.microboot.controller;

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;

import com.microboot.util.controller.AbstractBaseController;
import com.microboot.vo.Member;

@Controller
public class MemberController extends AbstractBaseController{
	
	@RequestMapping(value = "/member_add_pre", method = RequestMethod.GET)
	public String memberAddPre(Model model) {
		return "member_add";
	}
	
	@RequestMapping(value = "/member_add", method = RequestMethod.POST)
	@ResponseBody
	public Object memberAdd(Member member) {
		return member;
	}
	
}
2、定义一个member_add.html的页面实现表单定义:

member_add.html




	SpringBoot模板渲染
	
	


	
用户编号:
用户姓名:
3、此时一个正常的MVC的代码就实现完成了,随后就需要编写一个拦截器对其进行控制.

为了更好的说明问题,现在将拦截器定义

package com.microboot.util;

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

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;

public class MyInterceptor implements HandlerInterceptor {
	
	private Logger log = LoggerFactory.getLogger(MyInterceptor.class);
	
	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, 
Object handler) throws Exception {
		HandlerMethod handlerMethod = (HandlerMethod)handler;
		this.log.info("【*** MyInterceptor.preHandle ***】" 
+ handlerMethod.getBean().getClass().getSimpleName());
		// 如果返回false表示不继续请求,如果返回true表示继续请求
		return true;
	}


	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, 
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 arg0, HttpServletResponse arg1, 
Object handler, Exception arg3)
			throws Exception {
		HandlerMethod handlerMethod = (HandlerMethod)handler;
		this.log.info("【*** MyInterceptor.afterCompletion ***】拦截处理完毕");
	}

}
4、那么此时如果要想使用拦截器则必须有一个拦截器的配置类。现在我们已经不再编写配置文件了,所有的配置

都使用一个类完成。

package com.microboot.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.microboot.util.MyInterceptor;

@Configuration
// 定义MVC的配置
public class MyWebApplicationConfig extends WebMvcConfigurerAdapter {

	@Override
	// 进行拦截器的注册处理操作
	public void addInterceptors(InterceptorRegistry registry) {
		// 匹配路径
		registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
		super.addInterceptors(registry);
	}
}

 

你可能感兴趣的:(SpringBoot 基础拦截器)