zoukankan      html  css  js  c++  java
  • Struts框架

    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的基础,因此必须多加练习呀。
  • 相关阅读:
    MIne FirstBlog
    P6563 [SBCOI2020]一直在你身旁
    P6563 [SBCOI2020]一直在你身旁
    T122085 [SBCOI2020]时光的流逝
    LC 918. Maximum Sum Circular Subarray
    1026 Table Tennis
    LC 1442. Count Triplets That Can Form Two Arrays of Equal XOR
    LC 1316. Distinct Echo Substrings
    LC 493. Reverse Pairs
    1029 Median (二分)
  • 原文地址:https://www.cnblogs.com/wzsblogs/p/4458154.html
Copyright © 2011-2022 走看看