# 拦截器
拦截器使用之前需要在配置类中声明
# 自定义拦截器
自定义的拦截器需要实现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) | 重定向 |