`

Struts2的namespace

 
阅读更多

1.先说一个action配置文件里的namespace,看下例

package name="user" namespace="/user" extends="struts-default">
         <action name="logon" class="cn.net.cipe.ots.user.actions.UserAction" method="logon">
            <result name="success">/JSP/main.jsp</result>
            <result name="input">/JSP/login.jsp</result>
            <result name="error">/JSP/login.jsp</result>
        </action>

</package>

 

那么如果在jsp里这样三种写法:

第一种

 <form action="logon.action" >

 .....

 </form>

 

第二种

 <form action="/user/logon.action" >

 .....

 </form>

 

第三种

 <s:form action="logon" namespace="/user" >

 .....

 </s:form>

 

注意:这两种写法:

action="HelloWorld" namespace="/tt" 等价于action="/tt/HelloWorld.action"

 

2.如果在struts.xml中设定某action的命名空间 namespace="/test",如:

<package name="mywork" extends="struts-default" namespace="/test">

将s:form标签中的指向某action的地址设为:

 (a)

<s:form action="test/login.action">

 则生成的相应页面代码为:

<form id="login" onsubmit="return true;" action="test/login.action" method="post">

 当多次执行这一页面时(如每次登陆验证都不通过),则浏览器url地址中的namespace将会重复出现,如:

http://localhost:8080/webAppName/test/test/test/test/login.action

 

 

(b)

<s:form action="/test/login.action">

 生成的相应页面代码为:

<form id="login" onsubmit="return true;" action="/webAppName/test/login.action" method="post">

 此时多次执行这一页面url地址中的namespace也不会重复出现,浏览器url地址为

http://localhost:8080/webAppName/test/login.action,   运行正常.

 

 实例:

 

struts.xml配置

<package name="default" namespace="/" extends="struts-default">
		<action name="struts2/namespace/test">
			<result name="success">/app/namespace/reput3.jsp</result>
		</action>
		
	</package>

	<package name="struts2" namespace="/struts2" extends="struts-default">
		<action name="namespace/test">
			<result name="success">/app/namespace/reput.jsp</result>
		</action>
	</package>
	
	<package name="spring" namespace="/spring" extends="struts-default">
		<action name="namespace/test">
			<result>/app/namespace/reput2.jsp</result>
		</action>
	</package>
	
	
	<package name="/struts2/namespace" namespace="/struts2/namespace" extends="struts-default">
		<action name="test">
			<result>/app/namespace/reput4.jsp</result>
		</action>
	</package>

 jsp代码1:

<s:form action="namespace/test" namespace="/struts2">
	<s:submit value="struts2"></s:submit>
</s:form>

 url为:

http://localhost:8090/ssh2/struts2/namespace/test.action

 

jsp代码2:

<s:form action="namespace/test.action" namespace="/spring" method="post">
	<s:submit value="spring"></s:submit>
</s:form>

 url为:

http://localhost:8090/ssh2/struts2/namespace/test.action

 

jsp代码3:

<s:form action="struts2/namespace/test">
      <s:submit value="struts2-1-1"></s:submit>
</s:form>

url为: namsespace 为空 ,最终url为http://localhost:8090/ssh2/struts2/namespace/test ,url路径加上默认 namespace: /

 

jsp代码4:

<s:form action="struts2/namespace/test.action">
	<s:submit value="struts2-1-2"></s:submit>
</s:form>

 最终url为http://localhost:8090/ssh2/struts2/namespace/test.action

 

jsp代码5:

<s:form action="struts2/namespace/test" namespace="/">
	<s:submit value="struts2-1-3"></s:submit>
</s:form>

 url为:http://localhost:8090/ssh2/struts2/namespace/test.action

 

jsp代码6:

<s:form action="namespace/test" namespace="/hibernate">
	<s:submit value="hib1"></s:submit>
</s:form>

 namespace = /hibernate不存在,url路径不加上 定义的/namcespace,url为http://localhost:8090/ssh2/namespace/test

 

总结:

1、如果jsp标明的namespace不存在,url不会加标明的namespace值;

2、若jsp标明的namespace存在,jsp定义的action加后缀.action,则url前缀则不会添加标明的namespace值;

 

3.Action名称的搜索顺序:

(a)获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action

(b)首先寻找namespace/path1/path2/path3package,如果存在这个package,则在这个package中寻找名字为testaction,如果不存在这个package则转步骤c

(c)寻找namespace/path1/path2package,如果存在这个package,则在这个package中寻找名字为testaction,如果不存在这个package,则转步骤d

(d)寻找namespace/path1package,如果存在这个package,则在这个package中寻找名字为testaction,如果仍然不存在这个package,就去默认的namaspacepackage下面去找名字为testaction(默认的命名空间为空字符串"" ),如果还是找不到,页面提示找不到action

分享到:
评论

相关推荐

    struts2_namespace代码

    Namespace在Struts2中的作用至关重要,它是Action配置的一个关键部分,用于组织和隔离Action,使得一个大型项目中的多个Action能够有序地管理。 Namespace主要功能: 1. **URL映射**:Namespace可以看作是Action的...

    Struts2_Action学习笔记、通配符{1},{2}

    通过上述分析可以看出,Struts2提供了丰富的特性来支持Web应用程序的开发,尤其是通过Namespace和ActionMethod等机制来组织和管理Action,以及利用通配符配置来简化配置文件,大大提高了开发效率和维护性。

    Struts2教学视频

    3. 创建Struts2的配置文件struts.xml,定义Action、包(package)、namespace等。 **三、Namespace** Namespace是Struts2中用于组织Action的一种方式,可以看作是Action的命名空间。它有助于避免Action名称冲突,同时...

    struts2 模块包含

    Struts2是一个非常著名的Java Web框架,用于构建可维护、可扩展且高度模块化的应用程序。在Struts2中,模块化设计是其核心特性之一,它使得开发者可以将应用程序拆分成独立的功能单元,每个单元称为一个模块。这样做...

    一个struts2的例子:彻底解决STRUTS2 错误There is no Action mapped for namespace / and action name login

    前几天在网上下载一个struts2的helloword的例子,那个作者也真够缺德的,搞个错误的程序,害得我查了一天的程序错误。 最后发现竟然是struts.xml被写成啦sturts.xml。 碰见这样的问题先鄙视下提供例子的作者, 再...

    struts2 学习重点笔记

    &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;result name="success"&gt;/WEB-INF/content/hello.jsp &lt;/struts&gt; ``` #### 三、Struts2 实战操作 **3.1 构建 Struts2 工程** - **步骤...

    struts2 ,struts2 demo

    &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;result name="success"&gt;/success.jsp ``` 这段配置表明有一个名为`demo`的Action,对应类为`com.example.DemoAction`,成功处理后跳转到`/...

    struts2ajax项目

    &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;result name="success"&gt;/your_success.jsp &lt;!-- 其他可能的结果 --&gt; ``` 服务器端Action类的执行方法需要处理接收到的请求,并返回相应...

    struts2.ppt struts2.ppt 我们老师发的PPT

    &lt;package name="itcast" namespace="/test" extends="struts-default"&gt; &lt;result name="success"&gt;/WEB-INF/page/hello.jsp &lt;/struts&gt; ``` 这里定义了一个名为“helloworld”的Action,对应类为...

    struts2学习笔记(完美总结)——转自OPEN经验库

    Struts2是一个强大的Java web应用程序开发框架,它遵循Model-View-Controller (MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用。本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与...

    Struts2课堂学习总结

    5. **命名空间(Namespace)**:命名空间是Struts2中组织Action的重要机制,它决定了Action的访问URL。默认为空字符串,可自定义如`/`、`/module1`等,帮助划分不同功能模块的Action。 6. **Action**:Struts2的一...

    struts2初始使用环境配置

    &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;result name="success"&gt;/HelloWorld.jsp &lt;/struts&gt; ``` 编写Action类。Action类是处理用户请求的业务逻辑组件。例如: ```java ...

    Struts2 英文教程

    &lt;package name="test" extends="struts-default" namespace="/tests"&gt; /error.jsp &lt;/struts&gt; ``` 通过这样的配置,当应用程序中发生未捕获的异常时,Struts2会自动跳转到/error.jsp页面,...

    struts2 学习笔记 实战

    本文将深入探讨Struts2的核心概念,包括Namespace、标签、Action以及它们在实际开发中的应用。 一、Namespace Namespace在Struts2中主要用于组织和隔离Action,它决定了Action的访问路径。默认情况下,Namespace为...

    struts2增删改查,struts2分页查询

    &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;result name="success"&gt;/all.jsp &lt;!-- 其他Action配置 --&gt; ``` 以上解析涵盖了Struts2框架中增删改查及分页查询的主要实现方式,通过JSP...

    struts2图片上传并预览

    &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;param name="maximumSize"&gt;10485760&lt;/param&gt; &lt;!-- 设置最大上传文件大小 --&gt; &lt;result name="success"&gt;/success.jsp ...

    struts2学习心得

    本文总结了Struts2的常用方法和经验,涵盖了配置问题、EL表达式、Struts2的架构和Namespace等方面的知识点。 一、配置问题 Struts2的最新版本为GA 2.2.1,需要以下几个类库: 1.commons-fileupload-1.2.1.jar 2....

    struts2与spring2的整合

    3. **配置Struts2**:在struts.xml中,不再直接实例化Action类,而是使用Spring提供的`&lt;action&gt;`标签,通过`class`属性指定Action类的全限定名,同时添加`spring`插件的配置,如`namespace="/struts"`和`default-...

    struts2学习笔记

    &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;result name="success"&gt;/success.jsp ``` 这声明了一个名为`exampleAction`的Action,当用户请求匹配该Action的URL时,Struts2会实例化`...

Global site tag (gtag.js) - Google Analytics