帮忙解决一个struts action-mappings 的疑惑

sweetBug 2010-02-22 04:48:06
web.xml:

<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>


<!-- Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

struts-config.xml:

<action-mappings>
<action
path="/logon"
type="org.apache.struts.webapp.example.LogonAction"
name="logonForm"
scope="request"
input="/logon.jsp"
unknown="false"
validate="true" />
</action-mappings>


其中,getServletContext().getContextPath() == "",浏览器输入http://localhost:8080/logon.do,这会请求ActionServlet,然而,ActionServlet是怎么将URI logon.do 映射到上面的那个path 为 '/logon' 的 action 的呢,是直接将URL中的".do"去掉,然后按servlet的方式映射?
烦大侠们赐教!
...全文
126 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sweetBug 2010-02-23
  • 打赏
  • 举报
回复
谢谢!
回复内容太短了!
蛋黄车 2010-02-23
  • 打赏
  • 举报
回复
引用 6 楼 sweetbug 的回复:
也就是将 “.do”截了再与 action path 匹配?

可以这么理解!
sweetBug 2010-02-23
  • 打赏
  • 举报
回复
引用 4 楼 lrbyantai 的回复:
XML code<servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>
这里配置的意思:所有以.do结尾的请求,都被总的Action拦截,然后再根据.do前面的请求内容去struts-config.xml的actioin配置文件中去匹配你请求的是具体的哪一个action(即path属性指定的action,在type属性中的具体实现)

谢谢,那么如果请求的URI为 /logon.do,此请求交由action处理,此action servlet 是否在其 process 方法中将 “/logon.do” 处理成 “/logon”,再与struts-config.xml中的 action path 进行匹配,也就是将 “.do”截了再与 action path 匹配?
蛋黄车 2010-02-23
  • 打赏
  • 举报
回复
在每一个xml文件的第二行一般都有一个*.dtd文件的声明,每一个xml文件中的元素都要符合此dtd文件规定的语法。你必须要遵守dtd文件规定的语法才是一个合法的xml文件。你找到这个dtd文件自己看着理解吧

至于解析xml文件,java中一般是用的jdom
蛋黄车 2010-02-23
  • 打赏
  • 举报
回复

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

这里配置的意思:所有以.do结尾的请求,都被总的Action拦截,然后再根据.do前面的请求内容去struts-config.xml的actioin配置文件中去匹配你请求的是具体的哪一个action(即path属性指定的action,在type属性中的具体实现)

sweetBug 2010-02-23
  • 打赏
  • 举报
回复
引用 2 楼 agump1002 的回复:
org.apache.struts.action.ActionServlet

这个类,将你的请求路径掐头去尾,得到'/logon'这样的字符串,然后到被解析的xml中去找匹配的。

具体的过程很多,留名求详解


好的,谢谢了,我先看看!
AGump1002 2010-02-23
  • 打赏
  • 举报
回复
org.apache.struts.action.ActionServlet

这个类,将你的请求路径掐头去尾,得到'/logon'这样的字符串,然后到被解析的xml中去找匹配的。

具体的过程很多,留名求详解
sweetBug 2010-02-23
  • 打赏
  • 举报
回复
沉了,自己顶一下!!!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧