一个简单根据session过滤结果的过滤器,代码如下:
@Configuration public class WebMvcConfigurer extends WebMvcConfigurerAdapter { private String deniy="{denied:需要登陆}"; public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new HandlerInterceptorAdapter() { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if(request.getSession().getAttribute("user")==null) { OutputStream write=response.getOutputStream(); write.write(deniy.getBytes("UTF-8")); write.flush(); write.close(); return false; } return true; } }).addPathPatterns("/add/*").addPathPatterns("/update/*").addPathPatterns("/del/*"); } } 可spring框架说输出流已经被获取过了,可我就这么一个过滤器啊,而且return false后应该不会进一步进入控制器处理吧?
不要直接使用OutputStream,使用PrinterWriter
PrintWriter printWriter = response.getWriter(); printWriter.write("DENY"); printWriter.flush(); return false;