Java Webアプリケーションのルートに以下の2つのサーブレットとindex.htmlページがあります。 index.htmlページでは、Insertサーブレットを使用してデータを挿入し、ユーザーにデータを取得するためのURL(つまり、http://localhost:8080/12345)を渡します。ユーザーにhttp://localhost:8080/12345をブラウザに入れ、Retrieveサーブレットが呼び出されるようにしたいと思います。index.htmlと "/"サーブレットマッピングの両方をサポートする方法
http://localhost:8080またはhttp://localhost:8080/に入力すると、Retrieveサーブレットが呼び出されます(web.xmlの「/」にマップされます)。 http://localhost:8080/some_data_hereが要求されたときにのみRetrieveサーブレットを呼びたいと思います。これらの要件をサポートするためにサーブレットマッピングを変更する方法はありますか?
index.htmlを
<html>
<body>
<form action = "insert" method = "POST">
Enter Data: <input type = "text" name = "data">
<br />
<input type = "submit" value = "Submit" />
</form>
</body>
</html>
WEB.XML
<?xml version="1.0" encoding="ISO-8859-1" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>Insert</servlet-name>
<servlet-class>com.servlets.Insert</servlet-class>
<load-on-startup>-1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Insert</servlet-name>
<url-pattern>/insert</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Retrieve</servlet-name>
<servlet-class>com.servlets.Retrieve</servlet-class>
<load-on-startup>-1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Retrieve</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
どのように/ USER-ENTERED-DATAにマップしますか?12345は、ユーザーが入力したものに基づいて生成するDB IDです。 index.htmlページにアクセスして、http:// localhost:8080/USER-ENTERED-DATA(つまり/ 12345)を表示する必要があります。 – c12
異なるアクションに同じパス( '/')を使用する場合は、別のサーブレットで処理する場合、URLを分析してどのサーブレットを呼び出すかを決定する追加のサーブレット/フィルタを作成する必要があります(例えば、他の(Retrieve)サーブレットがリスニングしている別のパスにリクエストを転送することによって)。 –