<!--過濾、監聽、攔截-->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"; }
注:本身稍微梳理一下後端