色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

cxf 攔截器返回json

傅智翔1年前8瀏覽0評論

最近在使用cxf框架開發webservice服務的時候,遇到了一個問題,就是攔截器返回的json數據不是很規范,想要做一下優化,于是查找了相關的資料和代碼,終于實現了正確的返回結果。下面就將具體操作分享給大家。

首先,我們在攔截器中可以通過getResponse()方法獲取到服務器返回的響應對象。我們需要在響應對象中設置Content-Type和響應數據。

private static final String CONTENT_TYPE = "application/json;charset=utf-8";
public void handleMessage(SoapMessage message) throws Fault {
ServletContext servletContext = (ServletContext) message.getContextualProperty(ServletContext.class.getName());
HttpServletResponse response = (HttpServletResponse) message.getExchange().getOutMessage().get(CONTAINER_RESPONSE);
if (response == null) {
return;
}
response.setHeader("Content-Type", CONTENT_TYPE);
try {
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().write(jsonString);
response.getWriter().flush();
} catch (IOException e) {
logger.error("write response failed.", e);
throw new Fault(e.getMessage());
}
}

其中,jsonString是由我們自己封裝好的json格式字符串。

其次,在Servlet中,我們需要添加一個過濾器,將響應中Content-Type設置為JSON格式。

public void init(FilterConfig filterConfig) {}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setContentType(CONTENT_TYPE); //設置Content-Type
httpResponse.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
public void destroy() {}

最后,我們還需要在web.xml中添加如下代碼,注冊上述Filter。

JsonFiltercom.xxx.JsonFilterJsonFilter/*

通過上述操作,我們就可以實現攔截器返回json數據的正常格式化了。希望對大家有所幫助!