接触Struts2--理解Struts.xml标签

<struts> 为根标签 没什么含义

<package>代表一个模块,模块里可以放多个action

属性name为模块的名称(唯一);

属性extends="struts-default"实际上是把 package为struts-default中的所有东西 继承过来。 这里面的东西是struts2运行的最基本的东西

属性namespace 决定其url 如:

<struts>
	<package name="helloworld" namespace="/" extends="struts-default">
		<action name="helloworldaction" class="cn.hpy.structs.action.HelloWorldAction">
			<result name="index">index.jsp</result>
		</action>
	</package>
</struts>
中 url为http://localhost:8080/day1_struts/helloworldactioin.actoin 红色斜杠为namespace(根目录:WebRoot);


如果改namespace=“/base”;

其url为http://localhost:8080/day1_struts/base/helloworldactioin.actoin .但是也会报错,它会以为index.jsp在/base文件夹下面。


小结:如果namespace为 "/",那么紧接着就该跟action中的name值(名称)。

但是/base后面加任何/abcdefgh...都能请求到action

原因:

查找规则确定的是 先查找/base/a下的helloworldaction.

再去查找/base下的hellloworldaction;


要解决这个 就需要在webroot下创建一个base文件夹


额外:

要解决继承功能也需要靠namespace 如下

<struts>
	<package name="helloworld" namespace="/" extends="struts-default">
		<action name="helloworldaction" class="cn.hpy.structs.action.HelloWorldAction">
			<result name="index">index.jsp</result>
		</action>
	</package>
	<package name="abc" namespace="/abc" extends="helloworld">
	</package>
</struts>

访问url为http://localhost:8080/day1_struts/abc/helloworldactioin.actoin 就是通过 abc包去访问的
阅读更多
个人分类: javaweb
上一篇接触Struts2 第一个例子
下一篇接触Struts2--理解struts.xml标签(二)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭