URL 映射问题

URL mapping issue

我有一个名为 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 through the link on the main page. Page http://localhost:8080/notebook/add.html contains that form and after submiting it I go to the http://localhost:8080/add instead of http://localhost:8080/notebook/add

甚至在我在 servlet 映射和表单操作标记中重新映射 /add 到 /notebook/add 之后,我在提交表单后转到 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 从而使客户端 post 变为 /notebook/add.