您好,匿名用户

spring mvc 过滤器异常说response.getWriter已经被调用了

0 投票

一个简单根据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后应该不会进一步进入控制器处理吧?
用户头像 提问 2017年 6月13日 @ Cassiopeia 中士 (1,302 威望)
分享到:

1个回答

0 投票

不要直接使用OutputStream,使用PrinterWriter

PrintWriter printWriter = response.getWriter();
printWriter.write("DENY");
printWriter.flush();
return false;
用户头像 回复 2017年 6月13日 @ Vladimir 中士 (1,295 威望)
提一个问题:

相关问题

0 投票
1 回复 77 阅读
0 投票
1 回复 23 阅读
0 投票
1 回复 41 阅读
0 投票
1 回复 423 阅读
用户头像 提问 2014年 12月19日 @ Twitch 中士 (1,300 威望)
0 投票
1 回复 131 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

IT技术交流群 - 随意问
欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...