AJAX是异步JavaScript和XML的缩写。基本上,JavaScript可以发出HTTP请求并直接更新页面的某些部分,而无需通过传统的POST或GET并刷新整个页面。更好的是,一个页面可以包含几个JavaScript同时(异步)请求。
关键点是,当脚本发出“Ajax请求”(XHR)时,服务器不知道它来自一个脚本,并像任何其他请求一样处理它。Ajax如此成功的一个原因是,它可以很好地与现有的服务器技术,包括Struts。
这不是Ajax请求并且是不同的,他是Ajax响应,不是返回整个页面让浏览器显示(或重新显示),Ajax响应将只返回页面的一部分。响应可以采取XML或HTML,或纯文本,另一个脚本或调用脚本可能想要的任何其他形式。
Struts 1和Struts 2都可以返回任何类型的响应。我们不限于转发到服务器页面。
在Struts 1中,您可以执行以下操作:
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中,我们可以对Stream结果做同样的事情。
Struts2 Stream Result Action(“Hello……”可以从回调函数中获得):
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 ByteArrayInputStream("Hello World! This is a text string response from a Struts 2 Action.".getBytes("UTF-8"));
return SUCCESS;
}
}
Struts2配置result操作(基本不变):
<action name="text-result" class="actions.TextResult">
<result type="stream">
<param name="contentType">text/html</param>
<param name="inputName">inputStream</param>
</result>
</action>