1,现在需要从过滤器里面获取HttpServletResponse,再从HttpServletResponse获取返回给前端的json数据。2,场景,当用户发生了增删改的操作的时候,获取用户操作的url,参数,然后根据操作是否成功,若是成功,那么将用户的这些操作日志数据插入数据库,用户操作的url,参数可以从ServletRequest里面获取,但是用户操作是否成功需要根据HttpServletResponse里面返回给前端json数据里面的一个key来判断。但是现在不知怎么获取json数据。3,`publicclassLogFilterextendsAdviceFilter{@OverridepublicvoidafterCompletion(ServletRequestrequest,ServletResponseresponse,Exceptionexception)throwsException{HttpServletRequestr=(HttpServletRequest)request;HttpServletResponseres=(HttpServletResponse)response;System.out.println(r.getMethod());Mapmap=request.getParameterMap();MapresultMap=newLinkedHashMap();for(Map.Entryme:map.entrySet()){StringparamName=me.getKey();resultMap.put(paramName,request.getParameter(paramName));}System.out.println("resultMap"+resultMap);System.out.println(r.getRequestURI());//就是这里不知道怎么获取HttpServletResponse里面的jsonServletOutputStreamout=res.getOutputStream();}}`
2 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
response是采用缓存输出流的方式回写,当执行到HandlerInterceptor.afterCompletion时,大部分数据可能已经写回的客户端,没有办法获得了.可以尝试用ServletFilter,把里面的response替换成自己的实现,但要注意的是如果不用流,而是保留在内存里,那么以性能和内存都要小心处理才行.
添加回答
举报
0/150
提交
取消