zoukankan      html  css  js  c++  java
  • 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;    
        }
     
  • 相关阅读:
    Python Virtualenv的使用
    Pycharm常用的设置
    Zabbix学习目录
    DELL R740 Raid10与U盘启动项的配置
    Django
    Django
    Django
    Django
    Django
    Django
  • 原文地址:https://www.cnblogs.com/guzhou-ing/p/7199492.html
Copyright © 2011-2022 走看看