public abstract classBaseController {/*** description:send the ajax response back to the client side
*@paramresponseObj
*@paramresponse*/
protected voidwriteAjaxJSONResponse(Object responseObj, HttpServletResponse response) {
response.setCharacterEncoding("UTF-8");
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); //HTTP 1.1
response.setHeader("Pragma", "no-cache"); //HTTP 1.0
/*** for ajax-cross-domain request TODO get the ip address from
* configration(ajax-cross-domain.properties)*/response.setHeader("Access-Control-Allow-Origin", "*");
response.setDateHeader("Expires", 0); //Proxies.
PrintWriter writer=getWriter(response);
writeAjaxJSONResponse(responseObj, writer);
}/***
*@paramresponse
*@return
*/
protectedPrintWriter getWriter(HttpServletResponse response) {if(null ==response){return null;
}
PrintWriter writer= null;try{
writer=response.getWriter();
}catch(IOException e) {
logger.error("unknow exception", e);
}returnwriter;
}/*** description:send the ajax response back to the client side.
*
*@paramresponseObj
*@paramwriter
*@paramwriter*/
protected voidwriteAjaxJSONResponse(Object responseObj, PrintWriter writer) {if (writer == null || responseObj == null) {return;
}try{ writer.write(JSON.toJSONString(responseObj,SerializerFeature.DisableCircularReferenceDetect));
}finally{
writer.flush();
writer.close();
}
}
}
接下来就是我们自己业务的 controller 了,其中主要是要调用 writeAjaxJSONResponse(result, response); 这个方法
@Controller
@RequestMapping(value= "/account")public class AccountController extendsBaseController {
@RequestMapping(value= "/add", method =RequestMethod.POST)public voidaddAccount(HttpSession session,HttpServletRequest request,HttpServletResponse response){
ViewerResult result= newViewerResult();//实现自己业务逻辑代码
writeAjaxJSONResponse(result, response);
}
}
好了,这种简单的方式就实现了。