day25_Struts2学习笔记_01 (3)

  客户浏览器index.jsp --> Tomcat服务器 --> 我们的应用 --> web.xml --> struts.xml --> HelloAction动作类和sayHello()动作方法 --> success.jsp
  如下图所示:


struts2的体系结构图如下:
九、Struts2的配置文件的加载时机和加载顺序

  加载时机:当应用被tomcat加载的时候,struts2的配置文件就已经被加载过了。
  加载顺序:default.properties --> struts-default.xml --> plugins配置 --> struts.xml --> struts.properties --> web.xml

加载顺序 配置文件名 所在位置 说明
1   default.properties   struts2-core-2.5.16.jar\org\apache\struts2   不能修改  
2   struts-default.xml   struts2-core-2.5.16.jar   不能修改  
3   strtuts-plugin.xml   在struts2提供的插件jar包中,名为struts2-convention-plugin-2.5.16.jar   不能修改  
4   struts.xml   我们的应用中,该文件是web应用默认的struts配置文件   我们修改的:推荐修改这里  
5   struts.properties   我们的应用中,该文件是Struts的默认配置文件   我们修改的  
6   web.xml   我们的应用中,该文件是Web应用的配置文件   我们修改的,可以给过滤器配置参数  

注意:
1、Struts2提供了两种配置的方式。一种是key=value的方式,即使用.properties文件。另一种是xml文件配置。我们推荐使用xml文件(因为它能描述层级关系)。
2、如果多个文件配置了同一个struts2常量,则后一个文件中配置的常量值会覆盖前面文件配置的常量值。

十、Struts2中的常量

  1、常用的常量
    常量定义在了default.properties配置文件中,体现形式都是key=value。所有的struts2应用都会用到这些常量。

常量名 常量值(默认值) 说明
struts.i18n.encoding   UTF-8   应用中使用的编码  
struts.objectFactory.spring.autoWire   name   和spring框架整合有关  
struts.multipart.parser   jakarta   指定文件上传用的组件  
struts.multipart.maxSize   2097152   文件上传总文件大小限制:2M  
struts.action.extension   action   能进入Struts2框架内部的url地址后缀名。多个值用逗号分隔。  
struts.enable.DynamicMethodInvocation   false   是否允许动态方法调用  
struts.devMode   false   是否是开发模式。开发模式:改了配置文件,不需要重启。输出更多的错误信息。开发阶段建议为true。  
struts.ui.theme   xhtml   页面展示用的主题  

  2、在struts.xml中覆盖常量(即修改struts中default.properties定义的常量值)


  3、依次类推,三个文件的配置如下图所示:
十一、Struts2中配置文件元素的详解 1、package元素: package元素:作用是定义一个struts的包,它是把配置文件按照面向对象的思想来管理。分模块开发。
        即在struts2的配置文件中引入了面向对象思想,使用了分包管理。易于管理动作类。便于模块化开发动作类。

    name属性:指定包的名称。注意:包的名称在配置文件中唯一。

    extends属性:指定当前包的父包。它是按照面向对象的思想管理的体现。
            一般情况下需要继承struts-default包,但不是必须的。不过如果不继承的话,将无法使用struts2提供的核心功能。
            struts-default.xml 中定义着 struts-default 这个包。而 struts-default.xml 是在我们的 struts.xml 加载之前加载。
    
  abstract属性:把包声明为一个抽象包。抽象包就是用来被继承的。
            只有没有<action>元素的包,才能被定义为抽象包。

    namespace属性:名称空间。当指定了名称空间之后,访问路径就变成了:
            访问路径 = 名称空间 + 动作名称
        当不指定该属性时,该属性有默认值,默认值是""。注意:不是"http://www.likecs.com/"!!!
        名称空间的搜索顺序:
            第一步:先去找对应的名称空间
                在指定的名称空间下找到了:就执行第二步。
                在指定的名称空间下没找到:按照名称空间结构向上追溯,一直到根名称空间,只要在任何一级找到了,就执行第二步。
            第二步:找动作名称
                先在指定的名称空间下,搜索对应的动作名称:找到了就执行动作类的动作方法。
                在指定的名称空间下没找到对应的动作名称:就前往默认的名称空间下,找动作名称。注意:它只找动作名称。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppdpj.html