`

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代码

    以前学习struts2时候,自己练习的代码,可以供初学者参考学习

    Struts2全解Struts2全解

    1、struts2概述 Struts2 软件下载 Struts2 比较重要的类 操作步骤及框架配置 struts运行机制 2、简单的struts2程序 3、struts2配置文件 4、cion主要内容 Namespace、自定义Action、路径问题、通配符、包含模块...

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

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

    struts2 学习笔记 实战

    namespace :对应与项目名称后面的"/"(例如Struts2_0100_Introduction后面的"/") (http://localhost:8080/Struts2_0100_Introduction/) 四、 标签 是用来解决重名的问题,例如当系统的前台和后台都有一个action...

    struts2实例 学生信息管理系统

    struts2实现的学生信息管理系统 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ...

    struts2 模块包含

    NULL 博文链接:https://cdxs2.iteye.com/blog/1926331

    Struts升级到Struts2.3.35

    北京时间8月22日13时,Apache官方发布通告公布了Struts2中一个远程代码执行漏洞(cve-2018-11776)。该漏洞可能在两种情况下被触发,第一,当没有为底层xml配置中定义的结果设置namespace 值,并且其上层动作集配置...

    struts2示例程序

    struts.xml ...&lt;package name="demo" namespace="/mystruts" extends="struts-default"&gt; &lt;result name="positive"&gt;/positive.jsp &lt;result name="negative"&gt;/negative.jsp &lt;/struts&gt;

    Flexigrid与struts2的整合使用说明

    Flexigrid与struts2 说明,还有Flexigrid的使用说明和Flexigrid的实例。Flexigrid的包。

    解决struts2下载异常的jar包 struts2-sunspoter-stream-1.0.jar

    &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;!-- 添加如下内容 --&gt; &lt;result-types&gt; &lt;result-type name="streamx" class="com.sunspoter.lib.web.struts2.dispatcher.StreamResultX"/&gt; ...

    Struts2 学习笔记

    01 Struts2-Action 5 一、 Struts作用: 5 二、 搭建Struts2的运行环境: 5 三、 Namespace 6 四、 标签 6 五、 Action 6 六、 路径问题的说明 8 七、 Action的动态调用方法 8 八、 Action通配符(wildcard)的配置 9 ...

    struts2配置2.5版

    &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;result&gt; /result.jsp &lt;package name="LoginForm" extends="struts-default"&gt; &lt;result&gt; /login.jsp &lt;/struts&gt; &lt;!-...

    深入浅出Struts2(附源码)

    本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...

    Struts2 Convention Plugin中文文档 Annotion

    从struts2.1版本开始,Convention Plugin作为替换替换Codebehind Plugin来实现Struts2的零配置。 • 包命名习惯来指定Action位置 • 命名习惯制定结果(支持JSP,FreeMarker等)路径 • 类名到URL的约定转换 • 包名...

    Struts2中命名空间问题

    是一个简单的struts2中阐明命名空间的实例

    Struts2 2.3.16_doc

    This result uses the ActionMapper provided by the ActionMapperFactory to redirect the browser to a URL that invokes the specified action and (optional) namespace. This is better than the ...

    Struts2帮助```````

    01 Struts2-Action 5 一、 Struts作用: 5 二、 搭建Struts2的运行环境: 5 三、 Namespace 6 四、 标签 6 五、 Action 6 六、 路径问题的说明 8 七、 Action的动态调用方法 8 八、 Action通配符(wildcard)的配置 9 ...

    搭建好的一个struts2环境

    4.建立文件夹需要在src/struts2.xml里添加一句话:&lt;package name="folder1" namespace="/folder1" extends="default"&gt; 5.WebRoot/WEB-INF/jsp目录建立对应的文件夹folder1 6.在包com.test.web.action添加类,比如...

Global site tag (gtag.js) - Google Analytics