Struts原理及環境搭建

來源:互聯網
上載者:User
struts是一個基於MVC的Web開發架構。使用Struts的目的是為了協助我們減少在運用MVC設計模型來開發Web應用的時間。如果我們想混合使用Servlets和JSP的優點來建立可擴充的應用,struts是一個不錯的選擇。那麼學習struts首先就是要理解它的架構實現原理,以及如何搭建它的開發環境。正如上所說,struts是基於MVC的,其架構原理如下:

ActionServlet 是一個中央控制器,核心控制類,它與一般的servlet一樣繼承與HttpServlet。 ActionForm 用於頁面收集資料,其實可以理解為頁面資料的實體類。並且它可以自動轉換成相應的資料類型,如age是int類型,那麼從ActionForm擷取getAge時的類型也會是int類型,而不用以前類似(Integer)request.getAttribute("age")那樣強制轉換了。需要注意的是ActionForm的get、set方法後的名稱必須與頁面中資料名稱相同,且首字母大寫,(如:頁面為age,ActionForm中則為getAge、setAge) Action 是商務邏輯層控制器,傳回型別為ActionForward,他是底層Model的核心控制類,根據商務邏輯來組建表單資料與Model層的交流調用,處理完商務邏輯後返回最終要轉向的頁面資訊ActionForward類。 ActionForward 是封裝了頁面轉向資訊的一個對象,也可以看做是一個實體類。目的是方便資訊傳遞和調用。

Struts環境搭建1. 首先要下載struts的jar包,地址http://struts.apache.org/2. 解壓後將lib檔案夾裡的jar包都加入到項目中3. 在webapps檔案夾中解壓struts-blank.war,將其中的struts-config.xml拷貝到項目中4. 配置web.xml部署ActionServlet。這個格式是相對固定的,所以一般複製即可
<servlet>    <servlet-name>action</servlet-name>    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>    <init-param>        <param-name>config</param-name>        <param-value>/WEB-INF/struts-config.xml</param-value>    </init-param>    <init-param>        <param-name>debug</param-name>        <param-value>2</param-value>    </init-param>    <init-param>        <param-name>detail</param-name>        <param-value>2</param-value>    </init-param>    <load-on-startup>2</load-on-startup></servlet> <servlet-mapping>    <servlet-name>action</servlet-name>    <url-pattern>*.do</url-pattern></servlet-mapping>
5. 配置struts-config.xml部署Action、ActionForm。其中type均為你項目中Action和ActionForm所在包的完整路徑;name可以隨便起,但是Action中的name必須與它用到的ActionForm的name相一致;再有就是action中要添加scope="request"這個屬性,因為scope預設是session,這個可以根據實際情況自己定。
<struts-config>    <form-beans>        <form-bean name="loginForm" type="com.wang.struts.LoginActionForm"></form-bean>        <!-- 可以有多個ActionForm -->    </form-beans>     <action-mappings>        <action path="/login" type="com.wang.struts.LoginAction" name="loginForm" scope="request">            <forward name="success" path="/login_success.jsp"></forward>            <forward name="error" path="/login_error.jsp"></forward>        </action>        <!-- 可以有多個Action -->    </action-mappings></struts-config>

6. 必須繼承Action的類。程式碼範例:

package com.wang.struts; import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping; public class LoginAction extends Action {    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {        LoginActionForm loginActionForm = (LoginActionForm)form;        String username = loginActionForm.getUsername();        String password = loginActionForm.getPassword();        if ("admin".equals(username) && "admin".equals(password)) {            return mapping.findForward("success");        } else {            return mapping.findForward("error");        }    }}

7. 必須繼承ActionForm的類。範例程式碼:

package com.wang.struts; import org.apache.struts.action.ActionForm; public class LoginActionForm extends ActionForm {    private String username;    private String password;    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }}
8. login.jsp、success.jsp、error.jsp這三個頁面略。需要注意的就是login.jsp中的頁面元素要注意與ActionForm中的對應。 好啦,這樣struts的環境架構就基本搭建好了。以上這都是學習Struts的基礎,因此必須多加練習呀。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.