1、首先导入struts的必须包
2、导入struts整合JSON的必须包
3、配置核心过滤器
4、编写AJAX并在其中使用json
<%@
page
language="java"
import="java.util.*"
pageEncoding="UTF-8"%>
<%@
taglib
uri="http://java.sun.com/jsp/jstl/core"
prefix="c"%>
<!DOCTYPE
HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>title</title>
<meta
http-equiv="pragma"
content="no-cache">
<meta
http-equiv="cache-control"
content="no-cache">
<meta
http-equiv="expires"
content="0">
<script
type="text/javascript">
window.onload =
function
(){
//创建AJAX对象
var
ajax;
try{
ajax =
new
XMLHttpRequest();
}catch(e){
ajax =
new
ActiveXObject("microsoft.xmlhttp");
}
ajax.open("get","<c:url
value='/json_list'/>"
);
ajax.send(null);
var
province = document.getElementById("provinceID");
//接收返回状态
ajax.onreadystatechange =
function(){
if(ajax.readyState==4
&& ajax.status==200){
var
props = ajax.responseText;
//将json的字符串转为对象
props = eval("("+props+")");
for(var
i=0;i<props.length;i++){
var
opt = document.createElement("option");
//使用json获取指定值
opt.setAttribute("value",
props[i].id);
opt.innerHTML = props[i].provinceName;
province.appendChild(opt);
}
}
}
}
</script>
</head>
<body>
<select
id="provinceID">
</select>
</body>
</html>
5、编写一个实体类
public
class
Province {
private
int
id;
private
String
provinceName;
6、编写一个Action
package
star.july.web;
import
java.util.ArrayList;
import
java.util.List;
import
star.july.entity.Province;
import
com.opensymphony.xwork2.ActionContext;
import
com.opensymphony.xwork2.ActionSupport;
public
class
ProvinceAction
extends
ActionSupport{
public
String list(){
List<Province> list =
new
ArrayList<Province>();
list.add(new
Province(1,"张三"));
list.add(new
Province(2,"李四"));
list.add(new
Province(3,"王五"));
ActionContext ac = ActionContext.getContext();
ac.put("list",
list);
return
SUCCESS;
}
}
7、配置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>
<!-- 继承一个struts整合json的json-defalut包,其已经继承了默认的struts-defalut
-->
<package
name="default"
extends="json-default"
namespace="/">
<action
name="json_*"
class="star.july.web.ProvinceAction"
method="{1}">
<!-- 返回视图的类型必须是:json
-->
<result
type="json">
<!--
值必须是root,转换Action类中放入映射栈的对象,一次只能转换一个 -->
<param
name="root">#list</param>
</result>
</action>
</package>
</struts>