JsonMessageView工具类

前言
工具类
示例:
  前端发送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;    
    }
 

 

posted @ 2017-07-18 11:23  kinglone  阅读(1282)  评论(0编辑  收藏  举报