java怎么从HttpServletResponse里面获取返回给前端json数据?

1,现在需要从过滤器里面获取HttpServletResponse,再从HttpServletResponse获取返回给前端的json数据。

2,场景,当用户发生了增删改的操作的时候,获取用户操作的url,参数,然后根据操作是否成功,若是成功,那么将用户的这些操作日志数据插入数据库,用户操作的url,参数可以从ServletRequest里面获取,但是用户操作是否成功需要根据HttpServletResponse里面返回给前端json数据里面的一个key来判断。
但是现在不知怎么获取json数据。
3,`public class LogFilter extends AdviceFilter {

@Override
public void afterCompletion(ServletRequest request, ServletResponse response, Exception exception) throws Exception {
    HttpServletRequest r = (HttpServletRequest) request;
    HttpServletResponse res = (HttpServletResponse) response;
    System.out.println(r.getMethod());
    Map<String, String[]> map = request.getParameterMap();
    Map<String ,String > resultMap=new LinkedHashMap<>();
    for (Map.Entry<String, String[]> me : map.entrySet()) {
        String paramName = me.getKey();
        resultMap.put(paramName,request.getParameter(paramName));
    }
    System.out.println("resultMap"+resultMap);
    System.out.println(r.getRequestURI());
    //就是这里不知道怎么获取HttpServletResponse里面的json
    ServletOutputStream out=res.getOutputStream();
    
}

}`

阿波罗的战车
浏览 1655回答 5
5回答

慕桂英3389331

response是采用缓存输出流的方式回写,当执行到HandlerInterceptor.afterCompletion时,大部分数据可能已经写回的客户端, 没有办法获得了. 可以尝试用Servlet Filter, 把里面的response替换成自己的实现, 但要注意的是如果不用流,而是保留在内存里,那么以性能和内存都要小心处理才行.

MMMHUHU

重写HttpServletResponseWrapper,class MyResponseWrapper extends HttpServletResponseWrapper,在Filter里面public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletExceptionMyResponseWrapper responseWrapper=new MyResponseWrapper((HttpServletResponse)response);即可使用responseWrapper得到json

哈士奇WWW

在servlet填充Response的时候,做JSON格式的数据转换使用的类是net.sf.json.JSONObject,传入response对象和返回的显示类,修改response,返回前台JSON格式数据 代码:/** 以JSON格式输出 @param response */ protected void responseOutWithJson(HttpServletResponse response, Object responseObject) { //将实体对象转换为JSON Object转换 JSONObject responseJSONObject = JSONObject.fromObject(responseObject); response.setCharacterEncoding("UTF-8"); response.setContentType("application/json; charset=utf-8"); PrintWriter out = null; try { out = response.getWriter(); out.append(responseJSONObject.toString()); logger.debug("返回是\n"); logger.debug(responseJSONObject.toString()); } catch (IOException e) { e.printStackTrace(); } finally { if (out != null) { out.close(); } } }

开满天机

我现在也是在这个问题.求助呀
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java