<!--过滤、监听、拦截-->java
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
package com.spring.boot.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.config.annotation.InterceptorRegistration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { InterceptorRegistration interceptorRegistration = registry.addInterceptor(new MyInterceptor()); /*同一异常和无界面*/ interceptorRegistration.excludePathPatterns("/error"); interceptorRegistration.excludePathPatterns("/login"); // interceptorRegistration.excludePathPatterns("/**"); // interceptorRegistration.excludePathPatterns("/index"); interceptorRegistration.addPathPatterns("/**");
} @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { //须要配置1:须要告知系统,这是要被当成静态文件的! //第一个方法设置访问路径前缀,第二个方法设置资源路径 registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); } private class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException { System.out.println("在控制器执行前调用 "); Object admin = request.getSession().getAttribute("admin"); if (admin == null) { System.out.println("当前用户未登陆!"); response.sendRedirect( "/login"); return false; } System.out.println("当前用户已登陆,登陆的用户名为: " + admin); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { //controller方法处理完毕后,调用此方法 System.out.println("在后端控制器执行后调用 "); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { //页面渲染完毕后调用此方法 System.out.println("整个请求执行完成后调用 "); } }
}web
@RequestMapping(value = "/login")spring
public String admin(){ return "login"; }
注:本身稍微梳理一下后端