springboot拦截页面
时间: 2023-10-14 20:18:16 浏览: 82
springboot aspect通过 annotation进行拦截.docx
在Spring Boot中,可以使用拦截器(Interceptor)来拦截页面请求。拦截器可以拦截所有的请求,也可以只拦截符合特定条件的请求。
以下是拦截器的基本用法:
1.创建一个拦截器类,实现HandlerInterceptor接口,并实现其中的preHandle、postHandle和afterCompletion方法。
例如:
```
@Component
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// 在请求处理之前进行调用(Controller方法调用之前)
// 返回true才会继续执行,返回false则取消当前请求
HttpSession session = request.getSession();
if (session.getAttribute("user") == null) {
// 未登录,重定向到登录页
response.sendRedirect("/login");
return false;
}
// 已登录,继续处理请求
return true;
}
// 在请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
}
// 在整个请求处理完之后进行调用,视图渲染完毕后执行(主要用于资源清理工作)
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
}
}
```
2.创建一个配置类,将拦截器加入到拦截器链中。
例如:
```
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Autowired
private LoginInterceptor loginInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 添加拦截器
registry.addInterceptor(loginInterceptor)
.addPathPatterns("/**") // 拦截所有请求
.excludePathPatterns("/login", "/register"); // 排除登录、注册请求
}
}
```
在上面的代码中,我们将拦截器加入到了拦截器链中,并指定了需要拦截的请求路径,以及需要排除的请求路径。
这样,当用户请求被拦截时,会自动跳转到登录页面。
阅读全文