ITPub博客

首页 > IT职业 > IT职场 > json前后台传值荐

json前后台传值荐

IT职场 作者:uzhy 时间:2021-09-09 10:00:12 0 删除 编辑

谈到JSON,简单的说就是一种数据交换格式。近年来,其在服务器之间交换数据的应用越来越广,相比XML其格式更简单、编解码更容易、扩展性更好,所以深受开发人员的喜爱。

下面简单的写一下在项目中前后台json传值的一个小例子,供大家参考、查阅。

一:前台传后台

1.前台jsp页面代码:

 在index中将实体对象(自己创建即可)插入list中,再将list集合转化成json数组,利用post方式发送AJAX请求,将这个json数组发送至后台(servlet),再在后台进行解析即可。

index.jsp

HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">My first json page list1 = new ArrayList();    list1.add(athlete1);    list1.add(athlete2);    JsonConfig jsonConfig = new JsonConfig();//解决date类型的传输问题    jsonConfig.registerJsonValueProcessor(Date.class , new JsonDateValueProcessor());    JSONArray jsonarray = JSONArray.fromObject(list1, jsonConfig);%>
     

2.后台解析代码:

 后台接受前台传来的json对象,解析插入数据库中,且反给前台一个是否成功的消息。具体插入数据库的代码自己编写一个即可。

JsonServlet.java

package com.badminton.servlet;import java.io.IOException;import java.io.PrintWriter;import java.sql.Date;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.badminton.app.AthleteAction;import net.sf.json.JSONObject;import net.sf.json.JSONArray;public class JsonServlet extends HttpServlet {    public JsonServlet() {        super();    }    public void destroy() {        super.destroy();    }    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        this.doPost(request, response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {                                                                                                                                                                                    response.setContentType("text/xml");        response.setHeader("Cache-Control", "no-cache");        response.setCharacterEncoding("UTF-8");        PrintWriter out = response.getWriter();        AthleteAction athleteaction=new AthleteAction();        try {            String json1 = request.getParameter("athletehead");//接收athlete表的头数据            String json2 = request.getParameter("athlete");//接收athlete表数据            json1 = java.net.URLDecoder.decode(json1,"UTF-8");            json2 = java.net.URLDecoder.decode(json2, "UTF-8");            if ((json1 != "") && (json2 != "")) {                //System.out.println("json1:"+json1);                JSONObject jsonObject1 =JSONObject.fromObject(json1);//生成json对象                JSONArray jsonArray2 = JSONArray.fromObject(json2);//生成JSON数组                for(int i=0;i");                out.println("" + result + "");                out.println("");                out.close();            } else{                                                                                                                                                                                                    String result = "传输过程出错,请重传!";                out.println("");                out.println("" + result + "");                out.println("");                out.close();            }        } catch (Exception e) {            System.out                    .println("JsonServlet doPost(HttpServletRequest request, HttpServletResponse response) 报错:"                            + e.getMessage());        }    }    public void init() throws ServletException {    }                                                                                                                                                                                                                                                                                                                                                }

3.解决传递日期的一个工具类

 若没有这个工具类,date型数据会被转化成json数组的格式,后台解析起来会很复杂。

JsonDateValueProcessor.java

package com.badminton.utils;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;import net.sf.json.JsonConfig;import net.sf.json.processors.JsonValueProcessor;public class JsonDateValueProcessor implements JsonValueProcessor{     /**     * datePattern     */    private String datePattern = "yyyy-MM-dd";    /**     * JsonDateValueProcessor     */    public JsonDateValueProcessor() {        super();    }    /**     * @param format     */    public JsonDateValueProcessor(String format) {        super();        this.datePattern = format;    }    /**     * @param value     * @param jsonConfig     * @return Object     */    public Object processArrayValue(Object value, JsonConfig jsonConfig) {        return process(value);    }    /**     * @param key     * @param value     * @param jsonConfig     * @return Object     */    public Object processObjectValue(String key, Object value,            JsonConfig jsonConfig) {        return process(value);    }    /**     * process     * @param value     * @return     */    private Object process(Object value) {        try {            if (value instanceof Date) {                SimpleDateFormat sdf = new SimpleDateFormat(datePattern,                        Locale.UK);                return sdf.format((Date) value);            }            return value == null ? "" : value.toString();        } catch (Exception e) {            return "";        }    }    /**     * @return the datePattern     */    public String getDatePattern() {        return datePattern;    }    /**     * @param pDatePattern the datePattern to set     */    public void setDatePattern(String pDatePattern) {        datePattern = pDatePattern;    }}

二:后台传前台

后台以list和map两种形式封装json,前台注意json数组和json对象解析时的差别即可。

1.TestJson.java

package com.badminton.servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class TestJson extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {           doPost(request,response);}public void doPost(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {  response.setContentType("text/html");  String str= request.getParameter("name");//得到ajax传递过来的paramater  System.out.println(str);  PrintWriter out = response.getWriter();  List list = new ArrayList();//传递List                    //Map m=new HashMap();//传递Map  User u1=new User();  u1.setUsername("zah");  u1.setPassword("123");  User u2=new User();  u2.setUsername("ztf");  u2.setPassword("456");        list.add(u1); //添加User对象          list.add(u2); //添加User对象                    //m.put("u1", u1);                    //m.put("u2", u2);        JSONArray jsonArray2 = JSONArray.fromObject( list );//转化成json对象                    //JSONObject jo=JSONObject.fromObject(m);//转化Map对象        out.print(jsonArray2);//返给ajax请求        System.out.println(jsonArray2);                    //out.print(jo);//返给ajax请求}}

2.showjson.jsp

利用Jquery、AJAX异步传输的方式接受后台的发送请求。

HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">          


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2551/viewspace-2814959/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-16

  • 博文量
    86
  • 访问量
    539