JSON前台与后台的交互
来源:互联网 发布:ubuntu如何接入pppoe 编辑:程序博客网 时间:2024/05/24 06:38
1、POST方式提交
将JSON使用ajax的post方式提交,提交的前台代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>json的使用</title></head><body onload="init()"></body><script type="text/javascript" src="./../js/jquery-2.1.4.js"></script><script type="text/javascript" src="./../js/json2.js"></script><script type="text/javascript">function init(){var person = new Person("张三",26);$.ajax({url:"json.action",data:{jsonString:JSON.stringify(person)},type:"POST",success:function(data){document.write(JSON.stringify(data));}});}function Person(username,age){this.name= username;this.age = age;}</script></html>在后台接受前台传递的参数,由于使用JSON进行解析,因此需要使用json-lib的jar包,使用Maven下载的依赖如下:
<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.3</version><classifier>jdk15</classifier><!-- jdk1.5及其以上使用 --></dependency> </dependencies>
后台对前台传递的参数进行解析,并将解析的JSON格式传递给前台,代码如下:
package com.struts.service;import java.io.IOException;import java.io.PrintWriter;import java.io.UnsupportedEncodingException;import org.apache.struts2.ServletActionContext;import net.sf.json.JSONObject;/** * @TODO TODO * @author Administrator * @date 2015年9月15日 下午9:24:16 * @version 1.0 */public class JsonService {private String jsonString ;public String getJsonString() {return jsonString;}public void setJsonString(String jsonString) throws UnsupportedEncodingException {this.jsonString = jsonString;}public String execute() throws IOException{JSONObject json = JSONObject.fromObject(jsonString);//转换为JSON对象System.out.println(json.get("name") + "," + json.get("age"));//使用get()方法获取value值 ServletActionContext.getResponse().setCharacterEncoding("utf-8");//设置编码,否则返回给前台出现乱码 PrintWriter writer = ServletActionContext.getResponse().getWriter();writer.print(json);//向前台传递参数,返回给Ajax的参数writer.flush();return null;//不进行重定向或者转发,只是将结果传递给前台}}
则在页面加载完毕后,会发起json.action的post请求,请求参数和响应的结果如下图所示:
2、使用GET方式提交
在使用GET方式提交时,传递到后台的参数如果含有中文则会出现乱码,因此需要对其进行处理,处理方式为如下:
public void setJsonString(String jsonString) throws UnsupportedEncodingException {this.jsonString = new String(jsonString.getBytes("ISO-8859-1"),"UTF-8");//当使用get方式提交需要进行转码}这样,传递给后台的参数可以正确解析,参见下图:
3、在后台处理list集合,转换成数组并传递给前台。分别处理list集合中元素为String和对象的情况。
后台代码如下:
public String execute() throws IOException{JSONObject json = JSONObject.fromObject(jsonString);System.out.println(json.get("name") + "," + json.get("age"));//将list<String>集合转换为数组List<String> list = new ArrayList<String>();list.add("lsit1");list.add("lsit2");list.add("lsit3");JSONArray listString = JSONArray.fromObject(list);//list中封装对象List<Person> listPerson = new ArrayList<Person>();listPerson.add(new Person("张三",20));listPerson.add(new Person("李四",25));JSONArray listPersonArray = JSONArray.fromObject(listPerson);ServletActionContext.getResponse().setCharacterEncoding("utf-8");//设置编码,否则返回给前台出现乱码PrintWriter writer = ServletActionContext.getResponse().getWriter();writer.println(json);//向前台传递参数,返回给Ajax的参数writer.println(listString);//向前台传递数组,数组中元素为stringwriter.println(listPersonArray);//向前台传递数组 数组中元素为jsonwriter.flush();return null;}返回给前台的结果如下:
4、后台处理map集合,主要分为value为字符串和对象两种情况,后台代码如下:
public String execute() throws IOException{JSONObject json = JSONObject.fromObject(jsonString);System.out.println(json.get("name") + "," + json.get("age"));Map<String,String> map = new HashMap<String, String>();map.put("key1", "value1");map.put("key2", "value2");JSONArray stringMap = JSONArray.fromObject(map);Map<String,Person> mapPerson = new HashMap<String, Person>();mapPerson.put("key1", new Person("张三",20));mapPerson.put("key2", new Person("李四",25));JSONArray mapPersonJSON = JSONArray.fromObject(mapPerson);ServletActionContext.getResponse().setCharacterEncoding("utf-8");//设置编码,否则返回给前台出现乱码PrintWriter writer = ServletActionContext.getResponse().getWriter();writer.println(stringMap);//向前台传递数组,数组中元素为jsonwriter.println(mapPersonJSON);//向前台传递数组 数组中元素为jsonwriter.flush();return null;}前台的处理结果如下:
0 0
- JSON前台与后台的交互
- EXT 中json格式数据后台与前台的交互
- 前台后台的的json数据交互
- ajax前台与后台的数据交互
- ios前台与php后台的交互
- echarts后台与前台json数据交互问题
- EasyUI+Ajax+Json+一般处理程序实现数据的前台与后台的交互
- EasyUI+Ajax+Json+一般处理程序实现数据的前台与后台的交互
- FLEX4.7 与Java后台交互返回json格式的数组 并赋值给前台datagrid
- 前台与后台数据交互
- Jquery EasyUI +Ajax +Json +一般处理程序 实现数据的前台与后台的交互 --- 善良公社项目
- Jquery EasyUI +Ajax +Json +一般处理程序 实现数据的前台与后台的交互 --- 善良公社项目
- JSON与后台交互的一般模式
- 前台 jsp 与 后台 servlet 的数据交互问题
- 使用struts2框架来实现前台与后台的交互
- ssm框架下,前台与后台的数据交互
- goahead前台与后台的交互(ajax)
- js前台与后台数据交互-前台调后台
- 看到有Java中Iterator和ListIterator,感觉不错
- 第三章 图层的几何和变换
- Mac Pro 下搭建maven环境
- C#编码规范
- 将一个字符串向左旋转n个字符
- JSON前台与后台的交互
- Linux下Fork与Exec使用
- 继承下构造函数的执行顺序
- 利用python opencv实现图像自适应二值化
- Unity物理引擎:关节简介(弹簧关节)
- c++11特性与cocos2d-x 3.0之std::bind与std::function
- 个人面试题(Oracle数据库开发)(二)
- 国家发改委投资协会张书科祝贺第九届中国中小企业节新闻发布会在长春召开成功
- 2015年360校招笔试题