搞个struts2 jQuery ajax json测试,不是一般的麻烦。要准备很多包
struts: commons-beanutils-1.8.0.jar,commons-collections-3.1.jar,commons-lang-2.4.jar,commons-logging-1.1.3.jar,struts2-core-2.3.16.3.jar
jQuery: jquery-1.11.1.min.js
json: struts2-json-plugin-2.3.16.3.jar,json-lib-2.3-jdk15.jar,ezmorph-1.0.6.jar
jackson:jackson-core-asl-1.9.2.jar,jackson-mapper-asl-1.9.2.jar
转json的时候用到特别多包,当时抛了很多异常,一个个包加上去。其中当时用的commons-lang3-3.1.jar由于太新缺少方法,要用回旧的版本commons-lang-2.4.jar
jackson的包根据需要加。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<head>
<script type="text/javascript">
function getMap() {
$.ajax( {
type : "POST",
url : "ajax/TestAjax_ajaxMap",
dataType : "json",
success : function(data) {
console.log(data);
}
});
}
function getList() {
$.ajax( {
type : "POST",
url : "ajax/TestAjax_ajaxList",
dataType : "json",
success : function(data) {
console.log(data);
}
});
}
</script>
</head>
<body>
<button οnclick="getMap();" type="button">aJaxMap</button>
<button οnclick="getList();" type="button">aJaxList</button>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="ajax" namespace="/ajax" extends="json-default">
<action name="TestAjax_*" method="{1}" class="example.TestAjax">
<result name="success" type="json">
<param name="data">result</param>
</result>
</action>
</package>
</struts>
package example;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import net.sf.json.JSONObject;
import com.opensymphony.xwork2.ActionSupport;
public class TestAjax extends ActionSupport{
private static final long serialVersionUID = 1L;
private String result;
public String ajaxMap(){
Map<String, String> map = new HashMap<String, String>();
map.put("name", "Name");
JSONObject json = JSONObject.fromObject(map);
result = json.toString();
return SUCCESS;
}
public String ajaxList() throws JsonGenerationException, JsonMappingException, IOException{
List<User> l = new ArrayList<User>();
User user;
for (int i = 0; i < 3; i++) {
user = new User();
user.setName("name"+i);
user.setPassword("password"+i);
l.add(user);
}
// JSONObject obj = JSONObject.fromObject(l);
//转json有点麻烦,本来以为上面一行就可以。
// JsonConfig jsonConfig = new JsonConfig();
// jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
// JSONArray json = JSONArray.fromObject(l, jsonConfig);
// result = json.toString();
//jackson
ObjectMapper o = new ObjectMapper();
result = o.writeValueAsString(l);
return SUCCESS;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
//User要加public不然上面的转json会提示找不到set方法
public class User{
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
}