struts2配置详解:
Struts2中的配置文件
Web.xml----配置struts2过滤器
Struts.xml-----主配置文件 配置action信息
Struts-default.xml默认配置
Struts.propertis---属性配置
Struts-plugin.xml框架的插件配置文件
Struts2常量的配置:
可以在上面的五个文件中配置(由于struts-default.xml和struts-plugin.xml是只读文件,位于jar包中,故不在这两个文件中修改和配置用户自己的常量)
常量配置的优先级:web.xml>struts.propertis>struts.xml,即常量在三个文件中都配置了,以优先级高的文件配置为准
下面以编码常量配置为例说明:
在struts.xml中配置:<constant name="struts.i18n.encoding" value="UTF-8"/>,我们修改value值来配置
在struts.propertis中配置:struts.i18n.encoding=utf-8
在web.xml中配置:这里是配置在过滤器中的:代码如下
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
<init-param>
<param-name>struts.i18n.encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
常见的常量配置见 http://xiaolaogong.iteye.com/blog/470330
建议采用struts.propertis文件配置常量(个人习惯)
Struts.xml中namespace的使用:
Namespace将action分成逻辑上的不同模块,每一个模块有自己独立的前缀(前缀名字namespace)。使用namespace可以有效的避免action重名的冲突,特别是多人开发中
Struts2标签带有namespace选项,可以根据namespace的不同向服务器提交不同的package的action的请求。
“/”表示根namespace,所有直接在应用程序上下文环境下的请求(Context)都在这个package中查找。
“”表示默认namespace,当所有的namespace中都找不到的时候就在这个namespace中寻找。
struts2的基本流程,当客户发生请求以后,触发struts2的FilterDispatcher过滤器(默认配置是所有请求都会触发) 。如果请求是以.action(可以根据个人习惯在struts.propertis文件中配置后缀常量如:.do)结尾, FilterDispatcher会去struts.xml里面查找action元素的name(匹配的不光是name属性,还有package的namespace属性属性配置),找到匹配的,然后运行其class 属性指定的类。
前台
<s:form action="Hello">------------------<=><form: action="Hello.action">
<s:textfield label="Please enter your name" name="name"/>
<s:submit/>
</s:form>
将产生一个如下的链接的请求: http://Hostname:port/appname/Hello.action
在定义Action的名字的时候不要使用. 和 /,最好使用英文字母和下划线。(可以在struts.propertis中配置action常量,指定action的命名规则)
每当struts2框架接受到一个请求的时候,它会去掉Host,Application和后缀等信息,得到Action的名字,例如如下的请求将得到Welcome这个Action。
http://www.planetstruts.org/struts2-mailreader/Welcome.action
Struts2在匹配一个action的时候,先到它指定的命名空间中去找,如果没有再到这个默认的命名空间中去找。
Struts2还支持根命名空间(“/”),当一个request直接请求context path下面的资源时,struts2会首先到根命名空间下去寻找匹配的action,例如请求是http://server/myapp/bar.action,那么我们首先会去”/”命名空间下去寻找这个action。
关于如何从URI映射到一个action中:
1.获得请求路径的URI,例如url是:http://server/myapp/path1/path2/path3/test.action
2.首先寻找namespace为/path1/path2/path3的package,如果存在这个package,则在这个package中寻找名字为test的action,若找到则执行,否则报错;如果不存在这个package则转步骤3;
3.寻找namespace为/path1/path2的package,如果存在这个package,则在这个package中寻找名字为test的action,若找到则执行,否则报错;如果不存在这个package则转步骤4;
4.寻找namespace为/path1的package,如果存在这个package,则在这个package中寻找名字为test的action,若找到则执行,否则报错;
如果仍然不存在这个package,就去namaspace为空字符串的package下面去找名字为test的action,如果还是找不到,页面提示找不到action。
这里有几点特殊的情况要说明一下,如下所示:
1.如果匹配到了多个package,比如上述流程中有多个namespace为/path1/path2/path3
的package,此时按照package出现的顺序从前向后查找action,直至找完为止。(执行最后一个)
2.如果在一个package中有多个name属性相同的action,那么执行最后一个action。比如上述流程中,有一个namespace为/path1/path2/path3的package,它里面含有多个名字为test的action,那么选择最后一个执行。
Package:
Package的可以使用的属性: 属性
|
是否必须
|
说明
|
name
|
是
|
Package的表示,为了让其他的package引用
|
extends
|
否
|
从哪个package继承行为
|
namespace
|
否
|
参考Namespace配置说明
|
abstract
|
否
|
定义这个package为抽象的,这个package中不需要定义action
|
Abstract下面不允许出现action的配置:如struts-default.xml
|
<!--EndFragment-->
分享到:
相关推荐
根据给定的文件信息,以下是对Struts2学习笔记中涉及的关键知识点的详细解析: ### Struts2框架概览 #### MVC模式的理解与演进 Struts2是基于MVC(Model-View-Controller)模式设计的一种Java Web开发框架。在MVC...
本笔记将全面总结Struts2的核心概念、主要功能以及实际开发中的应用。 一、Struts2概述 Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并解决了其存在的问题,如性能和灵活性。Struts2的核心是...
Struts2是一个强大的Java web应用程序开发框架,它遵循Model-View-Controller (MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用。本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与...
### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...
张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置方式以及实战技巧。 首先,让我们深入了解Struts2的核心特性。Struts2是MVC(Model-View-...
### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...
struts2学习笔记struts2学习笔记struts2学习笔记
### Struts2学习笔记知识点详解 #### 一、Struts2框架的基本引入步骤 ##### 1. 导入Struts2相关Jar包 在引入Struts2框架时,首先需要将Struts2的相关Jar包导入到项目的类路径中。这些Jar包通常包括核心库以及其他...
struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换
### Struts2学习笔记之文件上传与Ajax开发 #### Struts2文件上传 **文件上传简介** 文件上传是Web应用中常见的功能之一,Struts2框架内置了对文件上传的支持,使得开发者能够轻松地实现这一功能。为了确保文件...
13. ** strut2四天笔记**:这份学习笔记可能涵盖了以上所有知识点,包括如何创建Action,配置struts.xml,使用OGNL表达式,处理异常,以及实践中的各种技巧和最佳实践。 在四天的学习过程中,你应该通过实践和理解...
Struts2是一个强大的MVC(Model-View-Controller)框架,它在Java Web开发中扮演着重要的角色。本文将深入探讨Struts2的核心概念,包括Namespace、标签、Action以及它们在实际开发中的应用。 一、Namespace ...
structs2很详细的学习笔记,structs2的建造,工作原理,例子,逐步讲解,纯文字的
在Struts2中,学习笔记通常会涵盖以下几个关键概念: 1. **源代码查看和Javadoc**:开发者可以通过查看源代码来理解Struts2的工作原理,而Javadoc则提供了API文档,帮助理解类和方法的功能。 2. **包(Package)和...