如何支持index.html和“/”Servlet映射

时间:2017-10-16 05:57:09

标签: java servlets web.xml

我在Java Web应用程序的根目录中有以下两个servlet和一个index.html页面。 index.html页面收集一些数据,使用Insert servlet插入它,然后为用户提供一个URL来检索数据(即http://localhost:8080/12345)。我希望用户能够将http://localhost:8080/12345放在浏览器中并让Retrieve servlet被调用。

现在发生的事情是当我输入http://localhost:8080http://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> 

1 个答案:

答案 0 :(得分:1)

如上所述,不将Retrieve servlet映射到/而是映射到/12345,然后将Insert servlet之后的请求重定向到/12345