先说说springboot拦截器的创建吧。
- 写一个用于拦截的类,让这个类去实现HandlerInterceptor。比如:
@Component public class LoginInterceptor implements HandlerInterceptor{ @Autowired private UserService userService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { StringBuffer uri = request.getRequestURL(); System.out.println(uri); try { HttpSession session = request.getSession(); System.out.println("session : " + session.getAttribute("user")); if (session.getAttribute("user") == null) { response.sendRedirect(request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath() + "/user/login"); //未登录自动跳转界面 return false; } return true; } catch (Exception e) { e.printStackTrace(); return false; } } @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 { } }
-
写一个添加拦截的类,继承一个WebMvcConfigurerAdapter的类。比如:
@EnableWebMvc
@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter{
@Bean
LoginInterceptor localInterceptor() {
return new LoginInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localInterceptor())
.excludePathPatterns("/user/Login")//不拦截的url
.excludePathPatterns("/user/register")
.excludePathPatterns("/user/adduser")
.excludePathPatterns("/user/login")
.addPathPatterns("/**/**")//拦截的url
;
super.addInterceptors(registry);
}
}
由于我用的jsp页面,所有在pom.xml中加jsp的依赖
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
controller就不用写了,直接返回个String就跳到对应的页面了。
下面来进行测试的时候,出现了错误。如下
有重定向?打开控制台确实有。百度查了是说没有jsp的依赖,一看我也加了。仔细检查发现在MyWebAppConfigurer类里面有一个注解,@EnableWebMvc,这个注解表示的是MVC Java config,将@EnableWebMvc添加到你的一个@Configuration class。也就是说这个必须要有xml(ps:这块我也不清楚,反正应该要有个xml文件,类似于springmvc吧,反正我没有)。最后将这个注解删除了,完成拦截了。
PS:新手上路,大神勿喷。。。。qwq