我是新的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>
答案 0 :(得分:4)
差别不大。两者都应该工作 - 前提是您在web.xml中正确映射到struts ActionServlet。
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
传统上,struts使用* .do模式将其servlet从其他servlet和JSP中删除
答案 1 :(得分:1)
“。do”是一个动作扩展。您可以在servlet映射中配置它。当struts解析url时,它正在寻找这样的扩展来区分静态调用和struts动作。然后找到与该URL对应但没有“.do”的映射。但是,如果您的应用程序配置为使用该扩展,您仍然在转发中指定“.do”。如今,这个扩展的含义和以前一样少。 URL rewrite技术完全忽略了该扩展。与
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>/c/*</url-pattern>
</servlet-mapping>
并在上面引用你可以完全忽略它。