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核 ...
随机推荐
- spring boot + vue + element-ui全栈开发入门——前端列表页面开发
一.页面 1.布局 假设,我们要开发一个会员列表的页面. 首先,添加vue页面文件“src\pages\Member.vue” 参照文档http://element.eleme.io/#/zh-CN ...
- LANMP系列教程之MySQL编译安装CentOS7环境
以MySQL5.5.33版本为例 1.准备工作: 1.首先准备好源代码包 2.并且确保已安装好 "开发工具" 包组和cmake编译工具 3.确保安装好ncurses-devel ...
- Linux history命令
history命令主要用于显示历史命令, 重新执行历史命令. Linux系统当你在shell(控制台)中输入并执行命令时,shell会自动把你的命令记录到历史列表中,一般保存在用户目录下的.bash_ ...
- Spring整合JMS(四)——事务管理
原文链接:http://haohaoxuexi.iteye.com/blog/1983532 Spring提供了一个JmsTransactionManager用于对JMS ConnectionFact ...
- C# 使用反射获取界面并传参
// 通过反射创建类库中的实例 try { // 通过反射,获取模块 Assembly assembly = Assembly.LoadFrom(AppDomain.CurrentDomain.Bas ...
- My GitHub
0.引言 利用python开发,借助Dlib库捕获摄像头中的人脸,进行实时特征点标定: 图1 工程效果示例(gif) 图2 工程效果示例(静态图片) (实现比较简单,代码量也比较少,适合入门或者兴趣学 ...
- es6变量声明和解构赋值
/*声明: * 本文内容多为学习借鉴性内容,大部分非原创 * 特别感谢阮一峰的 ECMAScript6 入门,推荐大家学习 */ 一.es5变量声明的不足 1.变量提升和函数声明提升 es5的代码加载 ...
- [译]前端JS面试题汇总 Part 1(事件委托/this关键字/原型链/AMD与CommonJS/自执行函数)
原文:https://github.com/yangshun/front-end-interview-handbook/blob/master/questions/javascript-questio ...
- org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [/Users/lonecloud/tomcat/apache-tomcat-7.0.70 2/webapps/myproject/WEB-INF/classes/cn/lone
解决这个报错的解决办法: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidat ...
- 深入研究Node.js的底层原理和高级使用
深入研究Node.js的底层原理和高级使用