溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Struts2中的Ajax開發方法是什么

發布時間:2021-12-31 09:55:27 來源:億速云 閱讀:189 作者:iii 欄目:編程語言

本篇內容介紹了“Struts2中的Ajax開發方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

首先不談Struts2的原生支持,我們自己寫一個ajax示例,使用異步請求,直接請求action動作:

InfoAction.java

packagecn.codeplus.action;importcom.opensymphony.xwork2.ActionSupport;  publicclassInfoAction extendsActionSupport {privatestaticfinallongserialVersionUID =1359090410097337654L;  publicString loadInfo() {returnSUCCESS;  }  }

InfoAction僅僅是簡單的返回"success"。

index.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><base href="<%=basePath%>"> <title>獲取</title> <script type="text/javascript"src="js/jquery.js"> </script> <script type="text/javascript"> functionloadInfo() {  $("#info").load("loadInfo");  }</script> </head> <body> <input type="button"value="獲取"id="btnGet"onclick="loadInfo()"/> <div id="info"></div> </body> </html>

index.jsp包含一個按鈕,點擊按鈕則會觸發異步請求事件。

struts.xml

<package name="ajaxDemo"extends="struts-default"> <action name="loadInfo"class="cn.codeplus.action.InfoAction"method="loadInfo"> <result name="success">/info.jsp</result> </action> </package>

可見上面的異步請求的結果將會是加載info.jsp,info.jsp只是一個簡單網頁,不列出了。

運行效果如下:

Struts2中的Ajax開發方法是什么

單擊獲取之后:

Struts2中的Ajax開發方法是什么

此時的頁面源代碼:

Struts2中的Ajax開發方法是什么

<div>標簽中嵌套了<title>標簽,不符合規范,其實我們只要吧info.jsp寫的沒有<title>之類的標簽,就不會出現這種情況了。

以上說的異步請求僅適用于請求單個文件,如果我們請求的是動態數據,并且數據需要以JSON格式返回,上面的方法將會顯得力不從心,這是struts2的原生支持就得出馬了。

使用struts2的ajax,必須在項目中引入struts2-json-plugin-2.2.1.jar,在版本2.1.7+都一句綁定在struts2發行包里面了(之前的版本可以在這下載)。記住,要引入struts2-json-plugin-2.2.1.jar。

這次我們使用另一個例子,模擬加載評論:

dto對象,Comment.java

packagecn.codeplus.po;  publicclassComment {  privatelongid;privateString nickname;privateString content;publiclonggetId() {returnid;  }  publicvoidsetId(longid) {this.id =id;  }  publicString getNickname() {returnnickname;  }  publicvoidsetNickname(String nickname) {this.nickname =nickname;   }  publicString getContent() {returncontent;  }  publicvoidsetContent(String content) {this.content =content;  }  }

新的InfoAction.java 

packagecn.codeplus.action;  importjava.util.ArrayList;importjava.util.List;  importcn.codeplus.po.Comment;  importcom.opensymphony.xwork2.ActionSupport;  publicclassInfoAction extendsActionSupport {  privatestaticfinallongserialVersionUID =1359090410097337654L;  privateList<Comment>comments =newArrayList<Comment>();//沒getter and setter方法的屬性不會被串行化到JSON  @SuppressWarnings("unused")  privateString title;//?。?!使用transient修飾的屬性也會被串行化到JSONprivatetransientString content;publicString loadInfo() {  title="123木頭人";  content="你是木頭人,哈哈。";  loadComments();returnSUCCESS;  }/*** 加載留言信息*/  privatevoidloadComments() {  Comment com1 =newComment();  com1.setContent("很不錯嘛");  com1.setId(1);  com1.setNickname("納尼");  Comment com2 =newComment();  com2.setContent("喲西喲西");  com2.setId(2);  com2.setNickname("小強");  comments.add(com1);  comments.add(com2);  }publicList<Comment>getComments() {returncomments;  }publicvoidsetComments(List<Comment>comments) {this.comments =comments;  }publicstaticlonggetSerialversionuid() {returnserialVersionUID;  }publicString getContent() {returncontent;  }publicvoidsetContent(String content) {this.content =content;  }  }  index.jsp還是那個index.jsp。(*^__^*) 嘻嘻&hellip;&hellip;  struts.xml變化挺大:  <package name="ajaxDemo"extends="json-default"> <action name="loadInfo"class="cn.codeplus.action.InfoAction"method="loadInfo"> <result name="success"type="json"></result> </action> </package>

在struts.xml中:

首先,package extends由struts-default轉變為json-default,這是必須的,只用在json-default中才包含下面使用的result type為 json。

然后就是result類型需顯示指明為json,result標簽內,無需指明視圖指向的界面。

***就是運行結果啦:

點擊“獲取”按鈕之后:

Struts2中的Ajax開發方法是什么

可見comments對象和content對象都被串行化到JSON數據了,不知道是不是版本的問題,很多資料都說使用transient修飾的屬性不會被串行化到JSON的。

為了使content對象不被串行化到JSON,在不能舍棄其getter setter方法的時候,我們可以這樣在content的getter方法上面加上注解:@JSON(serialize=false)

...  @JSON(serialize=false)publicString getContent() {returncontent;  }publicvoidsetContent(String content) {this.content =content;  }  ...

這時的結果如下:

Struts2中的Ajax開發方法是什么

@JSON和json類型的result都還有很多可選項,無非就是串行化誰,不串行化誰,返回數據的MIME類型,讀者可以自行參考相關文檔。

“Struts2中的Ajax開發方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女