<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>struts2回顾</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/hello/say" method="post">
username: <input type="text" name="username" value=""/>
<input type="submit" value="提交"/>
</form>
<hr />
<pre>
匹配规则:
第一阶段:匹配路径和action
路径匹配原则,逐级往上匹配,一直匹配到“/”
1. 如果有匹配到,则匹配当前的action name,如果匹配到,则成功,否则进入第二阶段;
2. 如果没有匹配到,则直进入第二阶段;
第二阶段:匹配默认package
直接匹配默认package中配置的action name,匹配到则成功,否则失败;
注意:卧槽,NMB的,还和默认package在struts.xml中的位置有关
建议将默认package放在配置文件最后
struts.xml
/p1/p2 p1p2
/p1 defaultM
/ defaultM
defaultM
</pre>
<hr />
路径匹配,但是action不匹配,走的是默认package(即没有配置namespace的)
<a href="${pageContext.request.contextPath}/p1/p2/defaultM">/p1/p2/defaultM</a><br />
路径不全匹配,action匹配,走的是package namespace=/p1
<a href="${pageContext.request.contextPath}/p1/p3/defaultM">/p1/p3/defaultM</a><br />
路径不全匹配,action不匹配(此时action的name修改成其他的,不是defaultM,defaultM是默认package的action name),走的是默认package
<a href="${pageContext.request.contextPath}/p1/p3/defaultM">/p1/p3/defaultM</a><br />
路径全不匹配,action匹配“/”,走的是“/”?如果默认package在“/”之前,则报错;否则,走“/”,nono是package “/”的action name
<a href="${pageContext.request.contextPath}/p5/p3/nono">/p5/p3/nono</a><br />
路径全不匹配,action匹配默认package,走的是默认package?
<a href="${pageContext.request.contextPath}/p5/p3/defaultM">/p5/p3/defaultM</a><br />
</body>
</html>【struts】struts namespace的配置
最新推荐文章于 2019-03-23 06:04:48 发布
本文深入探讨了Struts2框架中的路径匹配规则,包括路径与action的匹配过程,以及默认package的作用与影响。详细解读了Struts.xml配置文件中的作用与路径匹配策略,同时提供了实际案例进行说明。

2万+

被折叠的 条评论
为什么被折叠?



