前言
工具类
示例:
前端发送ajax请求
springmvc控制层接收请求并处理请求
前言:
在工作中使用springmvc web框架时常常会发送一个ajax请求,我们在控制层接收到请求并处理完后返回一个json数据到前端,这里提供一个工具类实现接口消息视图(View),用于返回指定格式的json数据。
import java.io.IOException; import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper;import org.springframework.web.servlet.View; /** * 用于输出指定格式的json消息,接口消息视图 * @author * 2017年7月18日 * @version 1.0 */ public class JSONMessageView implements View { //消息码 private int code; //消息内容 private String message; //数据内容 private Object content; //返回数据内容类型 private String contentType = "application/json"; //无参构造 public JSONMessageView() { } //有参构造 public JSONMessageView(int code, String message, Object content) { super(); this.code = code; this.message = message; this.content = content; } //设置返回的字符编码与数据内容、数据内容类型 @Override public void render(Map<String, ?> arg0, HttpServletRequest arg1,HttpServletResponse response) throws Exception { response.setCharacterEncoding("UTF-8"); response.setHeader("content-Type", getContentType()); response.getWriter().write(toString()); } //设置json格式数据 @Override public String toString(){ ObjectMapper mapper = new ObjectMapper(); StringWriter sw = new StringWriter(); try { mapper.writeValue(sw, this); } catch (JsonGenerationException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return sw.toString(); } public static void main(String[] args) throws UnsupportedEncodingException { System.out.println(new JSONMessageView(-1, "错误", "")); } //getter/setter方法 public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Object getContent() { return content; } public void setContent(Object content) { this.content = content; } public String getContentType() { return contentType; } public void setContentType(String contentType) { this.contentType = contentType; } }
示例:
前端发送ajax请求:
$.ajax({ url:"${request.contextPath}/merchant/coupon/addCoupon.html", type:"post", data:{"":,}, dataType:"json", success:function(data){ if(data.code==0){ $("#addAcount").hide();//隐藏窗口 alert(data.message); //弹出返回消息内容
//data.content//返回的数据内容 location.reload();//刷新页面 }else{ alert(data.message); } }, error:function(){ alert(data.message); } });
springmvc控制层接收请求并处理请求:
/** * 添加优惠券 */ @RequestMapping(value="/addCoupon.html",produces="application/json; charset=UTF-8") public JSONMessageView addCoupon(DisCoupon disCoupon,HttpServletRequest request){ JSONMessageView json = new JSONMessageView(-1, "保存失败", null); try{ //...省略具体处理细节 disCouponService.saveOrUpdate(disCoupon); json.setCode(0); //设置返回消息码 0表示成功,非0表示失败 json.setMessage("保存成功!"); //设置返回的消息内容 //json.setContent(disCoupon); //如果需要返回数据内容则设置 } }catch (Exception e) { e.printStackTrace(); json.setCode(-10); json.setMessage("保存失败"); return json; } return json; }