當前位置:編程學習大全網 - 行動軟體 - struts和struts2的區別

struts和struts2的區別

Struts2與Struts的區別

從Struts2的發展過程來看,Struts2繼承了Struts與WebWork的血脈,Struts2取兩者之精華,形成新德框架,但是struts2還是更多的繼承了struts的設計思想,並加入了WebWork的優點。在了解Struts2體系之前,讓我們先看看struts2對struts做了哪些修改。

Struts2與struts的不同主要體現在以下幾個方面。

(1) Action類

1》在struts中都是使用抽象類編程而不是接口,因此他要求開發Action類繼承壹個抽象的基類,如DispatchAction等。

2》Struts2則基於接口編程,我們的Action類可以實現壹個Action接口,使可選和定制的服務成為可能。Struts2提供壹個ActionSupport基類去實現常用的接口。更加強大的是,在struts2中Action接口不是必需的,任何有execute()函數的pojo對象都可以用作struts2的Action類來使用。

(2) 線程模式

1》 struts的Action是單例模式並且必須是線程安全的,因為僅有Action的壹個實例來處理所有的請求。單列策略限制了struts Action能做的事,並且要在開發時特別小心,Action資源必須是線程安全的或同步的;

2》 struts2的Action對象為每壹個請求產生壹個實例,因此沒有線程安全問題。

(3) Servlet依賴

1》 struts的Action依賴於Servlet API,當壹個Action被調用時,HttpServletRequest和HttpServletResponse被傳遞給執行方法,例如:

publicActionForward execute(Actionmapping mapping,ActionForm Form,HttpServletRequestrequest,HttpServletResponse response){

}

2》 struts2的Action不依賴與容器,允許Action脫離容器單獨被測試。如果需要,Struts2的Action任然可以訪問初始的request和response。例如下面的這個類MyAction.Java,他可以通過ActionContext對象取得Session值,也可以通過ServletActionContext對象取得request對象。

Publicclass MyAction{

protected Object getSession(String key){

return ActionContext.getContext().getSession(key);

}

protectedHttpServletRequest getRequest(){

return(String)ServletActionContext.getRequest();

}

}

  • 上一篇:辛集市屬於哪個省哪個市
  • 下一篇:壹刀兩斷什麽意思?
  • copyright 2024編程學習大全網