1.在项目下边建立aop包,然后创建两个class,如图:
2 loginInterceptor继承HandlerInterceptor,重写前置拦截器(后置拦截器和其他类型拦截器一样的,修改一下方法名即可),每个请求都会先通过这个拦截器。
package com.example.demo.aop;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class loginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle (HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
Object uid=request.getSession().getAttribute(“uid”);
if(uid==null){
response.sendRedirect("/user/login");
return false;
}
System.out.println(“生效了!”);
return true;
}
}
3.loginInterceptorConfigurer 类实现WebMvcConfigurer 接口,重写addInterceptors方法。
addPathPatterns("/welcome")是拦截这里边的请求,因为是测试,我就放了一个。正常应该是“/**”所有路径都应该使用拦截器
excludePathPatterns("/")是白名单,里边的请求路径可以不受拦截器控制。可以是个list表,里边放登陆或者一些特殊的路径
package com.example.demo.aop;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class loginInterceptorConfigurer implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
HandlerInterceptor interceptor = new loginInterceptor();
registry.addInterceptor(interceptor).addPathPatterns("/welcome").excludePathPatterns("/**");
}
}
如果是一个正常的loginInterceptorConfigurer 类,里边应该这样,不过建议初学者,先写一下上边的例子,了解一下原理,再按正常开发走:
```go
package com.example.demo.aop;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.ArrayList;
import java.util.List;
@Configuration
public class LoginInterceptorConfigurer implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
HandlerInterceptor interceptor = new LoginInterceptor();
// 白名单
List<String> patterns = new ArrayList<String>();
patterns.add("/bootstrap3/**");
patterns.add("/css/**");
patterns.add("/images/**");
patterns.add("/assets/**");
patterns.add("/js/**");
patterns.add("/web/login.html");
patterns.add("/users/login");
// 通过注册工具添加拦截器
registry.addInterceptor(interceptor).addPathPatterns("/**").excludePathPatterns(patterns);
}
}
注意!!!!!:loginInterceptorConfigurer 类一定要加@Configuration注解,让他可以被spring知道。