查看StrutsPrepareAndExecuteFilter:(核心过滤器)两个功能 :预处理 和 执行

在预处理功能中 init 方法中会有加载配置文件的代码:

dispatcher.init();

init_DefaultProperties(); // [1]                  ---- 加载org.apache.struts.default.properties.配置的是struts2的所有常量.

init_TraditionalXmlConfigurations(); // [2]       ---- 加载struts-default.xml、struts-plugin.xml、struts.xml

init_LegacyStrutsProperties(); // [3]             ---- 加载用户自定义struts.properties

init_CustomConfigurationProviders(); // [5]       ---- 加载Struts2定义Bean.

init_FilterInitParameters() ; // [6]              ---- 加载web.xml

init_AliasStandardObjects() ; // [7]              ---- 用户自定义Bean

结论:

* default.properties

* struts-default.xml

* struts-plugin.xml

* struts.xml             ---- 配置Action以及常量.(******)

* struts.properties      ---- 配置常量

* web.xml                ---- 配置核心过滤器及常量.

***** 后配置的常量 会 覆盖先配置的常量.

<package>的配置:

* package:包. 不是java中说那个包. Struts2中的包 管理<action>.

* 属性:

* name       :包名.包名是唯一的不能重复的.

* extends    :继承.继承struts-default.(struts-default包中定义结果类型和拦截器.)

* namespace  :名称空间.与<action>标签中的name属性共同决定Action的访问路径.

* 写法:

* namespace有名称:   namespace=”/aa”

* namespace只是一个/: namespance=”/”

* namespace默认的:   namespace没写.

* 有如下配置:

<package name="demo1" extends="struts-default" namespace="/aa/bb/cc">

<action name="demo1" class="cn.itcast.struts2.demo1.StrutsDemo1"/>

</package>

<package name="demo2" extends="struts-default" namespace="/aa/bb">

<action name="cc/demo1" class="cn.itcast.struts2.demo1.StrutsDemo2"/>

</package>

<package name="demo2" extends="struts-default" namespace="/aa">

<action name="bb/cc/demo1" class="cn.itcast.struts2.demo1.StrutsDemo3"/>

</package>

<package name="demo2" extends="struts-default" namespace="/">

<action name="aa/bb/cc/demo1" class="cn.itcast.struts2.demo1.StrutsDemo3"/>

</package>

在页面中<a href=”/aa/bb/cc/demo1.action”>访问</a>

***** 名称空间最大化:访问路径中:/aa/bb/cc/demo1.action 首先将/aa/bb/cc都作为名称空间.demo1作为action的name去查询.

* abstract   :抽象的.用于使其他的包可以继承的.

* <package name="struts-default" abstract="true"> . 所以可以继承struts-default.

<action>的配置:

* action:配置Action类的访问路径.

* 属性:

* name   :名称.与<package>中的namespace属性共同决定访问路径.

* class  :类的全路径.要执行的Action类的全路径.

* method :方法.用来指定Action中执行那个方法的方法名.(默认的值execute)

<result>的配置:

* result:配置Action执行后的页面跳转.

* 属性:

* name   :逻辑视图名称.(不是真实的视图,为真实的视图起了一个别名,在Action中返回这个字符串的别名,从而找到具体页面.)

* type   :跳转的类型.

Action中的默认值:

<package>的namespace的默认值: 什么都没写.

<action>的class的默认值:

* 在struts-default.xml中:

<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />

<result>的name的默认值:

* name默认就是success.

默认的Action的配置和Action的默认处理类:

默认的Action         :访问一个Action.但是这个Action路径写错了.(404的错误.配置一个默认的Action,当找不到Action的时候,让默认的Action来执行.)

* <default-action-ref name=""/>

Action默认处理类      :访问一个Action的时候,路径没有错误.但是class中类的路径写错了或者没写.

* <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />

常量的配置:

修改常量:

* struts.xml         :

* 格式:<constant name="常量名称" value="常量的值"/>

* struts.properties  :

* 格式:常量的名称=常量的值.

* web.xml            :

*   <filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

<init-param>

<param-name>常量名称</param-name>

<param-value>常量值</param-value>

</init-param>

</filter>

Struts2常用的常量:

* struts.i18n.encoding=UTF-8         :解决Struts2中的所有的POST请求的中文乱码.

* struts.action.extension=action,,       :action的访问的后缀名.默认值不是.action或者空(不写后缀名也可以访问.).

* <constant name="struts.action.extension" value="action"/>

* struts.devMode=false                   :解决修改了配置文件之后不需要重启服务器.

* <constant name="struts.devMode" value="true"></constant>

分模块开发的时候

<include file="cn/itcast/struts2/demo1/struts_demo1.xml"/>  整合其他的struts的配置文件.

struts xml  模版

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant> <package name="package1" extends="struts-default" namespace="">
<default-action-ref name="demo2"></default-action-ref>
<default-class-ref class="cn.jiemoxiaodi.demo3.Struts2Demo3"></default-class-ref>
<action name="demo1" class="cn.jiemoxiaodi.demo1.Struts2Demo1"
method="">
<result name="success">/demo1/success.jsp</result>
</action>
<action name="demo2" class="cn.jiemoxiaodi.demo2.Struts2Demo2"
method="">
</action> <action name="demo3">
</action>
</package> <include file="cn/jiemoxiaodi/demo4/struts4.xml"></include>
<include file="cn/jiemoxiaodi/pojodemo/struts_pojo.xml"></include>
<include file="cn/jiemoxiaodi/demo5/struts_book.xml"></include>
<include file="cn/jiemoxiaodi/servletapi/struts_servletapi.xml"></include>
</struts>

struts2配置文件的加载顺序以及 struts.xml package 的配置说明的更多相关文章

  1. 2 Struts2的执行流程&配置文件的加载顺序

    执行流程: 访问前段页面,通过url访问action 访问xml中Struts2核心过滤器,并执行一组拦截器(这组拦截器在struts-default.xml中,实现了部分功能) 通过action配置 ...

  2. dubbo配置文件的加载顺序详解(图示)

    Dubbo配置文件的加载顺序 ​ 在使用apache dubbo.version2.7.3 时,配置文件的加载情况.以provider提供服务者为例. 配置文件 ,以下四个配置文件. 其优先级 app ...

  3. Spring Boot配置文件的加载顺序

    配置文件的加载顺序, 后加载的会覆盖先加载的:也就是properties配置文件的内容会替换掉.yml及.yaml文件的内容

  4. springboot 配置文件的加载顺序

    springboot 配置文件的加载顺序1.在命令行中传入的参数.2. SPRING APPLICATION JSON中的属性. SPRING_APPLICATION—JSON是以JSON格式配置在系 ...

  5. 「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

    前言 有的时候,配置信息是我们无法在开发过程中就能确定的.比如,给客户开发的项目,客户需要根据自身的情况自定义配置,如数据库配置,加密密钥配置等等.这时候,就需要把配置文件放在外面,让用户自定义配置部 ...

  6. linux下/etc/profile /etc/bashrc /root/.bashrc /root/.bash_profile这四个配置文件的加载顺序

    目录 一.关于linux配置文件 二.验证四个配置文件的加载顺序 三.结论 一.关于linux配置文件 1.linux下主要有四个配置文件:/etc/profile ./etc/bashrc ./ro ...

  7. web项目中配置文件的加载顺序

    当一个项目启动时,首先是web.xml: 这里面的配置: 为什么要在web.xml中配置struts的过滤器? 因为一个web项目运行的时需要加载的,或者默认的部分配置都会在web.xml中配置,中间 ...

  8. SpringBoot配置文件优先级加载顺序

  9. struts2配置文件加载顺序

    struts2配置文件加载顺序: struts-default.xml/ struts-plugin.xml/ struts.xml/ struts.properties/ web.xml

随机推荐

  1. SCWS分词扩展在UNIX/LINUX下的安装方法

    <?php/** * 中文分词处理方法 *+--------------------------------- * @param stirng  $string 要处理的字符串 * @param ...

  2. 360chrome,google chrome浏览器使用jquery.ajax加载本地html文件

    使用360chrome和google chrome浏览器加载本地html文件时,会报错,提示: XMLHttpRequest cannot load file:///Y:/jswg/code/html ...

  3. APACHE POI教程 --java应用程序用POI与Excel交互

    POI报表 --用POI与Excel交互 AURISOFT 第一章 POI简介 --Jakata Poi HSSF:纯java的Excel解决方案 在我们实际的开发中,表现层的解决方案虽然有多样,但是 ...

  4. hdu 4960 Another OCD Patient (最短路 解法

    http://acm.hdu.edu.cn/showproblem.php?pid=4960 2014 Multi-University Training Contest 9 Another OCD ...

  5. readline

    注意,向后表示向左,向前表示向右. "\C-f": forward-char 光标向右一个字符 "\C-b": backward-char  光标向左一个字符 ...

  6. Java当中的内存分配以及值传递问题内存解析

    首先必须说明作为Java程序员对于内存只要有大致的了解就可以了,如果你对Java当中的某一个知识点在不需要分析内存分配过程的情况下可以掌握,那就大可不必去研究内存.如果你对知识点已经掌握,那么你应该把 ...

  7. .NET逻辑分层架构总结

    一.基础知识准备: 1.层的原则: (1)每一层以接口方式供上层调用. (2)上层只能调用下层. (3)依赖分为松散交互和严格交互两种. 2.业务逻辑分类: (1)应用逻辑. (2)领域逻辑. 3.采 ...

  8. PHP缓存机制Output Control详解

    开启OB缓存的方式有如下两种: 1. php.ini中开启 output_buffering = 4096 启用了此指令,那么每个PHP脚本都相当于一开始就调用了ob_start()函数,PHP5.5 ...

  9. HDU 2007

    /*杭电ACM ID:2007*/ #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { int in1, in2 ...

  10. nyoj 14 会场安排问题(贪心专题)

    会场安排问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工 ...