Struts 2中實(shí)現(xiàn)Ajax的三種方式
Ajax本質(zhì)上和普通的HTTP請求是一樣的,只不過普通的HTTP請求是給人看的,而Ajax請求是給JS代碼去用的。
所以Ajax請求的頁面一般比普通的HTTP請求的響應(yīng)內(nèi)容還要簡單,可能是一個(gè)頁面的一部分,也可能是xml、json等結(jié)構(gòu)化的數(shù)據(jù),還可能是一個(gè)簡單的字符串。
所以,在Struts 2中使用Ajax,Action一般就不會調(diào)用一個(gè)jsp視圖來顯示了(如果Ajax請求內(nèi)容是頁面的一部分也可能調(diào)用jsp視圖),而是通過一些其他的方式。
下面介紹了三種方法,用于Action實(shí)現(xiàn)Ajax請求。


方法1:依賴Servlet API
在Action的方法中return NONE或return null表示直接用Action來處理,而不需要調(diào)用result,所以在配置文件的action標(biāo)簽中也沒有result標(biāo)簽。
這里直接獲取到Servlet中的HttpServletResponse對象,通過response的輸出流寫一個(gè)字符串,和不使用Struts 2直接用Servlet類似。
方法2:使用result type="stream"
在Struts 2的文檔中推薦了一個(gè)比上一個(gè)方法更簡單的方式,使用type為stream的result。通過這種方法,可以不依賴于Servlet API,所以單元測試會更方便。


在struts配置文件中,result的type設(shè)為stream。其中包含兩個(gè)參數(shù),第一個(gè)是contentType,表示響應(yīng)的類型,如果有中文的話最好設(shè)置一下編碼,第二個(gè)參數(shù)是用來指定Action中的對應(yīng)的輸入流,它的默認(rèn)值就是inputStream,所以可以省略。
方法3:struts 2 json插件
上面兩種方法可以返回的內(nèi)容很隨意,可以是任何字符串。
在很多Ajax請求會用到j(luò)son字符串,因?yàn)樗梢院芊奖愕霓D(zhuǎn)換成JavaScript對象。
使用struts2-json-plugin可以很方便的生成json(用上面的兩種方法調(diào)用json工具生成json也是不錯的選擇,這樣可以不用使用這個(gè)插件)。


在package中extends應(yīng)該改為json-default而不是struts-default,result的type設(shè)為json。
通過瀏覽器打開這個(gè)頁面可以看到這個(gè)json:
{"age":22,"friends":["姚明","林丹"],"name":"xxg"}

總結(jié)
以上所述是小編給大家介紹的Struts 2中實(shí)現(xiàn)Ajax的三種方式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- jQuery ajax請求struts action實(shí)現(xiàn)異步刷新
- 使用struts2+Ajax+jquery驗(yàn)證用戶名是否已被注冊
- 通過Ajax兩種方式講解Struts2接收數(shù)組表單的方法
- JQuery+Ajax+Struts2+Hibernate框架整合實(shí)現(xiàn)完整的登錄注冊
- struts2+jquery實(shí)現(xiàn)ajax登陸實(shí)例詳解
- ajax交互Struts2的action(客戶端/服務(wù)器端)
- ajax+json+Struts2實(shí)現(xiàn)list傳遞實(shí)例講解
- ajax struts2 下拉框賦值(適合所有)
- struts,ajax出現(xiàn)亂碼的解決方法
相關(guān)文章
JAVA使用隨機(jī)數(shù)實(shí)現(xiàn)概率抽獎
這篇文章主要為大家詳細(xì)介紹了JAVA使用隨機(jī)數(shù)實(shí)現(xiàn)概率抽獎,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
Java刪除指定文件夾下的所有內(nèi)容的方法(包括此文件夾)
下面小編就為大家?guī)硪黄狫ava刪除指定文件夾下的所有內(nèi)容的方法(包括此文件夾) 。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12
Java中用POI實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)出到Excel
這篇文章主要介紹了Java中用POI實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)出到Excel,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
Idea打包springboot項(xiàng)目沒有.original文件解決方案
這篇文章主要介紹了Idea打包springboot項(xiàng)目沒有.original文件解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
MyBatisCodeHelperPro最新激活方法(有效方法)
這篇文章主要介紹了MyBatisCodeHelperPro最新激活方法親測有效,非常好用,小編今天以idea2021.2.1為例給大家詳細(xì)講解,需要的朋友可以參考下2022-08-08
java.imageIo給圖片添加水印的實(shí)現(xiàn)代碼
最近項(xiàng)目在做一個(gè)商城項(xiàng)目, 項(xiàng)目上的圖片要添加水?、?添加圖片水印;②:添加文字水印;一下提供下個(gè)方法,希望大家可以用得著2013-07-07
java常用工具類 Reflect反射工具類、String字符串工具類
這篇文章主要為大家詳細(xì)介紹了java常用工具類,包括Reflect反射工具類、String字符串工具類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05

