springboot13-拦截器
springboot使用拦截器:
1、定义一个拦截器,实现HandlerInterceptor接口
2、创建一个配置类(即:在SpringMVC配置文件中使用mvc:interceptor标签)
1、创建User实体类
public class User {
private String name;
private int age;
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
2、编写请求路径
@Controller
@RequestMapping("/user")
public class UserController {
//用户登录的请求
//该请求路径不需要用户登录也可访问
@RequestMapping("/login")
public @ResponseBody Object login(HttpServletRequest request){
//将用户的信息存到session中
User user = new User();
user.setName("张三");
user.setAge(15);
request.getSession().setAttribute("user", user);
return "Loign Success";
}
//该请求需要用户登录之后才可以访问
@RequestMapping("/center")
public @ResponseBody Object center(){
return "See Centor Message";
}
//该请求不登录也可访问
@RequestMapping("/out")
public @ResponseBody Object out(){
return "Out see anytime";
}
//如果该用户未登录访问了需要登录才可以访问的亲贵,之后会跳转到该请求路径
//该请求路径不需要用户登录也可访问
@RequestMapping("/error")
public @ResponseBody Object error(){
return "error";
}
}
3、编写拦截器
public class UserInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//编写业务拦截的规则
//从session中获取用户的信息
User user = (User) request.getSession().getAttribute("user");
if(user == null){
//重定向
System.out.println("123");
response.sendRedirect(request.getContextPath() + "/user/error");
return false;
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
4、编写拦截器的配置类
@Configuration //定义此类为配置文件(即相当于之前的xml配置文件)
public class InterceptorConfig implements WebMvcConfigurer {
//mvc:interceptors
@Override
public void addInterceptors(InterceptorRegistry registry) {
//那些路径被拦截
String[] addPathPatterns = {
"/user/**"
};
//那些路径被排除---不被拦截
String[] excludePathPatterns = {
"/user/out", "/user/error", "/user/login"
};
//mvc:interceptor bean class=""
//addPathPatterns:添加被拦截路径
//excludePathPatterns:添加不被拦截的路径
registry.addInterceptor(new UserInterceptor()).addPathPatterns(addPathPatterns).excludePathPatterns(excludePathPatterns);
}
}
5、启动类启动

浙公网安备 33010602011771号