`
wdl123
  • 浏览: 23485 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Struts2入门--namespace属性详解

阅读更多
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入门实例教程详解 #### 一、环境搭建与基本配置 在开始学习Struts2框架之前,首先需要确保开发环境的正确搭建。根据提供的文档,所使用的开发工具为MyEclipse6,Web服务器为Tomcat6,Struts版本为...

    struts2入门配置手把手教.doc

    ### Struts2 入门配置知识点详解 #### 一、Struts2简介及环境搭建 - **Struts2概述**:Struts2是一款基于MVC(Model-View-Controller)设计模式的开源Java Web框架,它由Apache软件基金会维护。与Struts1相比,...

    struts2入门小案例源码

    本入门案例主要涵盖了Struts2的基础环境搭建和配置文件的使用,帮助初学者快速理解和掌握Struts2的核心概念。 在开始之前,确保你已经安装了Java开发工具包(JDK)和Apache Maven或Apache Ant,这些都是开发Java ...

    Struts2 json插件入门指南.pdf

    ### Struts2 JSON插件入门知识点详解 #### 1. 依赖包 - **Struts2 必需的 6 个 jar 包** - `commons-fileupload-1.2.2.jar`: 提供了文件上传功能的支持。 - `commons-io-2.0.1.jar`: 用于处理I/O操作,简化输入...

    Struts2框架笔记

    #### Struts2入门案例 入门案例通常涉及到简单的请求处理流程,从创建项目结构到配置web.xml文件,并定义struts.xml中的业务逻辑。以下是对入门案例中几个关键部分的详细介绍: 1. **web.xml配置**: 在Struts2应用...

    struts2入门

    ### Struts2 入门知识点详解 #### 一、Struts2 概述与环境搭建 **1.1 Struts2 简介** - **Struts2** 是一款用于开发Java Web应用的开源框架,它继承和发展了Struts1的思想,但在实现上有了很大的改进。Struts2采用...

    Struts2入门级HelloWord

    这篇入门级教程将帮助初学者理解Struts2的基本概念和工作原理。 在Struts2中,HelloWorld程序是一个标准的起点,它展示了框架的基本配置和控制器的工作方式。首先,我们需要在项目中添加Struts2的依赖库,这通常...

    struts简单实例详解

    以上就是一个简单的Struts2入门实例。通过这个例子,你可以了解到Struts如何处理用户请求,如何组织Action和Result,以及如何与视图进行交互。随着对Struts框架的深入学习,你可以掌握更多高级特性,如拦截器、国际...

    Struts2技术笔记(个人总结的,都有代码示例)

    #### 二、Struts2执行流程详解 Struts2的执行流程主要分为以下几个步骤: 1. **用户请求**:当用户通过浏览器发起请求时,请求首先会被送到Struts2的前端控制器`StrutsPrepareAndExecuteFilter`。 2. **过滤器处理...

    Struts入门教程

    本教程将引导初学者逐步了解如何入门Struts 2。 **核心组件详解** 1. **配置文件**:Struts 2 的核心配置文件包括`struts.properties`和`struts.xml`。`struts.properties`是全局属性文件,用于存储系统运行时的...

    Struts2的第一个入门实例(一)

    **Struts2第一个入门实例详解** Struts2是一款强大的MVC框架,用于构建Java Web应用程序。这个入门实例将引导我们逐步了解如何配置和使用Struts2框架创建一个简单的Web应用。我们将从创建项目结构、配置Struts2核心...

    struts学习笔记

    ### Struts2框架详解 #### 一、Struts2框架介绍 Struts2是一个基于MVC模式的开源Java Web框架,它提供了丰富的功能用于构建Web应用程序。与Struts1相比,Struts2的设计思想和架构有着根本的不同。Struts2的核心是...

    传智播客struts2框架2016版视频教程笔记

    #### Struts2配置详解 ##### Package - **作用**:用来组织Action,类似于Java中的包的概念。 - **属性**: - `name`:包的名称。 - `extends`:继承的包。默认情况下继承`struts-default`。 - `namespace`:...

    Strut2入门例子

    ### Struts2入门案例详解 #### 一、项目背景与目的 本案例旨在通过一个简单的登录功能演示Struts2框架的基本用法。Struts2是一个用于开发Java Web应用程序的开源框架,它支持多种编程模式,如MVC模式,并提供了一...

    struts2笔记

    ### Struts2框架详解 #### 一、Struts2框架简介 Struts2是一个基于Java的Web应用程序开发框架,它遵循MVC(Model-View-Controller)架构模式。相较于Struts1,Struts2在很多方面进行了改进和完善,特别是在控制器...

    Struts2.1+Spring3.0+JPA1.0 .pdf

    以上知识点涵盖了Struts2框架的基本概念、搭建步骤以及核心功能的应用,对于初学者来说是一个很好的入门指南。随着实践经验的积累,开发者还可以探索更多高级特性,如类型转换、文件上传下载、防止重复提交等功能,...

    Strits2.0的框架的搭建

    ### Struts2.0框架搭建详解 #### 一、引言 随着Web应用程序的发展,越来越多的企业选择使用MVC(Model-View-Controller)架构模式来构建应用系统,以提高代码的可维护性和可扩展性。Struts2作为一款基于Java的开源...

    struts2.0的简单例子

    ### Struts2.0入门示例详解 #### 一、简介 本文将通过构建一个简单的登录系统来介绍Struts2框架的基本用法。Struts2是Apache Struts的一个升级版本,它采用MVC架构模式,使得Java Web应用程序的开发变得更加简单...

Global site tag (gtag.js) - Google Analytics