今天学习Struts2中的Namespcae部分。
其实这部分比较简单,建立一个web sever 项目,把笔记0100中的struts.xml拷贝进来。如下是完成时的struts.xml,接下来进行讲解。
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- <constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index" />
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="error"/>
</global-exception-mappings>
<action name="index">
<result type="redirectAction">
<param name="actionName">HelloWorld</param>
<param name="namespace">/example</param>
</result>
</action>
</package>
<include file="example.xml"/> -->
<!-- Add packages here -->
<constant name="struts.devMode" value="true" />
<package name="front" namespace="/front" extends="struts-default">
<action name="hell">
<result>
/Hello.jsp
</result>
</action>
</package>
<package name="back" namespace="" extends="struts-default">
<action name="hell">
<result>
/Hello.jsp
</result>
</action>
</package>
</struts>
这其中有两个package 分别命名为 front和back 解决了相同名称的action问题。关于namespace,在第一个package里的namespace为"/front" 在浏览器访问Hello.jsp要输入localhost:8080//Struts2_0200_Namespace/front/hell 要加上namespace的内容。
若namespace为空则没有找到的包均访问这个,即localhost:8080//Struts2_0200_Namespace/hell 或localhost:8080//Struts2_0200_Namespace/XXXXX/hell 均能成功访问。
注意以下两张图的地址。
Tips:如果拷贝别人的项目,有时候更改了项目名称,出现不能访问的情况,但是原来的路径仍然可以访问,原因是没有更改web context-root 在项目的首选项里的myeclipse 的web项目更改。如图。