首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

关于Struts2的namespace的一些小结2

2012-08-29 
关于Struts2的namespace的一些总结2? ?对于初学者来说struts2的namespace的配置是个疑惑点,配置不好就容易

关于Struts2的namespace的一些总结2

? ?对于初学者来说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下找,如果找不到话,会在默认命名空间中查找,如果找到的话相应,如果没有报错,相信如果上一个配置明白的话也能知道会报什么错了吧。

以上都是本人一些学习中的一些总结,如果有错误认识的话,欢迎改正,互相学习。

?

?

?

?

?

?

热点排行