这两天学的东西有点多,今天抽个时间写下来,以此作为激励,这两天学了json,ajax,jQuery

一、使用第三方的工具java转换为json类型

首先就是java类型转换为json对象,首先要导入第三方工具包:

准备导入第三方jar包:

》commons-beanutils-1.7.0.jar

》commons-collections-3.1.jar

》commons-lang-2.5.jar

》commons-logging-1.1.1.jar

》ezmorph-1.0.3.jar

》json-lib-2.1-jdk15.jar

转换的方法如下:

(1)JavaBean----->JSON

》JSONArray jsonArray = JSONArray.fromObject(city);

》String jsonJAVA = jsonArray.toString();

(2)List<JavaBean>----->JSON

》JSONArray jsonArray = JSONArray.fromObject(cityList);

》String jsonJAVA = jsonArray.toString();

(3)List<String>----->JSON

》JSONArray jsonArray = JSONArray.fromObject(stringList);

》String jsonJAVA = jsonArray.toString();

(4)Set<JavaBean>----->JSON

》JSONArray jsonArray = JSONArray.fromObject(citySet);

》String jsonJAVA = jsonArray.toString();

(5)Map<String,Object>----->JSON

》JSONArray jsonArray = JSONArray.fromObject(map);

》String jsonJAVA = jsonArray.toString();

public static void javabean2Json()
{
City city = new City(1,"广州");
JSONArray jsonArray = JSONArray.fromObject(city);
String jsonJAVA = jsonArray.toString();
System.out.println(jsonJAVA);
//[{"id":1,"name":"广州"}]
} public static void list2json()
{
List<City> cityList = new ArrayList<City>();
cityList.add(new City(1,"广州"));
cityList.add(new City(2,"深圳")); Province province = new Province(1,"广东",cityList); //[{"id":1,"cityList":[{"id":1,"name":"广州"},{"id":2,"name":"深圳"}],"name":"广东"}]
JSONArray jsonArray = JSONArray.fromObject(province);
String jsonJAVA = jsonArray.toString();
System.out.println(jsonJAVA);
//List集合[{"id":1,"name":"广州"},{"id":2,"name":"深圳"}]
} public static void set2json()
{
Set<City> citySet= new HashSet<City>();
citySet.add(new City(1,"广州"));
citySet.add(new City(2,"深圳"));
JSONArray jsonArray = JSONArray.fromObject(citySet);
String jsonJAVA = jsonArray.toString();
System.out.println(jsonJAVA);
//[{"id":1,"name":"广州"},{"id":2,"name":"深圳"}]
}
public static void map2json()
{
List<City> cityList = new ArrayList<City>();
cityList.add(new City(1,"广州"));
cityList.add(new City(2,"深圳")); Map<String,Object> map = new HashMap<String,Object>();
map.put("total", cityList.size());//表示集合的长度
map.put("rows", cityList);//表示集合
/**
* [{"total":2,"rows":[{"id":1,"name":"广州"},{"id":2,"name":"深圳"}]}]
*/ JSONArray jsonArray = JSONArray.fromObject(map);
String jsonJAVA = jsonArray.toString();
jsonJAVA = jsonJAVA.substring(1,jsonJAVA.length()-1);
System.out.println(jsonJAVA);
//[{"id":1,"name":"广州"},{"id":2,"name":"深圳"}]
} public static void main(String[] args) {
// TODO Auto-generated method stub
// javabean2Json();
// list2json();
// set2json();
map2json();
}

注意的是这里json全是java格式,必须转换为javascript所支持的json格式.

注意:JS可以直接解析JSON格式的文本,前提是:该JSON必须采用JS格式书写的才行,如果该JSON是采用Java格式写的,必须使用eval()函数转换后,方可被JS解析,该eval("")函数接收一个字符串格式的内容。

二 、使用struts2自动将java对象转换为json

1)导入struts2的jar包,主要是一些核心包,

commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.5.jar
struts2-core-2.3.4.1.jar
xwork-core-2.3.4.1.jar

还有一个struts2对json支持的插件包:struts2-json-plugin-2.3.1.1.jar

2)配置web.xml

 <!-- 配置拦截器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

配置struts.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 配置struts2 -->
<!--<package name="checknode" extends="struts-default" namespace="/user">
<action name="check" class="cn.itcast.js_02.checkcode.CheckcodeAction" method="check">
</action>
</package>--> <package
name="province"
extends="json-default"
namespace="/"> <!-- 配置全局结果 -->
<global-results>
<result name="success" type="json"></result>
</global-results>
<action
name="findCityByProvince"
class="cn.itcast.js_02.provincecityarea.ProvinceCityArea"
method="findCityByProvince">
</action> <action
name="findAreaByCity"
class="cn.itcast.js_02.provincecityarea.ProvinceCityArea"
method="findAreaByCity">
</action>
</package> </struts>

3)javabean 代码:

package cn.itcast.js_02.provincecityarea;

public class Bean {

    private String province;
private String city; public Bean() {
// TODO Auto-generated constructor stub
} public String getProvince() {
return province;
} public void setProvince(String province) {
this.province = province;
} public String getCity() {
return city;
} public void setCity(String city) {
this.city = city;
}
}

Action代码:

package cn.itcast.js_02.provincecityarea;

import java.util.ArrayList;
import java.util.List; import com.opensymphony.xwork2.ActionSupport; public class ProvinceCityArea extends ActionSupport { private Bean bean;
public void setBean(Bean bean) {
this.bean = bean;
}
public Bean getBean() {
return bean;
} public String findCityByProvince() throws Exception {
// TODO Auto-generated method stub
cityList = new ArrayList<String>();
if("湖北".equals(bean.getProvince()))
{
cityList.add("武汉");
cityList.add("孝感");
cityList.add("黄冈");
}else if("湖南".equals(bean.getProvince()))
{
cityList.add("长沙");
cityList.add("株洲");
cityList.add("岳阳");
cityList.add("湖南");
}else if("江西".equals(bean.getProvince()))
{
cityList.add("南昌");
cityList.add("南昌");
cityList.add("南昌");
cityList.add("南昌");
} //配置让struts2自动将List/Set/Map<String>转换为JSON文本
return this.SUCCESS;
} /**
* 通过城市查找区域
* @return
* @throws Exception
*/ public String findAreaByCity() throws Exception {
// TODO Auto-generated method stub
areaList = new ArrayList<String>();
if("武汉".equals(bean.getCity()))
{
areaList.add("AA");
areaList.add("BB");
areaList.add("CC");
}else if("南昌".equals(bean.getCity()))
{
areaList.add("DD");
areaList.add("EE");
areaList.add("FF");
}else if("长沙".equals(bean.getCity()))
{
areaList.add("GG");
areaList.add("HH");
areaList.add("II");
} //配置让struts2自动将List/Set/Map<String>转换为JSON文本
return this.SUCCESS;
} private List<String> cityList;
private List<String> areaList;
public List<String> getAreaList() {
return areaList;
}
public List<String> getCityList()
{
return this.cityList;
}
}

jsp代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>struts2实现三级联查询</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<select id="provinceID" style="width:111px">
<option>请选择省份</option>
<option>湖北</option>
<option>湖南</option>
<option>江西</option>
</select> <select id="cityID" style="width:111px">
<option>请选择城市</option>
</select> <select id="areaID" style="width:111px">
<option>请选择区域</option>
</select>
<script type="text/javascript" src="js/ajax.js"></script>
<script type="text/javascript">
document.getElementById("provinceID").onchange = function()
{
var province = this[this.selectedIndex].innerHTML;
//清除之前的样式
var cityElement = document.getElementById("cityID");
cityElement.options.length = 1;
//当省份发生变化时,区域也会发生变化
var areaElement = document.getElementById("areaID");
areaElement.options.length = 1;
if("选择省份"!=province)
{
//NO1)
var ajax = createAjax();
//NO2)
var method = "POST";
var url = "${pageContext.request.contextPath}/findCityByProvince?time="+new Date().getTime();
ajax.open(method, url);
//NO3)
ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
//NO4)
var content = "bean.province="+province;
ajax.send(content);
//------------------------->等待
//NO5)
ajax.onreadystatechange = function()
{
if(ajax.readyState == 4)
{
if(ajax.status == 200)
{
//NO6)返回JAVA
var jsonJAVA = ajax.responseText;
var p = eval("("+jsonJAVA+")");
var array = p.cityList;
var size = array.length;
for(var i=0;i<size;i++)
{
var city=array[i];
var option = document.createElement("option");
option.innerHTML = city;
cityElement.appendChild(option);
}
}
}
}
}
} document.getElementById("cityID").onchange = function()
{
var city = this[this.selectedIndex].innerHTML;
//清除之前的数据
var areaElement = document.getElementById("areaID");
areaElement.options.length = 1;
if("请选择城市"!=city)
{
//NO1)
var ajax = createAjax();
//MO2)
var method = "POST";
var url = "${pageContext.request.contextPath}/findAreaByCity?time="+new Date().getTime();
ajax.open(method,url);
//NO3)
ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
//NO4)
var content = "bean.city="+city;
ajax.send(content); //----------------------等待
ajax.onreadystatechange = function()
{
//NO5)
if(ajax.readyState == 4)
{
if(ajax.status == 200)
{
//NO6)
var jsonJAVA = ajax.responseText;
var jsonJS = eval("("+jsonJAVA+")");
var array = jsonJS.areaList;
var size = array.length;
for(var i=0;i<size;i++)
{
var area = array[i];
var option = document.createElement("option");
option.innerHTML = area;
areaElement.appendChild(option);
}
}
}
}
} }
</script>
</body>
<form action="" enctype="application/x-www-form-urlencoded"></form>
</html>
在这中间出了一些问题,大部分是因为写错了方法名称或属性名例如:ajax.onreadystatechange
最后再附上源码地址:https://github.com/blench/js_day02.git

json与java对象的转换,以及struts2对json的支持,实现ajax技术的更多相关文章

  1. JSON 与JAVA对象之间的转换(转)

    JSON与XML两者目前在数据交互方面都有很高的使用率,随着现在SOA的兴起,异构系统的整合地位相应提高,本篇文章主要介绍JSON与JAVA对象之间的相互转换. 一.对普通类型的JSON模式的转换 一 ...

  2. Json对象与Json字符串的转化、JSON字符串与Java对象的转换

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  3. Json对象与Json字符串的转化、JSON字符串与Java对象的转换(转)

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  4. jackson 进行json与java对象转换 之三

    2.测试类,没用Junit,用Main()方法输出. package test; import java.io.IOException; import java.util.ArrayList; imp ...

  5. JSON与Java对象的互相转换

    JSON与Java对象的互相转换 例一(单个对象进行赋值): @RequestMapping("test1.do") @ResponseBody public JSONObject ...

  6. Json:Java对象和Json文本转换工具类

    Json 是一个用于 Java 对象 和 Json 文本 相互转换的工具类. 安装 下载源码 git clone https://github.com/njdi/durian.git 编译源码 cd ...

  7. Json与Java对象互转之Gson学习

    Json与Java对象互转之Gson学习 请尊重他人的劳动成果.转载请注明出处:Json与Java对象互转之Gson学习         我曾在<XML,Object,Json转换之浅析Xstr ...

  8. JSON和java对象的互转

    先说下我自己的理解,一般而言,JSON字符串要转为java对象需要自己写一个跟JSON一模一样的实体类bean,然后用bean.class作为参数传给对应的方法,实现转化成功. 上述这种方法太麻烦了. ...

  9. JSONObject.fromObject(map)(JSON与JAVA数据的转换)

    JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.) 上一篇文章中有这么 ...

随机推荐

  1. PythonWeb框架Django:虚拟环境安装(virtualenv)

    虚拟环境的用处: 当我们有多个项目要使用不同的第三方类库的时候,就会发生冲突,因为Python的环境内只允许一个版本的第三方类库. 比如说 有A,B两个Web项目,但是A项目的Django的环境为2. ...

  2. mysql中的截取函数及其实例

    一.mysql截取字符串函数 1.left(str,length) 从左边截取length 2.right(str,length)从右边截取length 3.substring(str,index)当 ...

  3. Java中时间API使用详解

    目录 Java中时间API使用详解 1. 时区概念 2. 几种常见的时间 3. 时间戳 4. Java中的时间API 5. Java8中新添加的时间API 6. 在东八区的机器上获得美国时间 Java ...

  4. 063 Python必备库-从人机交互到艺术设计

    目录 一.概述 二.Python库之图形用户界面 2.1 PyQt5 2.2 wxPython 2.3 PyGObject 三.Python库之游戏开发 3.1 PyGame 3.2 Panda3D ...

  5. 拆解大数据总线平台DBus的系统架构

    Dbus所支持两类数据源的实现原理与架构拆解. 大体来说,Dbus支持两类数据源: RDBMS数据源 日志类数据源 一.RMDBMS类数据源的实现 以mysql为例子. 分为三个部分: 日志抽取模块 ...

  6. Termux 高级终端安装使用配置教程

    Termux 高级终端安装使用配置教程,这篇文章拖了有小半年.因为网上相关的文章相对来说还是比较少的,恰好今天又刷了机,所以就特意来总结一下,希望本文可以帮助到其他的小伙伴.发挥Android平台更大 ...

  7. java静态代码块/静态属性、构造块、构造方法执行、main方法、普通代码块的顺序

    java静态代码块/静态属性.构造块.构造方法执行.main方法.普通代码块的顺序 这也是在笔试中的一个重要的考点,就有一个输出语句让你写出输出的结果. 理论知识: 静态代码块是:属于类的,在类加载时 ...

  8. STL中nth_element的用法

    nth_element函数原型有四个,详细我就不一一累赘了,我们就用最普通的用法寻找第k位置的元素. 函数用法为:nth_element(first,kth,end). first,last 第一个和 ...

  9. Java 教程 (Java 对象和类)

    Java 对象和类 Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 本节我们重点研究对象和类的概念. 对象:对象是类的一个实例(对象不是找个女朋友 ...

  10. 摩托罗拉GP68对讲机官方说明书下载,包含使用说明压音表和电路结构等

    摩托罗拉GP68对讲机官方说明书,包含使用说明和电路结构等 1.使用说明书 链接: https://pan.baidu.com/s/1fhXXaBp-MSuQs9Sv3v_Crg 提取码: mc3e ...