Strust2+JSON的配置詳解
一、JSON是什麼?
JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。易於人閱讀和編寫,同時也易於機器解
析和生成。它基於JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集。 JSON採用完全獨立於語言的文字格式,但是也使用了類似於C語言家族的習慣(包括C, C , C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的資料交換語言。
二 、struts2對於JSON有什麼支援?
struts2提供了一個struts2-json-plugin.jar 用於支援JSON的使用。當我們在struts2中使用JSON的時候
必須匯入struts2-json-plugin.jar。
在 struts2-json-plugin.jar 中有一個 struts-plugin.xml 定義了 json-default 繼承自 struts-default 。
<struts> <package name="json-default" extends="struts-default"> <result-types> <result-type name="json" class="org.apache.struts2.json.JSONResult"/> </result-types> <interceptors> <interceptor name="json" class="org.apache.struts2.json.JSONInterceptor"/> <interceptor name="jsonValidation" class="org.apache.struts2.json.JSONValidationInterceptor"/> <!-- Sample JSON validation stack --> <interceptor-stack name="jsonValidationWorkflowStack"> <interceptor-ref name="basicStack"/> <interceptor-ref name="validation"> <param name="excludeMethods">input,back,cancel</param> </interceptor-ref> <interceptor-ref name="jsonValidation"/> <interceptor-ref name="workflow"/> </interceptor-stack> </interceptors> </package> </struts>
注意: 我們自己定義的 package 需要繼承 json-default 才能使用。
<package name="jsonPackage" extends="json-default">
<span style="font-size:10px;"><action name="VERSION" class="com.cairenhui.sec.action.AppAction" method="getAppVersion"> <result name="success" type="json"> <span style="white-space:pre"> </span><param name="root">resMap</param> </result> </action> <action name="ajaxVerify!*" class="com.cairenhui.sec.action.VerifyAction" method="{1}"> <result name="success" type="json"> <param name="includeProperties">resMap.*</param> </result> </action> </span>
三、關於JSON在struts.xml中的一些屬性的功能。
<action name="*" class="*">
<result name="success" type="json">
<param name=""></param>//關於對JSON的一些定義 <span style="color:#ff0000;">這裡可能會用到一些正則的表達方式</span>
/*
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在Action物件中註解的使用。
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="yyyy-MM-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":"2011-03-21","mypassword":"world"}
//使用瀏覽器的bug工具檢視 alert(returnedData);彈出來的只是 [object,Object] //這裡我們可以看見password的名稱已經改為mypassword了 而設定那麼的data屬性,名稱則沒有變相關推薦
package.json配置詳解
預設的package.json檔案直接使用命令:npm init --yes生成 { "name": "pingdingshan", "version": "1.0.0", "description": "", "main": "index.js
Strust2+JSON的配置詳解
一、JSON是什麼? JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。易於人閱讀和編寫,同時也易於機器解 析和生成。它基於JavaScript(Standard ECMA-262 3rd Edition - December 1
Webpack配置詳解(package.json/webpack.config.js詳細配置 )
Webpack配置詳解(package.json/webpack.config.js詳細配置 ) webpack安裝 package.json配置以及模組安裝 webpack.config.js配置 開啟webpack-dev-server服務 熱替換外掛的安裝以及配置 開啟自動開啟瀏覽器外
setting.xml 配置詳解
校驗 找不到 順序 裁剪 全局 -- mls leg 觸發 文件存放位置 全局配置: ${M2_HOME}/conf/settings.xml 用戶配置: ${user.home}/.m2/settings.xml note:用戶配置優先於全局配置。${user.home}
【Spring】Spring MVC原理及配置詳解
進行 return sub sca scrip uil 線程安全 松耦合 必須 1.Spring MVC概述: Spring MVC是Spring提供的一個強大而靈活的web框架。借助於註解,Spring MVC提供了幾乎是POJO的開發模式,使得控制器的開發和測試更加簡
kafka參數配置詳解
kafka 參數 broker.idbroker的唯一標識符,如果不配置則自動生成,建議配置且一定要保證集群中必須唯一,默認-1log.dir日誌數據存放的目錄,默認/tmp/kafka-logslog.dirs日誌數據存放的目錄,如果沒有配置則使用log.dir,建議此項配置。zookeeper.c
Lnux系統網卡綁定配置詳解
ole osd 接口 當前 onf prim multi pac lin 一、CentOS 配置網卡綁定(bonding) 1、bonding概述 (1)作用:就是將多塊網卡綁定同一IP地址對外提供服務,可以實現高可用或者負載均衡。當然,直接給兩塊網卡設置同一IP地址是不可
Nginx配置詳解
set 文件結構 時也 解決方案 ces 反向代理服務器 use 力量 第三方模塊 最近在搞nginx和tomcat 以及apache的集群。下面是參考的一片很不錯的關於nginx配置的詳細講解: http://www.cnblogs.com/knowledgesea/p/
Apache配置詳解
搜索 相對 第一個 form 執行權限 php 時有 多個 direct Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改。 主站點的配置(基本配置) (1) 基本配置: ServerRoot "/mnt/softwa
緩存varnish的管理及配置詳解
啟動 一個 hint 單位 quad spec int rom try 一 工作原理 在當前主流的Web服務架構體系中,Cache擔任著越來越重要的作用。常見的基於瀏覽器的C/S架構,Web Cache更是節約服務器資源的關鍵。而最近幾年由FreeBSD創始人之一Kamp開
日誌配置詳解
lin XML html表格 記錄 文件中 對齊方式 oca read val #①配置根Logger,其語法為: # #log4j.rootLogger = [level],appenderName,appenderName2,... #level是日誌記錄的優先級,分為
phpmyadmin配置詳解
php phpmyadmin配置文件中的一個,路徑為libraries/config.default.php,可以修改若幹配置,其中,only_db可以配置在web端顯示的數據庫本文出自 “12968673” 博客,請務必保留此出處http://12978673.blog.51cto.com/1296867
DNS配置詳解 bind實現正向解析和反向解析
cell 8.4 -s intern 資源記錄 ted borde linux系統 ans DNS是域名服務(Domain Name Service),負責把域名解析成IP地址(正向解析)或者把IP地址解析為域名(反向解析)。 DNS查詢過程: 假設我們要訪問www.a
MySQL5.6 數據庫主從(Master/Slave)同步安裝與配置詳解
inux bind 主從配置 希望 master 強調 數據庫主從 ria 配置文件 目錄(?)[+] 安裝環境 操作系統 :CentOS 6.5 數據庫版本:MySQL 5.6.27 主機A:192.168.1.1 (Master) 主機B:192.168.
web緩存服務器varnish-4.1.6的部署及配置詳解
是否 次數 tool 至少 hits 檢查 rep nat list web緩存服務器varnish-4.1.6的部署及配置詳解 1.安裝varnish4.1.6安裝依賴 yum install -y autoconf automake jemalloc-devel li
web.xml配置詳解
知識 其他 location 參數 pin systems doctype doc clu web.xml配置詳解 引文: 對於一個J2EE領域的程序員而言,基本上每天都會和web應用打交道。 什麽是web應用?最簡單的web應用什麽樣?給你一個web應用你該從何入手
mybatis一對一映射配置詳解
技術分享 iat rom cti 加載 文件中 src 裏的 new 聽說mybatis一對一有三種寫法,今天我試了一下。 數據庫表準備 為了偷懶,我直接就拿用戶權限菜單裏的菜單表和菜單與權限的中間表做實現,他們原來是多對多的關系,這邊我假設這兩張表是一對一。 表 g
CentOS Apache配置詳解
先來 page over oca 基於ip chmod 程序 ror 接收 要想在linux上實現網頁服務器(www)需要Apache這個服務器軟件,不過Apache僅能提供最基本的靜態網站數據而已,想要實現動態網站的話,最好還是要PHP與MySQL的支持,所以下面我們將會
Nginx配置文件(nginx.conf)配置詳解
最好 緩沖區 網絡io dev mp3 forward val eight 超時 Nginx的配置文件nginx.conf配置詳解如下: user nginx nginx ; Nginx用戶及組:用戶 組。window下不指定 worker_process
PLSQL連接Oracle 數據庫配置詳解
evel 目錄 win32 asi ges network con 配置詳解 soft 1. 下載instantclient-basic-win32-11.2.0.1.0 (oracle官網下載地址:http://www.oracle.com/technetwork/t