如何从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,那么选择最后一个执行。
上面这几点是我通过多次测试总结出来的,不知道是否概括到了所有可能的情况,纰漏之处,还请指正。
摘自:http://blog.csdn.net/cmtobby/archive/2007/09/06/1775190.aspx
我的总结:
1、form标签最好写成以下两种方式(它们是完全等价的):简单易用
action="HelloWorld" namespace="/tt" çè
action="/tt/HelloWorld.action"
2、form标签:无namespace,一定要加” .action”后缀;
若有namespace,可加可不加” .action”后缀;
若加了” .action”后缀,则Struts框架不会自动添加namespace属性了。(感觉Struts框架是一起添加namespace和后缀的。)
3、 form标签里写namespace=“”和不写 是完全一样的;它们两个和“/”基本一样(还待发掘)。
如果namespace=“/”,则查看JSP页面的代码是 /App/**.action,但在匹配的struts中的action是一样的;namespace=“”和不写,则查看JSP页面的代码是 **.action。
还有一点要说明:(我的理解)
.action的位置只和 struts.xml的命名空间namespace和当前应用程序位置有关,与result中的JSP路径无关;同理,result中的JSP路径也与struts.xml、.action的位置无关。
PS:一点体会:
这些东西,只要会用就可以了,不必深究,因为它只是Struts2里面的一个规定而已,并没有太多的设计思想。但文档里面写得不是很清楚,用的时候一直出问题,所以专门花了点时间查了很多资料,总结在此备忘,也方便其他初学者。
分享到:
相关推荐
### 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应用程序的开发变得更加简单...