-->

如何延长。做在支柱的URL追加?(How .do extension is appended in

2019-09-16 21:10发布

我是新来的支柱和据我知道。做扩展导致tomcat的调用操作servlet和操作Servlet具有调用特定的动作类资源的过程对象

但让我们假设有一个JSP页面

first.jsp

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="s" %>
 <s:form action="myform">... 

当我们提交此表

在struts.config.xml动作映射被调用,它从那里进行挑选:

<action input="/first.jsp" name="actionformbean" path="/myform" scope="session"
   type="actionclass"/>

每当HTTP://....myform.do遇到,告知操作servlet的资源处理对象调用actionclass

但是如何动作映射关系到servlet映射(如。做在这里给出URL模式?)

我很困惑这个。做,那它是如何添加到URL :(

帮助PLZ谢谢!

Answer 1:

Struts的标准操作servlet映射在web.xml部署描述符中定义。 它是这样的:

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

该servlet-名先前在部署描述符中定义的:

<servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  <init-param>
     ...
  </init-param>
  <load-on-startup>2</load-on-startup>
  ...
</servlet>

URL模式结合结尾的所有URL .do的动作的Servlet。 操作servlet又代表所有调用的负责任的行动。

现在,也有像你提到的一个动作映射:

<action input="/first.jsp" name="actionformbean" path="/myform" scope="session"
   type="actionclass"/>

动作映射具有指定其URL路径。 由于Struts的已经“知道”它叫,否则动作映射本身不能被执行的URL不需要。做后缀。 一旦执行指定的操作,它静静地追加一个。做后缀,因为只有那些后缀将匹配URL - 否则,下一个请求会丢失。



Answer 2:

“感谢您的答复,但你写的是url-pattern的结合与。做结局操作servlet的所有URL。我仍然感到困惑的。做将如何被添加到URL”

.do默认情况下自动附加由Struts框架结构(希望这是被做ActionServlet本身)。 如果要更改扩展名(比如名为.abc),那么你就应该相应地修改动作值( action="actionsomthing.abcd" )。

更正赞赏



文章来源: How .do extension is appended in the URL in struts?
标签: struts1