Struts-JSONの開発効率向上
7299 ワード
Struts-JSONの開発効率向上について
一、JSONとは何ですか?
:JSON(JavaScript Object Notation)は軽量級のデータ交換フォーマットです.読みやすいし、書きやすいし、機械にもやさしいです.
分析と生成それはJavaScript(Standard ECMA-232 rd Edition-December 1999)のサブセットに基づいています.JSONは言語から完全に独立したテキスト形式を採用していますが、C言語家族のような習慣も使用しています.これらの特性はJSONを理想的なデータ交換言語にする.
二、struts 2はJSONに対して何かサポートがありますか?
:struts 2はJSONの使用をサポートするためにstruts 2-json-plugin.jarを提供します.私たちはstruts 2でJSONを使う時
struts 2-json-plugin.jarを導入しなければなりません.
そして何時が必要ですか?
1.
/* struts 2-json-plugin.jarのstruts-plugin.xml設定情報:
設定情報で知ることができます.
1.json-defaultは実はstruts-defaultを引き継いでいます.
2.nameをjsonに戻るタイプとnameをjsonにするブロック*/
2.
の 戻るタイプはJsonと定義されています.
三、JSONのstruts.xmlにおけるいくつかの属性の機能について.
<action name="*" class="*">
<result name="success" type="json">
<param name=""></param>// JSON
/*excludeProperties // Action , , ( )
:<param name="excludeProperties">age</param> getAge()
includeProperties // Action , , ( )
:<param name="includeProperties">address</param> getAddress()
excludeNullProperties // Action
:<param name="excludeNullProperties">true</param> true/false false( null )
root //
:<param name="root">person</param> person , ,
// , person , person , person getter
: excludeProperties includeProperties
excludeProperties ,
*/
</result>
</action>
四、JSONのアクションオブジェクトにおける注釈の使用について.:JSONに対する注釈は主にいくつかの属性が定義できます.
name:プログレッシブ時に対応する名称を指定します.
/*
例:@JSON(name=myname)は、クライアントが受信したJSONのUserName属性に対応するところ:
{myname:「張三」}以前は「username:「張三」でした.
public String getUsername()
return username;
}
*/
serialize:この方法を序列化する true/false
/*
例:@JSON(serialize=true)は、この方法をプログレッシブし、falseであればプログレッシブしない
public String getUsername()
return username;
)
*/
deserialize:この方法には順序付けをしません. true/false
/*
例:@JSON(deserialize=true)はこの方法に対してプログレッシブではなく、falseであればプログレッシブにする.
public String getUsername()
return username;
)
*/
format:JSONのこの方法に対する変換方式を設定し、一般的に時間を変換するために使用されます.
/*
例:@JSON(format=「yyy-M-dd」) クライアントが受信したJSONにおけるdateの対応する値は以下の通りである.
{date:「2011-10-2」}
public Date getDate(){
return date;
)
*/
五、具体的な例:
Action:
package org.viancent.action;
import java.util.Date;
import org.apache.struts2.json.annotations.JSON;
import com.opensymphony.xwork2.ActionSupport;
public class GetJsonAction extends ActionSupport {
private String username;
private String password;
private int age;
private Date date;
@JSON(serialize = false)
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@JSON(name="mypassword")
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@JSON(format="yyyy-MM-dd")
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String execute() throws Exception {
this.setDate(new Date());
this.setAge(10);
this.setPassword("world");
this.setUsername("hello");
return SUCCESS;
}
}
struts.xml <struts>
<package name="struts2" extends="json-default">
// json-default
<action name="getjsons" class="org.viancent.action.GetJsonAction">
<result name="success" type="json">
// type json
<param name="excludeProperties">age</param>
// getAge()
</result>
</action>
</package>
</struts>
JSP: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript" src="WEB-JS/jquery-1.5.1.js"></script> // jquery js
<script type="text/javascript"> // jquery
function getJson() {
$.post(
"/struts2/getjsons.action",{},function(returnedData,status)
{
if("success"==status)
{
alert(returnedData);
}
}
)
}
</script>
</head>
<body id="theBody">
<input type="button" value="GetJson" onclick="getJson();">
</body>
</html>
得られた結果は:{「date」:「201-03-21」,「mypassword」:「world」であった. //ブラウザのbugツールを使ってalertを調べます.弾いたのは[object,Object]だけです.
//ここではpasswordの名前がmypasswordに変更されているのが見えますが、そんなにdata属性を設定しています.名前は変わっていません.