1.返回为XML信息的异步交互
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>My JSP 'getXML.jsp' starting page</title>
<script type="text/javascript" src="scripts/jquery-1.4.4.js"></script>
<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">
<script type="text/javascript">
function getInfo(){
$.post("getXMLAction.action",
{
name: $("#name").val()
},function(returnedData, status)
{
var id = $(returnedData).find("id").text();
var name = $(returnedData).find("name").text();
var age = $(returnedData).find("age").text();
var address = $(returnedData).find("address").text();
var html = "<table width='60%' border='1' align='center'><tr><th>id</th><th>name</th><th>age</th><th>address</th><tr align='center'><td>" + id + "</td><td>" + name + "</td><td>" + age + "</td><td>" + address + "</td></tr></table>";
$("#theBody table:eq(0)").remove();
$("#theBody").append(html);
});
}
</script>
</head>
<body id="theBody">
<select id="name">
<option value="zhangsan">zhangsan</option>
<option value="lisi">lisi</option>
</select>
<input type="button" value="get information" οnclick="getInfo();">
</html>
配置文件
定义对应的Action,不指定result
Action:
public class GetXMLAction extends ActionSupport{
private String name;
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
@Override
public String execute() throws Exception{
//注明此处People为一个pojo类
//zhang san
People people1 = new People();
people1.setId(1);
people1.setName("zhangsan");
people1.setAge(30);
people1.setAddress("beijing");
People people2 = new People();
people2.setId(2);
people2.setName("lisi");
people2.setAge(50);
people2.setAddress("tianjin");
//构造XML,通过dom4j
Document document = DocumentHelper.createDocument();
Element rootElement = document.addElement("persons");
rootElement.addComment("This is comment!!");
Element e = rootElement.addElement("person");
Element idElement = e.addElement("id");
Element nameElement = e.addElement("name");
Element ageElement = e.addElement("age");
Element addressElement = e.addElement("address");
if("zhangsan".equals(name)) {
idElement.setText(people1.getId() + "");
nameElement.setText(people1.getName());
ageElement.setText(people1.getAge() + "");
addressElement.setText(people1.getAddress());
}else {
idElement.setText(people2.getId() + "");
nameElement.setText(people2.getName());
ageElement.setText(people2.getAge() + "");
addressElement.setText(people2.getAddress());
}
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/xml; charset=utf-8");
response.setHeader("cache-control", "no-cache");
PrintWriter out = response.getWriter();
//格式化xml
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out, format);
writer.write(document);
out.flush();
out.close();
return null;
}
}
2.返回为JSON信息的异步交互
1)与xml的方式类似;
Gson gson = new Gson();
String result = gson.toJson(people);
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("application/json; charset=utf-8");
response.setHeader("cache-control", "no-cache");
PrintWriter out = response.getWriter();
out.print(result);
out.flush();
out.close();
2)struts2关于json的插件
a.加入插件
b.配置文件的结果result中type=“json”