日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Strut2判断是否是AJAX调用

發布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Strut2判断是否是AJAX调用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


1.???AJAX與傳統Form表單

實際上,兩者一般都是通過HTTP的POST請求。區別是瀏覽器提交Form表單后,期望服務器返回一個完整的HTML頁面。而AJAX調用是由XMLHttpRequest對象(不同瀏覽器可能不一樣)發出,瀏覽器期望服務器返回HTML片段即可,具體是JSON、XML等都沒有要求。返回到瀏覽器后如何使用,也是由JS腳本自己決定的。

?

2. 請求是不是AJAX

那么對于服務器端,如何判斷一個HTTP請求是不是AJAX調用?這需要看HTTP的Header。

?

我們可以通過Header中的x-request-with來判斷。盡管不同瀏覽器發送AJAX請求的對象不同,但是如果使用jQuery發送AJAX請求的話,jQuery內部實現ajax的時候,已經加入了標識。jQuery源碼中是這樣的:xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");

所以,如果項目的前臺頁面都是通過jQuery發送AJAX請求的話,這樣判斷是安全的。

?

下面是HTTP請求攜帶的Header信息。

?

普通Form表單提交

===MimeHeaders ===

accept = */*

referer =http://localhost:8080/user2/toQueryPage.action

accept-language = zh-CN

user-agent = Mozilla/4.0 (compatible; MSIE8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C;.NET4.0E)

accept-encoding = gzip, deflate

host = localhost:8080

connection = Keep-Alive

cache-control = no-cache

?

AJAX調用(IE)

===MimeHeaders ===

x-requested-with = XMLHttpRequest

accept-language = zh-cn

referer =http://localhost:8080/user2/toQueryPage.action

accept = application/json, text/javascript,*/*; q=0.01

content-type =application/x-www-form-urlencoded

accept-encoding = gzip, deflate

user-agent = Mozilla/4.0 (compatible; MSIE8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C;.NET4.0E)

host = localhost:8080

content-length = 57

connection = Keep-Alive

cache-control = no-cache

?

3.???在Action中獲得HTTP請求頭

在Action類中,通過ServletRequestAware接口獲得HttpServletRequest對象,再通過getHeader方法得到我們想要的頭信息。

public abstract class BaseAction<ParamVo extends BaseParamVo, ResultVo extends BaseResultVo>extends ActionSupportimplements ServletRequestAware {private static final String AJAX_RESULT_NAME = "ajaxResult";private static final String XHR_OBJECT_NAME = "XMLHttpRequest";private static final String HEADER_REQUEST_WITH = "x-requested-with";/*** Request對象,用來判斷請求是否是AJAX調用*/private HttpServletRequest request;private ParamVo paramVo;private ResultVo resultVo;@Overridepublic String execute() {String resultPage = SUCCESS;try {resultVo = doExecute(paramVo);}catch (BaseException e) {resultPage = ERROR;}if (XHR_OBJECT_NAME.equals(request.getHeader(HEADER_REQUEST_WITH))) {resultPage = AJAX_RESULT_NAME;}return resultPage;} }


轉載于:https://www.cnblogs.com/xiaomaohai/archive/2012/12/28/6157792.html

總結

以上是生活随笔為你收集整理的Strut2判断是否是AJAX调用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。