導航:首頁 > 文件教程 > struts2上傳文件json

struts2上傳文件json

發布時間:2024-03-29 17:07:21

① struts2中的json返回方式

直接response返回的那一堆json字元串有什麼用? 那一般都是書上做例子的。

你可以先在struts.xml里配置result類型是json,
實際應用裡面,用json一般都是用ajax請求的,所以你在jsp里用ajax的請求a.action,然後根據返回結果動態更新頁面。

比如用jQuery,就是
$.ajax({
url: "a.action",
}).done(function() {

// 更新頁面。
});

② struts2 action中從資料庫讀出來的記錄,怎麼封裝成json格式傳給客戶端啊

Ajax
json格式:
{key:value,key1:value1....}
如果返回的數據包含多個對象:
[{key1:value1...},{key2:value2....}]

③ struts2 怎麼配置 json

第一步: 添加struts2-json-plugin-2.3.1.2.jar


第二部: 在struts配置文件


第五部 : js中可以測試接受結果

④ struts2怎麼返回json數據

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN"
"
<struts>
<packagename=""extends="json-default"namespace="">


<actionname=""class=""method="">
<resulttype="json">
以下是變數名為loginUser對象的某些指定屬性
<paramname="includeProperties">
loginUser.id,
loginUser.loginName,
loginUser.name,
loginUser.roleNames
</param>

以下是變數名為loginUser對象的全部屬性,多個對象用逗號
<paramname="includeProperties">
loginUser.*,
loginUser1.*
</param>

以下是集合里的某些指定屬性
<paramname="includeProperties">
weekScheles[d+].id,
weekScheles[d+].startDate,
weekScheles[d+].endDate,
weekScheles[d+].title,
weekScheles[d+].scheleCount
</param>
</result>
</action>
</package>
</struts>

注意package標簽,extends要寫成json-default

Struts2處理JSON只需要在xml文件里就可以完成,但是要注意,能夠直接作為JSON返回的必須是Action類里的屬性,方法中的屬性不能使用此方式直接返回

⑤ struts2 怎樣讀取json數據

一.認識JSON

JSON是一種輕量級、基於文本、與語言無關的數據交換格式,可以用文本格式的形式來存儲或表示結構化的數據。

二.POST請求與Content-Type: application/json

常用的HTTP請求方法有GET, POST, PUT, DELETE等。在提交POST請求時,請求數據放在消息體(Body)中,請求數據的格式及編碼方式用Content-Type來指定。如我們常用的表單<form>提交,其Content-Type默認為application/x-www-form-urlencoded,提交的數據按照key1=val1&key2=val2進行編碼,伺服器端也能很容易地解析K-V值。

JSON的出現,讓交換的數據不再僅限於簡單的K-V結構,而可以有更加復雜的層級,特別適合於RESTful介面。在發送請求時,指定Content-Type為application/json,即可使用JSON字元串作為請求的數據。而在伺服器端接收到該請求後,將按照JSON字元串對請求數據進行處理。

三.Struts2接收JSON請求

在Struts2的Action中提取Content-Type為application/x-www-form-urlencoded的POST參數,我們非常熟悉:在Action中定義屬性及其getter, setter方法,接收到請求時,默認會將與屬性同名的參數值賦予該屬性。

但是對Content-Type為application/json的請求數據,Struts2默認無法解析。因為請求的JSON數據需從輸入流中讀取出來,無法直接從ServletRequest的請求參數中解析。很容易想到,要讀取JSON請求數據,最直接的方式就是從輸入流讀取。而同時,Struts2的strus2-json-plugin也提供了有關的攔截器,對JSON請求數據進行解析。下面將對兩種方案進行分析:

1.從輸入流中讀取JSON請求數據,以下是在Action中實現的一個讀取輸入流數據的方法

  • 解析得到JSON對象後,遍歷JSON對象,取出K-V,通過反射的V設置給予K相同的屬性

  • 開發者可根據自己的需求進行選擇:從輸入流直接讀取JSON請求數據,或使用struts2-json-plugin對JSON請求數據進行處理。

    ⑥ JSP在Struts 2中使用JSON Ajax支持


    JSON插件提供了一種名為json的ResultType,一旦為某個Action指定了一個類型為json的Result,則該Result無需映射到任何視圖資源。因為JSON插件會負責將Action里的狀態信息序列化成JSON格式的數據,並將該數據返回給客戶端頁面的JavaScript。
    簡單地說,JSON插件允許我們在JavaScript中非同步調用Action,而且Action不再需要使用視圖資源來顯示該Action里的狀態信息,而是由JSON插件負責將Action里的狀態信息返回給調用頁面——通過這種方式,就可以完成Ajax交互。
    Struts2提供了一種可插拔方式來管理插件,安裝Struts2的JSON插件與安裝普通插件並沒有太大的區別,一樣只需要將Struts2插件的JAR文件復制到Web應用的WEB-INF/lib路徑下即可。
    安裝JSON插件按如下步驟進行:
    (1)登陸
    (2)將下載到的jsonplugin-0.7.jar文件復制到Web應用的WEB-INF路徑下,即可完成JSON插件的安裝。
    實現Actio邏輯
    假設wo,en輸入頁面中包含了三個表單域,這三個表單域對於三個請求參數,因此應該使用Action來封裝這三個請求參數。三個表單域的name分別為field1、field2和field3。
    處理該請求的Action類代碼如下:
    public class JSONExample
    {
    //封裝請求參數的三個屬性
    private String field1;
    private transient String field2;
    private String field3;
    //封裝處理結果的屬性
    private int[] ints = {10, 20};
    private Map map = new HashMap();
    private String customName = "custom";
    //三個請求參數對應的setter和getter方法
    public String getField1()
    {
    return field1;
    }
    public void setField1(String field1)
    {
    this.field1 = field1;
    }
    //此處省略了field1和field2兩個欄位的setter和getter方法
    ...
    //封裝處理結果的屬性的setter和getter方法
    public int[] getInts()
    {
    return ints;
    }
    public void setInts(int[] ints)
    {
    this.ints = ints;
    }
    public Map getMap()
    {
    return map;
    }
    public void setMap(Map map)
    {
    this.map = map;
    }
    //使用注釋語法來改變該屬性序列化後的屬性名
    @JSON(name="newName")
    public String getCustomName()
    {
    return this.customName;
    }
    public String execute()
    {
    map.put("name", "yeeku");
    return Action.SUCCESS;
    }
    }
    在上面代碼中,宏蔽派使用了JSON注釋,注釋時指定了name域,name域指定Action屬性被序列化成JSON對象的屬性名。除此之外,JSON注釋還支持如下幾個域:
    serialize:設置是否序列化該屬性
    deserialize:設置是否反序列化該屬性。
    format:蔽賀設置用於格式化輸出、解析日期表單域的格式。例如"yyyy-MM-dd'T'HH:mm:ss"。
    配置該Action與並叢配置普通Action存在小小的區別,應該為該Action配置類型為json的Result。而這個Result無需配置任何視圖資源。
    配置該Action的struts.xml文件代碼如下:

    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "">
    <struts>
    <constant name="struts.i18n.encoding" value="UTF-8"/>
    <package name="example" extends="json-default">
    <action name="JSONExample" class="lee.JSONExample">
    <result type="json"/>
    </action>
    </package>
    </struts>
    在上面配置文件中有兩個值得注意的地方:
    第一個地方是配置struts.i18n.encoding常量時,不再是使用GBK編碼,而是UTF-8編碼,這是因為Ajax的POST請求都是以UTF-8的方式進行編碼的。
    第二個地方是配置包時,自己的包繼承了json-default包,而不再繼承默認的default包,這是因為只有在該包下才有json類型的Result。

    ⑦ Struts2 如何獲得action中傳到jsp頁面的json格式集合對象。。。。求解

    樓上的這種辦法,因為response寫入的是字元串,需要你在前台js使用eval函數將字元串轉換成回json對象,才可以使用答data.results的調用
    使用struts2的話,可以考慮使用struts2集成的返回json功能,不用寫入到response:
    1、在配置文件中,定義package的extends,<package name="ajaxAction" extends="json-default">;
    2、下面的infoDxt就是我在infoDxtAction中的一個bean,struts2會自動的將該對象轉換成json,而且bean裡面還可以使用@JSON(format="yyyy-MM-dd") 這種標注方式,指定json中的格式
    <action name="AjaxDxtShow" class="infoDxtAction" method="show">
    <result type="json">
    <param name="root">infoDxt</param>
    </result>
    </action>
    3、針對上面的配置,在action中寫下show方法就好了,不能是void方法,需要返回值

    ⑧ 在struts2中,接受ajax傳的json對象集合,接受不到

    不知道你解決了沒有。我剛好遇到這個問題,基本上和你差不多。
    你這個實際上是復雜數據傳遞。
    因為你的json中又包含了JsonArray,array中又存儲了json對象......
    因為你是採用jquery的Ajax進行傳遞的,但是jquery的ajax和struts並不是很兼容,傳遞過去的值,根本無法被被正確的解析。那麼如何解決這個問題呢?
    這樣改
    var myparam = var myparam = JSON.stringify(
    {
    'userName' : '薛軍軍',
    'sex' : '男',
    'others' : '其他值',
    'jsonTest':[{'t_id':'sd','t_name':'trs'},{'t_id':'sd','t_name':'trs'}]
    },
    );
    $.ajax({
    type:"POST",
    async:false,
    url :"<%=basePath%>pages/User/getUserObj.action",
    data : myparam,
    dataType : "text",
    success : function(data) {
    alert(data);
    }

    });
    這樣就向後台傳遞了正確的json對象。
    但是現在後台還無法正確接收對象,還需要配置struts.xml,在你的包中,action前面加上攔截器
    <interceptors>
    <interceptor-stack name="myStack">
    <interceptor-ref name="json"></interceptor-ref>
    <interceptor-ref name="defaultStack" />
    </interceptor-stack>
    </interceptors>
    <default-interceptor-ref name="myStack" />
    好了,這樣就應該可以了

    閱讀全文

    與struts2上傳文件json相關的資料

    熱點內容
    vb編程中輸入cls是什麼意思 瀏覽:81
    linuxtime服務 瀏覽:184
    瘋狂安卓講義第二版代碼 瀏覽:420
    老炮兒三小時版本下載 瀏覽:313
    matlab怎麼調試程序 瀏覽:2
    winxp升級win7的危害 瀏覽:496
    網路沒連上卻不可用是怎麼回事 瀏覽:752
    社區版本 瀏覽:738
    怎麼查微信公眾號什麼時候開通的 瀏覽:717
    安裝三菱編程閃退怎麼回事 瀏覽:488
    手機怎麼創建word文件格式 瀏覽:694
    c語言連接資料庫 瀏覽:887
    數據線粉色和白色哪個是正 瀏覽:775
    vb編程應注意什麼 瀏覽:855
    js循環添加控制項 瀏覽:615
    學習計算機網路的作用 瀏覽:235
    access資料庫最新內容怎麼調 瀏覽:203
    上古世紀新版本跑商 瀏覽:267
    iphone5國際漫遊設置 瀏覽:107
    ipodwatch如何安裝app 瀏覽:114

    友情鏈接