Struts2中关于Action的namespace在很多地方出现,如struts.xml、form标签等等,有些莫名其妙的错误就是由于 namespace设置错误造成的。如无法找到匹配的Action,访问不了result指定的页面等等。
namespace的作用是定义访问Action的url,在不同的namespace中可以定义同名的action,不同的包可以共享同一个 namespace,可以通过namespace控制action的访问。
第一个问题,在<s:form>标签中如何指定namespace,是否必须指定namespace。
如果你访问的jsp路径与action的namespace重合,那么并不需要指定namespace,struts2会首先自动寻找跟你jsp路径相同 的namespace,如果没有会寻找默认namespace。
如果form标签中没有指定namespace,那么会使用jsp路径作为namespace,在struts.xml中寻找action。如果form 标签中指定了namespace,那么直接使用指定的namespace查找action。
例子:
访问URL="http://localhost:8080/struts2/test1/test1.jsp",中"/test1"为Web应用程序下 的访问路径,如果在test1.jsp中的form标签中没有指定namespace,那么默认action的namespace为"/test1",如 果test1.jsp中设置了form标签的namespace<s:form namespace="/mySpace"/>,那么action的namespace则为"/mySpace"。
第二个问题,在struts.xml的<package>标签中如何指定namespace
在<package>中指定了namespace,不仅为action提供了namespace,也同时规定了result返回结果的路径。 在result中可以使用绝对路径和相对路径对返回结果进行配置,绝对路径以"/"开头,代表了Web应用程序上下文的根目录,相对路径不以"/"开头。 绝对路径不受Action的namespace影响,而相对路径则以Action的namespace为根路径。
P.S. 在result返回结果时,如果采用默认namespace,并且返回结果在根目录下,也请使用绝对路径,不要使用相对路径。否则当form中的 namspace无法匹配struts.xml中的namespace,那么会在默认namespace中找,如果找到的result返回结果采用相对路 径,那么会使用form中的namespace作为根路径继续访问。
例子:
jsp1中<s:form action="test1" namespace="mySapce"/>,jsp1访问路径为http://localhost:8080/jsp1,而struts.xml 中不存在namespace为mySpace的action,那么当访问jsp1时,返回的结果为http://localhost:8080 /mySpace/jsp1
相关推荐
Namespace在Struts2中的作用至关重要,它是Action配置的一个关键部分,用于组织和隔离Action,使得一个大型项目中的多个Action能够有序地管理。 Namespace主要功能: 1. **URL映射**:Namespace可以看作是Action的...
在Struts2中,模块化设计是其核心特性之一,它使得开发者可以将应用程序拆分成独立的功能单元,每个单元称为一个模块。这样做有助于提高代码的复用性和可测试性,同时简化了大型项目的开发和管理。 标题“Struts2 ...
在Struts2中,拦截器(Interceptors)扮演着核心角色,增强了框架的功能和灵活性。这篇文章将深入探讨Struts2拦截器的概念、工作原理以及如何在实际应用中使用它们。 **一、什么是Struts2拦截器** 拦截器是基于AOP...
OGNL是Struts2中的默认表达式语言,用于在Action和视图之间传递数据。例如,`${user.name}`可以获取User对象的name属性。 **7. Struts2的注解** 除了XML配置外,Struts2还支持使用注解进行配置,使得代码更加简洁。...
在Struts2中,所有的Action调用都是通过`ActionProxy`来完成的。 通过以上内容,我们可以看到Struts2是一个功能强大且易于使用的Java Web开发框架,它简化了Web应用程序的开发过程,使开发者能够更专注于业务逻辑的...
在Struts2中,使用通配符优化配置是实现这一目标的有效手段。通配符允许开发者以一种更加灵活的方式定义Action,避免了为每一个Action单独编写配置项的繁琐工作。 首先,我们来理解一下什么是通配符。在Struts2的...
在开始使用Struts2之前,我们需要先进行环境配置。以下将详细介绍Struts2的初始使用环境配置步骤。 首先,确保你已经安装了Java Development Kit (JDK)。JDK是开发Java应用的基础,你需要至少JDK 1.6或以上版本来...
在Struts2中使用Tiles组件,可以更有效地管理和构建动态Web应用的用户界面。 首先,我们需要理解Tiles的基本概念。Tiles是一个视图框架,它的核心思想是页面模板和组合。通过定义模板,我们可以创建一个基本的布局...
Struts2 框架中,Action 组件可以通过多种方式接收参数,这些方式包括使用 Action 的属性、使用 DomainModel 和使用 ModelDriven。下面将详细介绍这些方法: 使用 Action 的属性接收参数 在 Struts2 中,可以使用 ...
本压缩包提供了在Struts2中使用JSON所需的全部jar包,特别适用于支持struts2.18及更高版本的应用,确保了良好的向下兼容性。 首先,我们需要了解JSON(JavaScript Object Notation)的基本概念。JSON是一种数据交换...
- **优势**:使用 Struts2 可以显著提高开发效率,因为它能够处理很多基础任务,如数据接收、类型转换、验证等。 **1.2 Struts2 架构** - **MVC 架构**:Struts2 采用经典的 MVC 架构,分为模型(Model)、视图(View)...
### Struts 2中实现CRUD操作详解 #### 一、引言 CRUD操作是软件开发中最常见的数据处理方式之一,它代表了对数据进行的四种基本操作:创建(Create)、读取(Read)、更新(Update)与删除(Delete)。在企业级应用开发中,...
此外,为了更好地展示数据,可能还需要在Struts2中使用Interceptor(拦截器),例如,`params`拦截器用于将请求参数绑定到Action,`validation`拦截器负责验证表单数据,`workflow`拦截器管理Action的生命周期。...
Namespace在Struts2中主要用于组织和隔离Action,它决定了Action的访问路径。默认情况下,Namespace为空字符串,这意味着任何没有明确Namespace的Action都可以被全局访问。Namespace可以设置为“/”或“/xxx”或“/...
首先,为了在Struts2中使用Ajax和JSON,我们需要引入以下库: 1. Struts2的核心库:`struts2-core.jar` 2. Struts2的JSON插件:`struts2-json-plugin.jar` 3. JSON处理库:`json-lib.jar`(通常在Struts2的JSON插件...
1. **创建自定义标签**:在Struts2中,自定义标签是通过实现`org.apache.struts2.views.jsp.TagSupport`接口来创建的。你需要创建一个Java类,继承这个接口,并实现相关方法。例如,你可以创建一个名为`PagingTag`的...
5. **命名空间(Namespace)**:命名空间是Struts2中组织Action的重要机制,它决定了Action的访问URL。默认为空字符串,可自定义如`/`、`/module1`等,帮助划分不同功能模块的Action。 6. **Action**:Struts2的一...
此外,OGNL(Object-Graph Navigation Language)表达式语言被广泛应用于Struts2中,用于访问和操作对象图,提高了代码的灵活性和表达力。 6. **Action调用与结果返回**:在Struts2中,Action的调用通过配置文件中...
在Java Web开发中,Hibernate和Struts2是两个非常重要的框架。Hibernate是一个对象关系映射(ORM)框架,它简化了数据库操作,而Struts2则是一个基于MVC(Model-View-Controller)设计模式的行动驱动框架,用于构建...
7. **异常处理**:学习如何在Struts2中处理异常,如使用全局异常拦截器。 8. **国际化和本地化**:如果案例涉及,了解如何在Struts2中实现多语言支持。 通过深入学习和实践这个案例,你可以更全面地理解和掌握...