我有一个名为 notebook.war 的 .war 文件。我正在使用 tomcat 部署它,将其放入 webapps 目录,然后启动 tomcat。
有一个带按钮的表单
<form id="jform" method="post" action="/add">
还有一个servlet,映射到web.xml
<servlet>
<servlet-name>Create</servlet-name>
<servlet-class>controller.CreateServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Create</servlet-name>
<url-pattern>/add</url-pattern>
</servlet-mapping>
我启动 tomcat,在浏览器中写入 localhost:8080/notebook 并转到主页面,然后我转到页面 http://localhost:8080/notebook/add.html通过主页上的链接。页 http://localhost:8080/notebook/add.html包含该表格,提交后我转到 http://localhost:8080/add而不是 http://localhost:8080/notebook/add .
甚至在我将/add 重新映射到/notebook/add 之后,在 servlet 映射和表单操作标记中,我转到了 http://localhost:8080/add提交表格后。
如何制作http://localhost:8080/notebook/add而不是 http://localhost:8080/add ?
最佳答案
您需要定义您的 <form>
作为
<form id="jform" method="post" action="add">
注意,action
如何属性没有前导 /
这就是让您的客户转到网站的根目录的原因,即localhost:8080/
然后 add
.
当您指定 action
作为add
, 它相对于当前 URL 的上下文根 进行解释,即 /notebook
因此使客户发布到/notebook/add
.
关于java - 网址映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28658496/