SpringBoot学习,主要内容是拦截器,可以实现网站的登录功能

拦截器注册:

1.实现登录拦截
首先需要编写相应模块的类实现HandlerInterceptor,然后再拦截配置类里面编辑要拦截胡页面。
1.1 编写类实现HandlerInterceptor类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public class UserInterceptor implements HandlerInterceptor{ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { User user = (User) request.getSession().getAttribute("user");
if (null == user) { response.sendRedirect(request.getContextPath() + "/nologin"); 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 {
} }
|
实现HanderInterceptor,重写preHandle、postHandle、afterCompletion三个方法,先获取session的用户信息,然后判断是否登录。
1.2 声明拦截配置类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| @Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Override public void addInterceptors(InterceptorRegistry registry) {
String[] addPathPatterns = { "/user/**" };
String[] excludePathPatterns = { "/user/out","/user/error","/user/login" };
registry.addInterceptor(new UserInterceptor()).addPathPatterns(addPathPatterns).excludePathPatterns(excludePathPatterns); } }
|
需要实现WebMvcConfigurer,重写addInterceptors方法,在里面配置需要拦截的请求和排除的请求。
1.3 编写Controller类进行验证
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| @Controller @RequestMapping(value = "/user") public class UserController {
@RequestMapping(value = "/login") public @ResponseBody Object login(HttpServletRequest request, HttpServletResponse response){ User user = new User(); user.setId(1001); user.setUsername("zhangsan"); request.getSession().setAttribute("user",user);
return "login SUCCESS"; }
@RequestMapping(value = "/center") public @ResponseBody Object center(){ return "See Center Message"; }
@RequestMapping(value = "/out") public @ResponseBody Object out(){ return "See Out Message"; }
@RequestMapping(value = "/error") public @ResponseBody Object error(){ return "error"; } }
|
2.在SpringBoot框架下使用Servlet