日期:2014-05-16 浏览次数:20659 次
首先,我的例子是从这里改的:
http://www.blogjava.net/max/archive/2007/06/12/123682.html
他用的json的jar包是别人写的,我用的Jar包是struts提供的struts2-json-plugin-2.1.8.1.jar
用到的jar包在附件中。

?
public class AjaxAction extends ActionSupport
{
private static final long serialVersionUID = -5009042081262340542L;
private int bookId;
private String title;
private double price;
private List<String> comments;
private transient String secret1;
private String secret2;
@JSON(name = "ISBN")
public int getBookId()
{
return bookId;
}
public void setBookId(int bookId)
{
this.bookId = bookId;
}
public List<String> getComments()
{
return comments;
}
public void setComments(List<String> comments)
{
this.comments = comments;
}
public double getPrice()
{
return price;
}
public void setPrice(double price)
{
this.price = price;
}
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
@Override
public String execute() throws Exception
{
bookId = 15645912;
title = "Max On Java";
price = 0.9999d;
comments = new ArrayList<String>(3);
comments.add("It's no bad!");
comments.add("WOW!");
comments.add("No comment!");
secret1 = "You can't see me!";
secret2 = "I am invisible!";
return SUCCESS;
}
}
?
?以上代码值得注意的是,通过@JSON的JAVA注释(Annotation),我们可以改变JSON结果的属性名称,另外带有transient修饰符与没有Getter方法的字段(field)都不会被串行化为JSON。
struts.xml:
?
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="Struts2_AJAX_DEMO" extends="json-default"> <action name="ajaxAction" class="AjaxAction"> <result type="json" /> </action> </package> </struts>
?上面配置文件的“package”元素和以往不同的是,它扩展了“json-default”而不是“struts-default”。“json-default”是在struts-json-plugin.xxx.jar包里的struts-plugin.xml中定义的。
?
?
发布运行应用程序,在浏览器中键入:http://found.mshome.net:8888/StrutsAjax/ajaxAction,出现下载文件对话框,原因是JSON插件将HTTP响应(Response)的MIME类型设为“application/json”。把文件ajaxAction下载下来,用记事本打开,内容如下:
{"ISBN":15645912,"comments":["It's no bad!","WOW!","No comment!"],"price":0.9999,"title":"Max On Java"}
?
对了,我的web.xml中是这样配置的:
?
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <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> </web-app>
?
?所以访问链接和上面那个人的例子不太一样。
html页面中这样的:大部分内容都和上面那个人的例子一样,只有url不同。
?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Json.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta htt