繁体   English   中英

HTML表单向servlet提交错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM