3 回答
TA贡献1789条经验 获得超8个赞
您可以为此添加拦截器
样本拦截器
public class CustomInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request,HttpServletResponse response) {
//Add Login here
return true;
}
}
配置
@Configuration
public class MyConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyCustomInterceptor()).addPathPatterns("/**");
}
}
希望这可以帮助
TA贡献1779条经验 获得超6个赞
也许一个不错的选择是实现一个自定义过滤器,该过滤器在每次收到请求时运行。
您需要扩展“OncePerRequestFilter”并覆盖方法“doFilterInternal”
public class CustomFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
//Add attributes to request
request.getSession().setAttribute("attrName", new String("myValue"));
// Run the method requested by petition
filterChain.doFilter(request, response);
//Do something after method runs if you need.
}
}
在您必须在 Spring 中使用 FilterRegistrationBean 注册过滤器之后。如果你有 Spring 安全,你需要在安全过滤器之后添加你的过滤器。
TA贡献1780条经验 获得超4个赞
Spring Aspect 也是在控制器之前执行代码的好选择。
@Component
@Aspect
public class TestAspect {
@Before("execution(* com.test.myMethod(..)))")
public void doSomethingBefore(JoinPoint jp) throws Exception {
//code
}
}
这里myMethod()将在控制器之前执行。
添加回答
举报