您的位置:首页 > 运维架构 > Apache

Apache Struts 2的命名空间实战

2015-10-03 11:46 603 查看

Apache Struts 2的命名空间实战

作者:chszs,版权所有,未经同意,不得转载。博主主页:http://blog.csdn.net/chszs

Apache Struts 2的命名空间是一个新概念,它通过为每一个模块分配一个命名空间从而实现多模块的处理。另外,它解决了不同模块下的相同Acion名的名字冲突的问题。

从下面的图我们可以理解URL是怎样匹配Struts 2命名空间的。



一、命名空间的配置

下面我们通过Struts2的命名空间配置实例来说明它是怎样匹配URL和目录的。要说明一点,包名(即package name=”default”)不影响URL匹配结果,它仅仅是一个有意义的名字。

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="SayWelcome">
<result>pages/welcome.jsp</result>
</action>
</package>
<package name="common" namespace="/common" extends="struts-default">
<action name="SayWelcome">
<result>pages/welcome.jsp</result>
</action>
</package>
<package name="user" namespace="/user" extends="struts-default">
<action name="SayWelcome">
<result>pages/welcome.jsp</result>
</action>
</package>
</struts>


Struts 2的Action命名空间映射到目录的结构图如下:



二、JSP页面

我放了三个相同文件名的JSP文件,但是它们分别位于不同的模块。

1)Root -> webapp/pages/welcome.jsp

2)Common module -> webapp/common/pages/welcome.jsp

3)User module -> webapp/user/pages/welcome.jsp

三、工作机制

运行项目,我们分别访问不同的URL,即可实现对不同的命名空间进行访问。

例子1

URL : http://localhost:8080/Struts2Example/SayWelcome.action

这将匹配root命名空间。

<package name="default" namespace="/" extends="struts-default">
<action name="SayWelcome">
<result>pages/welcome.jsp</result>
</action>
</package>




显示的是webapp/pages/welcome.jsp的内容。

例子2

URL : http://localhost:8080/Struts2Example/common/SayWelcome.action

这将匹配common命名空间。

<package name="common" namespace="/common" extends="struts-default">
<action name="SayWelcome">
<result>pages/welcome.jsp</result>
</action>
</package>




显示的是webapp/common/pages/welcome.jsp的内容。

例子3

URL : http://localhost:8080/Struts2Example/user/SayWelcome.action

这将匹配user命名空间。

<package name="user" namespace="/user" extends="struts-default">
<action name="SayWelcome">
<result>pages/welcome.jsp</result>
</action>
</package>




显示的是webapp/user/pages/welcome.jsp的内容。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: