[英]HTML form submit error to servlet
我有一个基本的HTML表单,如下所示,它向servlet提交一个post请求:
我使用URL提交: http://localhost:8080/sample/forms.html
但是当提交请求时,上下文根部分将被删除,并且URL被视为:
http://localhost:8080/getFormParam
使用的表格是:
<form method="post" action="/getFormParam">
<input type="text" name="user" />
<input type="text" name="id"/>
<input type="submit" value="Submit"/>
<input type="reset" value="clear"/>
</form>
web.xml映射是
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>getFormParam</servlet-name>
<servlet-class>dep.getFormParam</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getFormParam</servlet-name>
<url-pattern>/getFormParam</url-pattern>
</servlet-mapping>
</web-app>
这是什么问题。
问题在于
<form method="post" action="/getFormParam">
将其更改为(删除/)
<form method="post" action="getFormParam">
Post URL将变为http://localhost:8080/sample/getFormParam
servlet将立即获取请求。
问题只是action参数中前面的斜杠“/”
<form method="post" action="/getFormParam">
当您在URL前面提到斜杠时,这意味着该资源位于tomcat服务器的上下文根(而不是应用程序的上下文根),在本例中为localhost:8080。 如果你改成它
<form method="post" action="getFormParam">
它会像你想要的那样开始工作。 但是,如果你没有再次陷入这种情况,你最好知道URL重写概念。为了克服这种情况,JSTL库中有一个标记,其名称为url确保您传递的任何URL,它将始终解析为应用程序的上下文根(Url重写)。
更多细节可以在这里找到
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.