2012-07-26 40 views
1

在Struts Action類的執行方法,我們有下列四個參數, HttpServletRequest, HttpServletResponse, ActionForm, ActionMappingStruts只支持HttpProtocol嗎?

這是否意味着HTTP以外的任何其他協議不是由支柱支承???我在想!

另外,在Struts v2.x中,我們沒有將這些參數嵌入到execute方法中。這是否意味着Struts支持2.0版本的所有協議?

回答

2

簡而言之,Struts的開發是爲了提供一個更好的warpper,這是基於標準的基於HTTP的web應用程序的開發方式。

框架背後的想法是通過消除其工作的底層HTTP協議的複雜性,使開發更容易和更靈活。

在系統的核心甚至Strut中使用HTTP Request和Repose來爲您執行其功能和其他工作。

更新: 框架後續Servlet規範,因此將支持ServletRequest request, ServletResponse response

你問到Struts2的簽名所以這裏是這個答案,Struts2提供一個乾淨的方法,使基礎,從而使你的行動POJO輕鬆測試並不意味着它不支持Servlet規範,

Struts2已經清理了execute方法簽名,以便刪除您的Acton類的底層Servlet依賴關係,但是它使用一組攔截器來取消HTTP複雜性走出你的行動課堂,並輕鬆地繼續寫下你尼特測試案例。

雖然Xwork的是S2的核心,您可以編寫獨立的應用程序,但不是很好的宣傳其實

+0

作爲這篇出色文章的補充:struts也支持https。 – 2012-07-26 06:36:42

1

Struts是支持更好的方法基於HTTP的Web應用程序的包裝。 在後面它使用基於Servlet的機制。

它也有Servlet API.jar作爲依賴。

每一個Struts Action類擴展Action和默認覆蓋execute

public ActionForward execute(ActionMapping mapping, 
          ActionForm form, 
          HttpServletRequest request, 
          HttpServletResponse response) 

檢查 http://struts.apache.org/1.x/apidocs/org/apache/struts/action/Action.html#execute%28org.apache.struts.action.ActionMapping,%20org.apache.struts.action.ActionForm,%20javax.servlet.ServletRequest,%20javax.servlet.ServletResponse%29

有用於非HTTP請求也的方法。