3

我是新的 java struts 框架。但我想问一个问题。

struts.xml路径中.do就像"/AddReq.do" 或路径只是名称一样"AddReq"

"/AddReq.do"和有什么区别"AddReq"

例如

<action path="/AddReqPage"
type="...actions.AddReqPageAction">
        <forward name="success" path="AddReq" /> 
        <forward name="failure" path="/bos.jsp" />
</action>
<action path="/AddReq"
type="...actions.AddReqAction"
name="AddReqForm" validate="true"
scope="request">
        <forward name="success" path="/AddReqDetail.do" />
        <forward name="hata" path="AddReq" />
        <forward name="failure" path="/bos.jsp" />
</action>
4

2 回答 2

4

差别不大。两者都应该工作 - 只要您在 web.xml 中正确映射到 struts ActionServlet。

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

按照惯例,struts 使用 *.do 模式将其 servlet 与其他 servlet 和 JSP 区分开来

于 2013-02-21T18:31:20.087 回答
1

“.do”是一个动作扩展。您可以在 servlet 映射中对其进行配置。当 struts 解析 url 时,它正在寻找这样的扩展来区分静态调用和 struts 动作。然后找到与该 URL 对应但没有“.do”的映射。但是,如果您的应用程序配置为使用该扩展名,您仍然需要在转发中指定“.do”。如今,这个扩展的意义不如以前了。URL 重写技术完全忽略了该扩展。和

<servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>/c/*</url-pattern>
</servlet-mapping>

和上面的参考你可以完全忽略它。

于 2013-02-21T19:27:35.507 回答