对于初学者来说struts2的namespace的配置是个疑惑点,配置不好就容易出现找不到action或者相关的页面,今天做个几个简单测试来说明一下namespace的相关知识点:
最初始配置:
<package name="struts2" extends="struts-default">
<action name="FirstActoin" method="execute">
<result name="success">index.jsp</result>
</action>
</package>
这个采用的是struts2的默认命名空间,相当于namespace="";访问action是在浏览器中输入http://localhost:8080:/项目名/FirstAction,就可以访问到index.jsp页面,注意了 这里index.jsp前面没有加上“/”,说明采用的相对路径,这个相对路径是相对于当前浏览器输入的url的,例如浏览器输入的url是http://localhost:8080:/项目名/hello/FirstAction
那个Struts2就会在http://localhost:8080:/项目名/hello/index.jsp这个地址找index.jsp。所以建议显示页面采用绝对路径,这个绝对路径是当前项目的url,再来看一个配置:
<package name="struts2-01" namespace="/" extends="struts-default">
<action name="FirstActoin" method="execute">
<result name="success">/index.jsp</result>
</action>
</package>
这个的命名空间是“/” 其实这个命名空间我一直很疑惑,当你在浏览器中输入http://localhost:8080:/项目名/FirstAction这个url是其实采用就是这个命名空间“/” 那为什么在上一个配置中会正确访问呢,这是由于当strut2找不到“/”这个命名空间时会去默认命名空间中找相关的acton,如果找到响应,如果没有找到的话会出现这个错误信息说是找个不action。
验证我的说法可以采取以下配置
<package name="struts2-01" extends="struts-default">
<action name="FirstActoin" method="execute">
<result name="success">/index.jsp</result>
</action>
</package>
但在浏览器中输入http://localhost:8080/项目名/second.action ,会出现下面的提示There is no Action mapped for namespace / and action name second ,可见采用的就是"/"这个命名空间。这个是由于浏览器会在项目名后自动补上“/”,所以会有以上的结果。
再讲一个很重要的知识点,如果采取以下配置
<package name="struts2-01" extends="struts-default">
<action name="FirstActoin" method="execute">
<result name="success">/index.jsp</result>
</action>
</package>
浏览器中输入http://localhost:8080/项目名/hello/struts2/FirstAction.action这个url,也会正确相应,这是由于当struts2在当前url的命名空间中找不到FirstAction.action时,会自动在http://localhost:8080/项目名/hello这个url下找,如果找不到话,会在默认命名空间中查找,如果找到的话相应,如果没有报错,相信如果上一个配置明白的话也能知道会报什么错了吧。
以上都是本人一些学习中的一些总结,如果有错误认识的话,欢迎改正,互相学习。
分享到:
相关推荐
以下是关于Struts2的一些核心知识点的详细说明: 1. **环境搭建**:要搭建Struts2的开发环境,首先需要配置Tomcat服务器和JDK。接着,将必要的Struts2库文件(jar包)添加到项目的类路径中,通常这包括Struts2的...
### Struts2初步使用总结 #### 一、Struts2原理概述 **1.1 为什么要用Struts2** 在探讨为何使用Struts2之前,我们先简要回顾一下Struts2的一些基本特点: - **模块化设计**:Struts2采用模块化的架构设计,使得...
Struts2是一个强大的Java web应用程序开发框架,它遵循Model-View-Controller (MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用。本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与...
### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...
Struts2是Struts的升级版本,旨在解决Struts1的一些局限性,比如过多的代码编写和单元测试的困难。 首先,Struts2的核心特性在于其强大的Action类和配置文件。Action类是处理用户请求的核心,通过注解或XML配置文件...
### Struts2 学习总结 #### 一、Struts2 概览 Struts2 是 Apache 软件基金会负责维护的一个开源项目,它是一个用于简化 Web 应用程序开发的 MVC(Model-View-Controller)框架。相比于 Struts1,Struts2 在架构上...
### Struts2框架详解:构建高效MVC架构的利器 #### 概述 Struts2是Struts框架的下一代版本,作为模型-视图-控制器(Model-View-Controller,MVC)架构的一种实现,其目标是通过减少XML配置、采用智能约定以及提供...
本文总结了Struts2的常用方法和经验,涵盖了配置问题、EL表达式、Struts2的架构和Namespace等方面的知识点。 一、配置问题 Struts2的最新版本为GA 2.2.1,需要以下几个类库: 1.commons-fileupload-1.2.1.jar 2....
### Struts2技术总结 #### 一、Struts2概述及特点 Struts2作为一款流行的Java Web开发框架,继承了Struts1的优点并进行了大量的改进与创新,使其成为了一个非常值得学习的目标。Struts2相比Struts1,最大的优势...
然后,需要在Struts2配置文件或Action类上添加`@Namespace`, `@Action`, `@Result`等注解,以及`@InterceptorRef("fileUpload")`,启用文件上传拦截器。例如: ```java @Action(value = "upload", results = { @...
以下是关于Struts2的一些关键知识点: **历史背景** Struts2是在2006年发布的,它是基于WebWork框架并结合了Struts 1的优点。Struts2的设计目标是提高开发效率、增强可测试性、简化配置以及提供更多的视图技术。 *...
总结来说,Struts2注解开发通过`struts2-convention-plugin`插件实现了更加简洁、灵活的Java web应用开发方式,降低了XML配置的工作量,提高了开发效率。理解并熟练运用Struts2的注解开发,有助于创建高效、易于维护...
4. **struts-default.xml**: 这是一个默认的配置文件,位于struts2-core库的jar文件中,包含了Struts2的一些基础设置和预定义的拦截器。通常,你需要在struts.xml中导入这个文件,以便使用这些默认配置。 5. **...
<package name="default" namespace="/" extends="struts-default"> <result-type name="json" class="com.opensymphony.xwork2.result.HttpServletResponseResult" default="true"/> <!-- ... --> ...
Struts2的Action类通常继承自`ActionSupport`,这个类提供了默认的返回状态(如SUCCESS、ERROR)和一些常见的功能,如验证、国际化等。Action类的配置可以通过`struts.xml`中的`action`标签完成,如果不指定`class`...
总结,本实例通过Struts2展示了如何实现一个基本的登录功能。Struts2的灵活性和可扩展性使其成为开发Java Web应用的有力工具。通过理解并实践这个实例,你可以更深入地掌握Struts2的工作原理和应用。
总结来说,通过这种方式,我们可以利用AJAX向Struts2 Action传递JSON数组,实现异步数据交互。这在动态更新页面内容、处理表单提交等场景下非常有用。同时,使用JSON作为数据交换格式,使得前后端的数据交换变得更加...