如何同时支持index.html和“/”Servlet映射
问题描述:
我在Java Web应用程序的根目录下有两个servlet和一个index.html页面。 index.html页面收集一些数据,使用插入servlet插入它,然后为用户提供一个URL来检索数据(即http://localhost:8080/12345)。我希望用户能够将http://localhost:8080/12345放在浏览器中,并让Retrieve servlet被调用。如何同时支持index.html和“/”Servlet映射
现在发生的情况是,当我输入http://localhost:8080或http://localhost:8080/时,Retrieve servlet被调用(它被映射到web.xml中的“/”)。我只想在请求http://localhost:8080/some_data_here时调用Retrieve servlet。任何想法如何修改servlet映射以支持这些要求?
的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>
答
怎么样的Retrieve
servlet作为你说的不映射到/
但/12345
,然后重定向后的请求Insert
servlet到/12345
。
您将如何映射到/ USER-ENTERED-DATA,因为12345是基于用户输入的数据库ID。我需要留在index.html页面上并显示http:// localhost:8080/USER-ENTERED-DATA(即/ 12345) – c12
如果您使用相同的路径('/')执行您想要的不同操作然后你必须建立一个额外的servlet /过滤器,分析URL,然后决定调用哪个servlet(例如,通过将请求转发到另一个路径('Retrieve')servlet正在监听)。 –