0

サーブレットが正しくマップされない理由がわかりません。

これは web.xml の一部です。

<servlet>
  <servlet-name>InsertServlet</servlet-name>
  <servlet-class>servlets.InsertServlet</servlet-class> 
</servlet> 

<servlet-mapping>
   <servlet-name>InsertServlet</servlet-name>
   <url-pattern>/insert</url-pattern> 
</servlet-mapping>

これにより、次が生成されます: localhost:8080/GestiuneSimpozioane/jsp/insert (データを送信するフォームが jsp フォルダーにあるため) 代わりに、次のものが必要です: localhost:8080/GestiuneSimpozioane/insert

マッピングを変更するにはどうすればよいですか? ありがとう!

4

2 に答える 2

0

「それが生成される」とはどういう意味ですか?

フォームでは、相対パスではなく絶対パスを使用してください。おそらくJSTLの<c:url>タグを使用して、コンテキストなども自動的に含める必要があります。

于 2012-05-31T18:44:30.427 に答える
0

あなたの問題はサーブレットのマッピングにはありません。問題は、HTML フォームでサーブレット URL を指定した方法です。あなたが使用した症状を考えると

<form action="insert">

HTML の相対 URL (つまり、スキームや a で始まらないもの/) は、要求された HTML ページの URL (ブラウザーのアドレス バーに表示される) に対して相対的に解決されます。これはあなたの場合、明らかに/jspサブフォルダーにあります。もちろん、ブラウザは/jspフォルダ内にある URL を解釈します。

代わりにドメイン相対 URL を指定する必要があります。

<form action="${pageContext.request.contextPath}/insert">

${pageContext.request.contextPath}コンテキスト パスを動的に出力するため、HTML は次のように生成されます。

<form action="/GestiuneSimpozioane/insert">

タグを使用してこれを実現することもできます<base>この関連する回答も参照してください。

何らかの理由で代わりにサーブレットをリッスンする必要がある場合は、それに応じて変更してください。HTML でもこれを考慮することを忘れないでください。/jsp/insert<url-pattern><form>

于 2012-05-31T18:49:57.580 に答える