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
>