Struts2(四)Struts2配置文件的配置
Struts2的常见配置
1.Struts2的配置文件的加载顺序:
每次从客户端发送到请求到服务器都要先从Struts2的核心过滤器StrutsPrepareAndExeccuteFilter,这个过滤器有两个功能:预处理和执行。在预处理中主要就是来加载配置文件的。对应的过滤器中的init方法,而执行是用来执行一组拦截器完成部分功能的,对应的是过滤器的doFilter方法,所以我们如果要去了解Struts2的配置文件的加载顺序,那么我们需要查询过滤器init方法

在init方法中,调用了init的initDispatcher 的方法来加载配置文件,进入到该代码中

我们会发现这个方法又调用dispatcher的init方法。进入到init 方法内部

这一系列的代码就是用来加载Struts的配置文件的
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]
加载用户配置的提供对象
init_FilterInitParameters(); // 【6】
加载 web.xml
init_AliasStandardObjects(); //[7]
加载标准对象。
根据上面的代码我们可以得到配置文件的加载顺序如下
- default.properties
- struts-default.xml
- struts-plugin.xml
- struts.xml ---------配置Action以及常量(*******)
- Struts.properties ------------配置常量
- web.xml ---------------配置核心过滤器及常量
前三个配置文件是Struts2内部配置文件,我们无法修改。能修改的文件是Struts.xml ,Struts.properties ,web.xml配置文件 。这几个配置文件的加载是有一定的顺序的。这三个配置文件都可以修改Struts常量的值。后加载配置文件中的常量值会将先加载的配置文件中常量的值给覆盖。
Action的配置:
Struts2框架的核心配置文件是Struts.xml 文件,该文件用来配置Action 和请求的对应关系
[<package >的配置]
struts2框架的核心组件是Action和拦截器,它使用包来管理Action和拦截器 。每个包就是多个Action 、多个拦截器、多个拦截器引用的集合。在Struts.xml 文件中,package元素用于定义包配置,每个package元素定义了一个包配置。package元素的常见属性,如表所示:

在配置包时:
1.必须指定name属性,就是包的标识。
2。还可以指定一个可选的extends属性,extends 属性值必须是另一个包的name属性值。该属性值通常都设置为struts-default,这样包中的Action就具有Struts2 框架默认拦截器等功能。
3.abstract: struts2还提供了一种所谓的抽象包struts2还提供了一种所谓的抽象包 。为了显示指定一个包时抽象包,可以为该package元素增加abstract="true"属性
4。namespace : 在package 中还有namespace的配置,namespace的属性与action标签的name属性共同决定了访问路径。namespace有如下三种配置。
- 默认名称空间 : 默认的空间名称就是 namespace=""
- 跟名称空间 : 跟名称空间的就是 namespace="/"
- 带名称的名称空间 :带名称的名称空间就是 namespace="/demo1"
不能为: namespace="demo1"
[Action 的配置]
Action 映射是框架中的基本“工作单元”。Action映射就是将一个请求的URL映射到Action 类,当一个请求匹配某个Action名称是,框架就使用这个映射
来确定如何处理请求。在struts.xml 文件中,通过<action>元素对请求的Action和Action类进行配置
<action >元素中共有4个属性,这4个属性的说明如表所示。

默认action请求:
<?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>
<package name="default" namespace="/default" extends="struts-default" >
<!-- 找不到包下的action,会使用Demo2Action作为默认action处理请求 -->
<default-action-ref name="Demo2Action"></default-action-ref>
<!-- method属性:execute -->
<!-- result的name属性:success -->
<!-- result的type属性:dispatcher 转发 -->
<!-- class属性:com.opensymphony.xwork2.ActionSupport -->
<action name="Demo2Action" >
<result >/hello.jsp</result>
</action>
</package>
</struts>
Struts2(四)Struts2配置文件的配置的更多相关文章
- Struts2 更改校验配置文件位置
@(Java)[Struts|Interceptor] Struts2 更改校验配置文件位置 在Struts2中提供的拦截器校验ValidationInterceptor,该校验器中默认的配置文件位于 ...
- Struts2中的 配置文件
struts2中涉及到的配置文件有: web.xml.struts.xml.struts.properties.default.properties.struts-default.xml web.xm ...
- 从struts2.1开始Convention零配置
从struts2.1开始,struts2不再推荐使用Codebehind作为零配置插件,而是改为使用Convention插件来支持零配置,和Codebehind相比,Convention插件更彻底,该 ...
- struts2在web.xml中配置详情
web.xml是web应用中载入有关servlet信息的重要配置文件,起着初始化servlet,filter等web程序的作用. 通常,全部的MVC框架都须要Web应用载入一个核心控制器.那採取什么方 ...
- struts2拦截器interceptor的配置方法及使用
转: struts2拦截器interceptor的配置方法及使用 (2015-11-09 10:22:28) 转载▼ 标签: it 365 分类: Struts2 NormalText Code ...
- Struts2的核心配置文件
Struts2的详细配置: 配置的是struts2的核心配置文件:,在struts2的核心配置文件中主要有三个标签需要进行配置:package,action,result. 1. 配置package标 ...
- struts2中的constant常量配置
struts2中的constant配置详解 本文主要讲解一下struts2中的constant常量配置,内容主要来自于互联网的整理.<?xml version="1.0" e ...
- Struts2基于注解的Action配置
使用注解来配置Action的最大好处就是可以实现零配置,但是事务都是有利有弊的,使用方便,维护起来就没那么方便了. 要使用注解方式,我们必须添加一个额外包:struts2-convention-plu ...
- JavaWeb_(Struts2框架)struts.xml核心配置、动态方法调用、结果集的处理
此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...
随机推荐
- Py3编码解码
Py3编码解码 写的不好请谅解,有问题欢迎指出. python2.x中的解决方案(图片来源于网络) #!/usr/bin/env python # -*- coding: utf-8 -*- ...
- POJ Building roads [二分答案 2SAT]
睡觉啦 #include <iostream> #include <cstdio> #include <cstring> #include <algorith ...
- 关于.NET C#上传大文件的解决办法
1.最近在解决问题的时候遇到如何将视频以及语音和图片上传到阿里云的服务器中.但是遇到一些大文件就导致无法进行上传. 2.在将图片进行上传到阿里云的时候先将文件转化为二进制文件,然后通过文件流 的形式进 ...
- scope_lock与lock_guard区别
lock_guard:更加灵活的锁管理类模板,构造时是否加锁是可选的,在对象析构时如果持有锁会自动释放锁,所有权可以转移.对象生命期内允许手动加锁和释放锁. scope_lock:严格基于作用域(sc ...
- 免费 Https 证书(Let's Encrypt)申请与配置
之前要申请免费的 https 证书操作步骤相当麻烦,今天看到有人在讨论,就搜索了一下.发现现在申请步骤简单多了. 1. 下载 certbot git clone https://github.com/ ...
- Go语言极速入门手册
Github: https://github.com/coderzh/CodeTips /* gotips_test.go: Golang速学速查速用代码手册 Source: github.com/c ...
- Docker Centos7 下建立 Docker 桥接网络
为什么要让docker桥接物理网络? docker默认提供了一个隔离的内网环境,启动时会建立一个docker0的虚拟网卡,每个容器都是连接到docker0网卡上的.而docker0的ip段为172.1 ...
- Vijos 1404 遭遇战
Vijos 1404 遭遇战 背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区 ...
- CEF小白人系列2-DEV环境配置-Windows10+SDK+VS2015
以下资料整理来自CEF官方教学.作者做了翻译和整理.并会以一种重事件操作的方式来一点点入门. 3个问题: 在上一篇内容中我们了解了什么是CEF,能干些什么.必要的物理学习环境. 下面我们也是以带着问题 ...
- 阶乘之和 输入n,计算S=1!+2!+3!+…+n!的末6位(不含前导0)。n≤10 6 ,n!表示 前n个正整数之积。
阶乘之和输入n,计算S=1!+2!+3!+…+n!的末6位(不含前导0).n≤10 6 ,n!表示前n个正整数之积.样例输入:10样例输出: package demo; import java.uti ...