# 拦截器

拦截器使用之前需要在配置类中声明

# 自定义拦截器

自定义的拦截器需要实现HandlerInterceptor接口,并重写全部的方法

函数 作用
preHandle 进入方法前调用
postHandle 退出方法后调用
afterCompletion 视图渲染完成后调用(现在基本不用)
@Component
public class LogInterceptor implements HandleInterceptor {
	@Override
	public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler) throws Exception{

	}

	@Override
	public void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler, ModelAndView modelAndView) throws Exception{

	}

	@Override
	public void afterCompletion(HttpServletRequest request,HttpServletResponse, Object handler, Exception ex) throws Exception {

	}
}

# 配置类

需要实现WebMvcConfigurer接口,并重写addInterceptor函数

// @Configuration 配置类
@Configuration
public class WebConfig implements WebMvcConfigurer {    // WebMvcConfigurer固定类
	@Override
	public void addInterceptors(InterceptorRegistry registry){
		registry.addInterceptor(new LoginInterceptor()) // 传入的拦截器
			.addPathPatterns("/**")						// 匹配路径
			.excludePathPatterns("/login");				// 排除路径
	}
}

# 拓展知识

# HttpServletRequest

这个对象是Servlet编程中的一个重要对象和HttpServletResponse一样重要

函数 作用
String getParameter(String) 获取指定名称的参数
Map<String,String[]> getParameterMap() 获取全部参数的映射集
String[] getParameterValues(String) 获取指定名称参数的全部数据
Cookie[] getCookies() 获取Cookie
String getRequestURI() 获取资源名
String getRequestURL() 获取请求路径
String getRemoteAddr() 获取请求者的IP
String getHeader(String) 通过值,获取请求头数据
Enumeration getHeaderNames() 获取请求头的全部名字
FileInputStream getInputStream 用字节流的方式打开请求体

# HttpServletResponse

函数 作用
void setHeader(String,String) 设置响应头信息
void sendRedirect(String) 重定向