• (一)Struts2 基础


    一、Struts简介

      1.1  历史

    •  虽然Struts 2号称是一个全新的框架,但这仅仅是相对Struts 1而言。Struts 2与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度上来讲,Strut2没有继承Struts 1的血统,而是继承了WebWork的血统。或者说,WebWork衍生出了Struts 2,而不是Struts 1衍生了Struts 2。因为Struts 2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证;而且吸收了Struts 1和WebWork两者的优势,因此,是一个非常值得期待的框架。

      1.2  struts与servlet的区别

          1.2.1  区别一:

    • servlet是单例,线程安全,每次请求都是由第一个请求到来后建立的那个servlet招呼,所以servlet一般没有成员变量;struts2是通过一个servlet负责招待每个到来的线程,并为这个线程向action工厂要一个全新的action,并把它们俩放进一个叫Threadlocal的容器中,直到线程断掉,这些东西才被gc这个收垃圾的收走。所以struts2是多线程的。

          1.2.2  区别二

     

    • servlet中的JSTL和EL对字符串和集合的操作支持很弱,而struts中的OGNL对集合的操作非常强大, 但是OGNL表达式的运行性能没有JSTL和EL高。

          1.2.2  区别三

     

      1.3  体系结构

      体系结构:1、Web浏览器请求一个资源。

      2、过滤器Dispatcher查找方法,确定适当的Action。

      3、拦截器自动对请求应用通用功能,如验证和文件上传操作。

      4、Action的execute方法通常用来存储和重新获得信息。

      5、结果被返回到浏览器。

      1.4  基于servlet的MVC设计模式与基于Struts框架的设计模式

    二、初步使用Struts框架

      2.1  下载

    进入apache的官方网:http://struts.apache.org/download.cgi#struts209 下载struts2的GA完整版,本文下载Struts 2.3.32为例。
    下载完后,解压到本地磁盘,该文件夹包含如下文件结构:
    l apps:该文件夹下包含了struts 2 的示例应用。
    l docs:struts2的相关文档,包含struts2的快速入门、struts2的帮助文档及API文档等内容。
    l j4:该文件夹下包含了让struts2支持JDK1.4的JAR文件。
    l lib:该文件夹下包含了struts2框架的核心类库,以及struts2的第三方插件类库。
    l src:该文件下包含了struts2框架的全部源代码。

      2.2  Struts框架的使用初步:

       A:Apache下载struts.2.1.8.rar包。
        B:进入apps目录,解压空工程。
        C:将struts2的基本jar包拷到工程的lib目录中。


        D:配置web.xml,加载struts2的过滤器

      we.xml:

       <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
    
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    

        E:加载struts的配置文件struts.xml到src目录。

    • 在空工程的appsWEB-INFclasses包里找到struts.xml,并复制这个xml文件到工程的src目录下。

        F:编写Struts中的Action类。并且类中必须有返回值为String的execute方法。

    ActionFirst.java:

    package com;
    
    public class ActionFirst {
        /**
         * 必须要有String的execute方法
         * @return
         */
        public String execute(){        
            System.out.println("将执行execute方法");
            return "index";    
        }
    }
    •     exeucte是用于执行用户请求(Request)和响应用户(Response)的操作。

             用于接收GET与POST的请求。


        G:将Action类配置到struts.xml中。
      

    <struts>
    
        <constant name="struts.enable.DynamicMethodInvocation" value="false" />
        <constant name="struts.devMode" value="true" />
    
        <package name="default" namespace="/" extends="struts-default">
           <action name="xx" class="com.ActionFirst">
           <result name="index">/index.jsp</result>
           </action>
           </package>
    
    </struts>
    • 解析:当url为/xx 时,会执行com.ActionFirst,并调用该Action中的execute方法,该方法返回一个String值为index,再与《result》中的name属性相匹配,匹配到就跳转到/index.jsp页面。


        H:页面访问Action,执行exceute方法,根据execute方法的返回值到Action到result中
        进行名称的匹配,从而请求转发或者重定向到页面。

    结果:



  • 相关阅读:
    正则中的顺序环视和逆序环视
    LeetCode 第 27 场双周赛
    LeetCode 每日一题 198. 打家劫舍
    LeetCode 每日一题 974. 和可被 K 整除的子数组
    LeetCode 每日一题 287. 寻找重复数
    LeetCode 每日一题 4. 寻找两个正序数组的中位数
    LeetCode 每日一题 146. LRU缓存机制
    LeetCode 每日一题 105. 从前序与中序遍历序列构造二叉树
    [转]多线程的那点儿事
    LeetCode 每日一题 5. 最长回文子串
  • 原文地址:https://www.cnblogs.com/shyroke/p/6537698.html
Copyright © 2020-2023  润新知