0

可能重复:
如何使用相对路径而不包括上下文根名称?

在我的 Tomcat webapps 目录中,我有一个上下文 app,它在其 WEB-INFO/classes 目录中包含一个名为 test 的树,其下有一堆类文件。app 还包含一个 html 文件,其目的是收集用户输入,然后调用 classes/test 目录中的一个 servlet 以生成 HTML 输出。描述 servlet 的 web.xml 如下:

<servlet>
  <servlet-name>foo</servlet-name>
  <servlet-class>test.DoIt</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>foo</servlet-name>
  <url-pattern>/doit</url-pattern>
</servlet-mapping>

html文件的主体是

<FORM ACTION="/app/doit">
  First Parameter: <INPUT TYPE="TEXT" NAME="param1">
  <CENTER><INPUT TYPE="SUBMIT"></CENTER>
</FORM>

这一切都有效。但是,必须在 html 文件的表单操作中指定应用程序的名称似乎有些错误。有没有办法避免这种情况,或者有人可以向我解释为什么你应该这样做是有道理的?谢谢。

4

2 回答 2

0

如果你有纪律,你不必这样做。想象一下拥有/app/form.html/app/doitservlet。由于从浏览器的角度来看,它们位于同一个文件夹中,您可以简单地说:

<FORM ACTION="doit">

当然相对路径也可以,例如,/app/pages/form.html/app/servlets/doit可以说:

<FORM ACTION="../servlets/doit">
于 2013-01-09T19:13:00.717 回答
0

如果您使用 JSP 页面,<c:url>Core JSTL 的标记会自动将部署上下文添加到任何绝对 URL。所以你可以安全地写:

<FORM ACTION="<c:url value="/doit"/>">

属性中生成的 URLaction将是/app/doit

于 2013-01-10T02:47:32.513 回答