Posted on 2008-07-17 16:54
xan 閱讀(140)
評(píng)論(0) 編輯 收藏 所屬分類:
Java
Struts 框架的核心組件是 ActionServlet。象所有的servlets, 它生存在容器中, 比如Tomcat, Resin, 或者 WebLogic 等。當(dāng)容器啟動(dòng)時(shí),讀入部署描述符 (web.xml),告訴容器要裝入哪些個(gè)servlet。
一個(gè)標(biāo)準(zhǔn)的servlet 設(shè)定是 servlet mapping。 容器使用這個(gè)設(shè)定來決定哪個(gè)請(qǐng)求將被送到哪個(gè)servlet
當(dāng)一個(gè)請(qǐng)求隨著符合Servlet 上下文的路徑組件提交時(shí),容器將其轉(zhuǎn)發(fā)給ActionServlet。不匹配的請(qǐng)求則不轉(zhuǎn)發(fā)到ActionServlet。比如,匹配*.jsp 的請(qǐng)求將直接轉(zhuǎn)發(fā)給容器的 JSP 服務(wù),比如Jasper(如果你使用Tomcat 或者WebSphere 的話)。在應(yīng)用中可以有其他的servlet來處理其他格式的請(qǐng)求路徑。不匹配所有servlet mapping 的請(qǐng)求將直接送給容器默認(rèn)的
web server。
Action 是一個(gè)控制器類,不應(yīng)該用來處理業(yè)務(wù)的核心邏輯。
Action 完成后,它返回一個(gè)ActionForward。如果 ActionForward 為null, ActionServlet假定響應(yīng)產(chǎn)生了,但不做任何事情。否則, ActionServlet 讀入 ActionForward ,重定向或者轉(zhuǎn)發(fā)請(qǐng)求到相應(yīng)的資源。
Struts不僅是線程安全(thread-safe)而且是線程依賴(thread-dependent)的.
Struts 使用輕量的Action 對(duì)象,而不是各個(gè)單獨(dú)的servlet,來對(duì)請(qǐng)求處理響應(yīng)。 Struts 實(shí)例化每個(gè)Action 類一次,并允許其他請(qǐng)求通過原有的對(duì)象線程化。這種核心策略節(jié)省了資源,并提供最大的吞吐性。一個(gè)正確設(shè)計(jì)的應(yīng)用將通過使用一個(gè)單獨(dú)的Action 來路由各種相關(guān)操作來發(fā)揮這種特征。
編寫Action時(shí)要注意不要在不同方法之間共享屬性值,因?yàn)閍ction是多線程的,每個(gè)應(yīng)用的每個(gè)Action類只有一個(gè)實(shí)例.