亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java怎么從HttpServletResponse里面獲取返回給前端json數據?

java怎么從HttpServletResponse里面獲取返回給前端json數據?

阿波羅的戰車 2019-02-16 22:03:20
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(); } }`
查看完整描述

5 回答

?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

response是采用緩存輸出流的方式回寫,當執行到HandlerInterceptor.afterCompletion時,大部分數據可能已經寫回的客戶端, 沒有辦法獲得了. 可以嘗試用Servlet Filter, 把里面的response替換成自己的實現, 但要注意的是如果不用流,而是保留在內存里,那么以性能和內存都要小心處理才行.

查看完整回答
反對 回復 2019-03-01
?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

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

查看完整回答
反對 回復 2019-03-01
?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

在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();  
    }  
}  

}

查看完整回答
反對 回復 2019-03-01
?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

我現在也是在這個問題.求助呀

查看完整回答
反對 回復 2019-03-01
  • 5 回答
  • 0 關注
  • 1811 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號