关于servlet filter的问题

想问下doFilter的第三个参数,传给下一个的Filter或者servlet,那怎么获取到里面的参数值?

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
if (request.getCookies() == null){
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("user","root");
    JSONObject jsonObject1 = new JSONObject();
    jsonObject1.put("data",jsonObject);
    PrintWriter out = response.getWriter();
    out.append(jsonObject1.toString());
}
response.setContentType("application/json;charset=utf-8");
filterChain.doFilter(request,response);


我怎么能获取到这个过滤器传过过来的request和response的里面的数据?

阅读 1.9k
1 个回答

没理解你的需求是什么。
你要获取什么数据呢??
首先,request有个setAttribute(String name, Object o);可以塞数据,塞进去后面get就可以了。
再有,如果你想读取request的body信息,因为是流数据,只能读取一次,你得自己定义一个ServletRequestWrapper实现,读取到流数据缓存起来,并重载几个读取数据的方法,不影响后续的处理。这个网上你可以查查的,有很多实现。
最后response你想读处理完的数据,也是一样的道理,定义一个流输出的实现,缓存下来。
不知道满足你的需求量没,没理解你具体要干嘛

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题