1

我在理解 url 映射如何为 servlet 工作时遇到了一些问题。

我在网上看了很多教程并在这里发帖,但没有运气。

因此,假设我有一个 servlet (WelcomeServlet.java)、一个索引页 (index.html) 和我的 web.xml 文件。

WelcomeServlet.java 文件位于 src 目录中,而 index.html 位于 WebContent 目录中。

我的索引页面将由 web.xml 调用,并将显示一个按钮,一旦按下该按钮,就会向 servlet 发送一个 get 请求。

问题是,一旦我按下按钮,页面在 url 旁边的任何内容都不会改变,从

http://localhost:8080/WelcomeServlet

http://localhost:8080/WelcomeServlet/

这是索引页面的正文:

<body>
    <form action = "/WelcomeServlet" method = "get">
    <p><label>Click the button to invoke the servlet
            <input type = "submit" value = "Get HTML Document"/>
    </label></p>
    </form>
</body>

这是 web.xml servlet 映射:

<servlet>
        <servlet-name>welse</servlet-name>
        <servlet-class>WelcomeServlet</servlet-class>
</servlet>

<servlet-mapping>
        <servlet-name>welse</servlet-name>
        <url-pattern>/WelcomeServlet</url-pattern>
</servlet-mapping>

<welcome-file-list>
        <welcome-file>Index.html</welcome-file>
</welcome-file-list>

我非常有信心问题出在索引表单操作中的寻址,但我真的无法理解应该放在那里的内容。我尝试了几条路径,但没有运气。

4

2 回答 2

2

您快到了。只需在您的操作中添加 ../ ,这样它就可以后退一步。目前,它指向与您的 html 文件相同的位置。

<body>
    <form action = "../WelcomeServlet" method = "get">
    <p><label>Click the button to invoke the servlet
            <input type = "submit" value = "Get HTML Document"/>
    </label></p>
    </form>
</body>
于 2017-04-24T14:35:49.730 回答
1

假设您在 IDE 中设置的默认源目录是 /src,而您的默认 Web 内容目录是 /web,那么在您的 servlet-context 中只写您的 servlet 名称,不带“/”。确保您的默认 Web 内容目录是 WebContent。之后从表单的 action 属性中删除“/”。

于 2017-04-24T14:07:17.653 回答