struts 2 中AJAX的使用及Struts 2 JSON的使用


  這兩天不看到不少人在Struts 2中使用AJAX的方法都是錯的(或者說是過時的),所以想起寫這么一片博客,來告訴大家Struts 2中的AJAX是怎么用的。

  如果大家對Struts 2的文檔很了解,並且有一定的英文文檔閱讀能力,推薦大家去參考Struts 2的官方文檔。

  官方文檔相關內容:

  如果不會閱讀Struts 2的文檔,或者英文閱讀能力有限,可以參考我下面的內容(當然,這里所介紹的只是最簡單的使用方法)。

1. Struts 2中使用AJAX

    Struts 1和Struts 2都能使用如下代碼實現AJAX的使用:

response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Hello World! This is an AJAX response from a Struts Action.");
out.flush();
return null;

    然而這是一種過時的方法,不是不能用,而是不推薦(並且這里面經常會出現一些字符編碼問題,所以並不推薦使用)。

    Struts 2中可以使用InputStream實現:

Action類:

package actions;

import java.io.InputStream;
import java.io.StringBufferInputStream;
import com.opensymphony.xwork2.ActionSupport;

public class TextResult extends ActionSupport {
private InputStream inputStream;
public InputStream getInputStream() {
return inputStream;
}

public String execute() throws Exception {
inputStream = new StringBufferInputStream("Hello World! This is a text string response from a Struts 2 Action.");
return SUCCESS;
}
}

配置文件struts.xml:

<action name="text-result" class="actions.TextResult">
<result type="stream">
<param name="contentType">text/html</param>
<param name="inputName">inputStream</param>
</result>
</action>

  這樣,我們只需要更改Action類中的inputStream值,就能夠實現AJAX輸出啦。

2. Struts 2中使用JSON

  首先,請Struts 2.1.7+的用戶引入下載的Struts 2包集合中的struts2-json-plugin.jar

  Struts 2.1.7一下的用戶,請去下載該Plugin包,改包位置在Google Code上有發布。(現在已經停止更新了,推薦使用新版本Struts 2框架。)

  之后,Action類不需要更改,只需要在struts.xml文件中配置相關內容就可以使用了。(很便利的~)

  配置文件如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"
>

<struts>

<package name="example" extends="json-default">
<action name="JSONExample" class="example.JSONExample">
<result type="json"/>
</action>
</package>

</struts>

   請注意如下幾點:

  • package的extends是“json-default”,如果沒有繼承這個包,則會拋出異常,顯示沒有result type為json
  • result的type請設置為json
  • 前台JavaScript代碼,請使用JSON格式接收。(如jQuery請設置AJAX的dataType為json)

   至此,就可以使用JSON了。如果需要更高級的操作,請自行參考文檔。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM