0

重複の可能性:
コンテキストのルート名を含めずに相対パスを使用するには?

Tomcat の webapps ディレクトリには、コンテキスト app があり、その WEB-INFO/classes ディレクトリに test という名前のツリーがあり、その下に一連のクラス ファイルがあります。app には、ユーザー入力を収集し、classes/test ディレクトリ内のサーブレットの 1 つを呼び出して HTML 出力を生成することを目的とした html ファイルも含まれています。サーブレットを記述する 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

JSPページを使用している場合<c:url>、Core JSTLのタグにより、デプロイメントコンテキストが任意の絶対URLに自動的に追加されます。したがって、安全に次のように書くことができます。

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

また、action属性で生成されるURLは/ app/doitになります。

于 2013-01-10T02:47:32.513 に答える
0

規律があれば、その必要はありません。/app/form.html/app/doitサーブレットがあると想像してください。ブラウザーの観点から見ると、それらは同じフォルダーにあるため、次のように簡単に言うことができます。

<FORM ACTION="doit">

もちろん、相対パスも同様に機能します。たとえば/app/pages/form.html、次の/app/servlets/doitように言うことができます。

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