Namespace将action分成逻辑上的不同模块,每一个模块有自己独立的前缀。使用namespace可以有效的避免action重名的冲突,例如每一个package都可以有自己独立的Menu和Help action,但是事项方式各有不同。Struts2标签带有namespace选项,可以根据namespace的不同向服务器提交不同的package的action的请求。
“/”表示根namespace,所有直接在应用程序上下文环境下的请求(Context)都在这个package中查找。
“”表示默认namespace,当所有的namespace中都找不到的时候就在这个namespace中寻找。
struts2的基本流程
struts2的基本流程,当客户发生请求以后,触发struts2的FilterDispatcher过滤器(默认配置是所有请求都会触发) 。如果请求是以.action结尾, FilterDispatcher会去struts.xml里面查找action元素的name属性配置,找到匹配的,然后运行其class 属性指定的类。
(我的尝试:如果不是以.action结尾,就会出错了:如form无namespace属性,或namespace=“”,则生成的JSP文件里action没有后缀)
在struts2基本流程里是这样说明的,现在补充一点,匹配的不光是name属性,还有package的namespace属性。
定义并生成Action
在一个Struts2应用程序中,一个指向Action的链接通常有Struts Tag产生,这个Tag只需要指定Action的名字,Struts框架会自动添加诸如后缀等的扩展,例如:
CODE:
<s:form action="Hello">
<s:textfield label="Please enter your name" name="name"/>
<s:submit/>
</s:form>
将产生一个如下的链接的请求: http://Hostname:post/appname/Hello.action
在定义Action的名字的时候不要使用. 和 /,最好使用英文字母和下划线。
Struts框架接受请求及匹配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中
关于如何从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,那么选择最后一个执行。
分享到:
相关推荐
### Struts2入门实例教程详解 #### 一、环境搭建与基本配置 在开始学习Struts2框架之前,首先需要确保开发环境的正确搭建。根据提供的文档,所使用的开发工具为MyEclipse6,Web服务器为Tomcat6,Struts版本为...
### Struts2 入门配置知识点详解 #### 一、Struts2简介及环境搭建 - **Struts2概述**:Struts2是一款基于MVC(Model-View-Controller)设计模式的开源Java Web框架,它由Apache软件基金会维护。与Struts1相比,...
本入门案例主要涵盖了Struts2的基础环境搭建和配置文件的使用,帮助初学者快速理解和掌握Struts2的核心概念。 在开始之前,确保你已经安装了Java开发工具包(JDK)和Apache Maven或Apache Ant,这些都是开发Java ...
### Struts2 JSON插件入门知识点详解 #### 1. 依赖包 - **Struts2 必需的 6 个 jar 包** - `commons-fileupload-1.2.2.jar`: 提供了文件上传功能的支持。 - `commons-io-2.0.1.jar`: 用于处理I/O操作,简化输入...
#### Struts2入门案例 入门案例通常涉及到简单的请求处理流程,从创建项目结构到配置web.xml文件,并定义struts.xml中的业务逻辑。以下是对入门案例中几个关键部分的详细介绍: 1. **web.xml配置**: 在Struts2应用...
### Struts2 入门知识点详解 #### 一、Struts2 概述与环境搭建 **1.1 Struts2 简介** - **Struts2** 是一款用于开发Java Web应用的开源框架,它继承和发展了Struts1的思想,但在实现上有了很大的改进。Struts2采用...
这篇入门级教程将帮助初学者理解Struts2的基本概念和工作原理。 在Struts2中,HelloWorld程序是一个标准的起点,它展示了框架的基本配置和控制器的工作方式。首先,我们需要在项目中添加Struts2的依赖库,这通常...
以上就是一个简单的Struts2入门实例。通过这个例子,你可以了解到Struts如何处理用户请求,如何组织Action和Result,以及如何与视图进行交互。随着对Struts框架的深入学习,你可以掌握更多高级特性,如拦截器、国际...
#### 二、Struts2执行流程详解 Struts2的执行流程主要分为以下几个步骤: 1. **用户请求**:当用户通过浏览器发起请求时,请求首先会被送到Struts2的前端控制器`StrutsPrepareAndExecuteFilter`。 2. **过滤器处理...
本教程将引导初学者逐步了解如何入门Struts 2。 **核心组件详解** 1. **配置文件**:Struts 2 的核心配置文件包括`struts.properties`和`struts.xml`。`struts.properties`是全局属性文件,用于存储系统运行时的...
**Struts2第一个入门实例详解** Struts2是一款强大的MVC框架,用于构建Java Web应用程序。这个入门实例将引导我们逐步了解如何配置和使用Struts2框架创建一个简单的Web应用。我们将从创建项目结构、配置Struts2核心...
### Struts2框架详解 #### 一、Struts2框架介绍 Struts2是一个基于MVC模式的开源Java Web框架,它提供了丰富的功能用于构建Web应用程序。与Struts1相比,Struts2的设计思想和架构有着根本的不同。Struts2的核心是...
#### Struts2配置详解 ##### Package - **作用**:用来组织Action,类似于Java中的包的概念。 - **属性**: - `name`:包的名称。 - `extends`:继承的包。默认情况下继承`struts-default`。 - `namespace`:...
### Struts2入门案例详解 #### 一、项目背景与目的 本案例旨在通过一个简单的登录功能演示Struts2框架的基本用法。Struts2是一个用于开发Java Web应用程序的开源框架,它支持多种编程模式,如MVC模式,并提供了一...
### Struts2框架详解 #### 一、Struts2框架简介 Struts2是一个基于Java的Web应用程序开发框架,它遵循MVC(Model-View-Controller)架构模式。相较于Struts1,Struts2在很多方面进行了改进和完善,特别是在控制器...
以上知识点涵盖了Struts2框架的基本概念、搭建步骤以及核心功能的应用,对于初学者来说是一个很好的入门指南。随着实践经验的积累,开发者还可以探索更多高级特性,如类型转换、文件上传下载、防止重复提交等功能,...
### Struts2.0框架搭建详解 #### 一、引言 随着Web应用程序的发展,越来越多的企业选择使用MVC(Model-View-Controller)架构模式来构建应用系统,以提高代码的可维护性和可扩展性。Struts2作为一款基于Java的开源...
### Struts2.0入门示例详解 #### 一、简介 本文将通过构建一个简单的登录系统来介绍Struts2框架的基本用法。Struts2是Apache Struts的一个升级版本,它采用MVC架构模式,使得Java Web应用程序的开发变得更加简单...