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核 ...
随机推荐
- POJ Building roads [二分答案 2SAT]
睡觉啦 #include <iostream> #include <cstdio> #include <cstring> #include <algorith ...
- Centos7安装GitLab
GitLab CE Download Archives gitlab安装调试小记 Gitlab Free Trial GitLab搭建手记 Gitlab社区版的使用 GUI PNG Gitlab升级到 ...
- Windows使用问题总结
1 电脑休眠恢复之后无法识别Wifi无线网络 首先,重启电脑:其次,打开网络和共享中心,点击更改适配器设置:最后,在对应的无线网络连接图标上点击鼠标右键,属性,配置,电源选项,允许计算机关闭此设备以节 ...
- MySQL复制同一个服务器的表结构和表数据
例如,现在服务器上有数据库 dbx 和 dby,dbx中有很多表,要把dbx中的表全部复制到dby,如下操作: 首先: use dby; [复制表结构] CREATE TABLE user LIKE ...
- 插入排序Insertion Sort
插入排序:将一个数据插入到一个已经排好序的有序数据序列中,从而得到一个新的.个数+1的有序数列:插入排序适用于少量数据排序,时间复杂度为O(n^2). 实现思路:1.对于一个无序数组,选取第一个元素, ...
- 微信小程序AES加密解密
微信小程序 其实在调用一些第三方 js的时候 其实没有大家想的那么复杂,无非就是把原生js调用方式 改为微信小程序 js调用方式 废话不多说直接贴代码 其实就是将原生function 或者 对象 ...
- 图书管理系统【JavaWeb:部署开发环境、解决分类、图书、前台页面模块】
前言 巩固Servlet+JSP开发模式,做一个比较完整的小项目. 成果图 该项目包含了两个部分,前台和后台. 前台用于显示 后台用于管理 该项目可分为5个模块来组成:分类模块,用户模块,图书模块,购 ...
- pinvoke 数据交互笔记
intptr to array string string[] _outputStrArray=null; int channelCount = 0;///返回数组大小 In ...
- 使用commons-csv简单读写CSV文件
文章首发于我的github博客 需求 客户的开发测试环境将做迁移.因此需要对zookeeper上的重要的数据以CSV文件格式做备份. 本文通过Apache的commons-csv操作CSV文件.官网地 ...
- Linux CentOS 安装MySql以及搭建MySql主从复制
前言 在之前的博客中,有过几篇都写了关于mysql在linux下的搭建教程,可能以后还会再写,但是又不想重复在写, 于是便想单独将此抽出来,单独写成一篇博客,并详细记录一些安装过程以及遇到的问题解决办 ...