Struts-JSONの開発効率向上



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ファイルの定義を受け継ぐjson-defaultでなければなりません.
       /* struts 2-json-plugin.jarのstruts-plugin.xml設定情報:
         
                                    
                                                      

                           
                           
           

 
       

 
       設定情報で知ることができます.
          1.json-defaultは実はstruts-defaultを引き継いでいます.
          2.nameをjsonに戻るタイプとnameをjsonにするブロック*/
 
         2.//私達はreultを必要とします.
         の 戻るタイプは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属性を設定しています.名前は変わっていません.