对spring boot拦截器部署进行一些简单介绍
1. 引入所需的jar
2.创建 SessionInterceptor和 WebmvcConfig
3.配置SessionInterceptor,主要内容是设置需要拦截的端口和不需要拦截的端口。注意,spring boot下拦截器默认拦截resources下的静态文件。和spring的稍有不同。代码如下:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class SessionInterceptor extends WebMvcConfigurerAdapter{
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getWebmvcConfig()).addPathPatterns("/User/*").excludePathPatterns("/Userlogin","/js/**","/image/**","/config");
super.addInterceptors(registry);
}
@Bean
/**
* 实现拦截器类
* @return
*/
public WebmvcConfig getWebmvcConfig() {
return new WebmvcConfig();
}
}
4.配置WebmvcConfig
主要分为3次拦截接口。其中,3个接口的特性如下:
preHandler:在Controller执行之前调用。
postHandler:controller执行之后,在端口调用执行完后,且页面渲染之前调用。
afterCompletion:页面渲染之后调用,一般用于资源清理操作
自己可以根据接口的特性来完不同的需求,页面简要代码如下:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import java.io.IOException;
public class WebmvcConfig implements HandlerInterceptor{
//请求前验证
public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object haObject) throws Exception {
boolean f=true;
System.out.println("prehandle 被调用");
HttpSession session = request.getSession(true);
if( session.getAttribute("user")!=null) {
System.out.println("已登陆");
}else {
System.out.println("未登陆");
f=false;
request.getRequestDispatcher("../loginindex").forward(request,response); //转发
}
return f;
}
//执行后,错误返回
public void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView modelAndView) throws IOException {
System.out.println("postHandle 被调用");
// HttpSession session = request.getSession(true);
// response.sendRedirect("../loginindex");
// modelAndView.setViewName("redirect:/loginindex");
}
public void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler,Exception ex) {
System.out.println("afterCompletion被调用");
}
}
拦截器到此就配置完成。