我有一些问题要了解URL映射如何适用于Servlet。
我在网上观看了大量的教程和帖子,但没有运气。
所以,假设我有一个servlet(welcomeservlet.java(,索引页(index.html(和我的web.xml文件。
weelcomeservlet.java文件在src目录中,而index.html在webcontent中。
我的索引页面将由web.xml调用,并将显示一个按钮,一旦按下,它将将get请求发送到servlet。
问题是,一旦我按下按钮,该页面在URL以外的任何内容都不会更改,该页面从
中脱颖而出http://localhost:8080/weelcomeservlet
to
http://localhost:8080/weleceservlet/?
这是索引页的主体:
<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>
我非常有信心问题是在索引表单中的解决方案,但我真的无法将自己的头缠绕在那里。我尝试了几条路径,但没有运气。
你快到了。只需在您的动作中添加../,以便它可以返回一步。目前,它指向与您的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>
假设您的iDE is/src中的默认源目录集,而默认的Web内容目录是/web,则在您的servlet-context中,只需在没有"/"的情况下写下您的servlet名称。确保您的默认Web内容目录是WebContent。之后,从表单中删除"/"。