HTML表单向servlet提交错误

时间:2013-11-28 03:49:49

标签: java jsp java-ee servlets

我有一个基本的HTML表单,如下所示,它向servlet提交了一个post请求:

我使用网址提交:http://localhost:8080/sample/forms.html

但是当提交请求时,上下文根部分会被删除,并且网址被视为:

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>

这里有什么问题。

2 个答案:

答案 0 :(得分:1)

问题在于

<form  method="post" action="/getFormParam">

将其更改为(删除/)

<form  method="post" action="getFormParam">

帖子网址将变为http://localhost:8080/sample/getFormParam servlet现在将获得请求。

答案 1 :(得分:1)

问题只是动作参数

中的前面斜杠“/”

<form method="post" action="/getFormParam">

当您在URL前面提到斜杠时,这意味着该资源位于tomcat服务器的上下文根(而不是应用程序的上下文根),在本例中为localhost:8080。如果将其更改为

<form method="post" action="getFormParam">

它会像你想要的那样开始工作。但是,如果你没有再次陷入这种情况,你最好知道URL重写概念。为了克服这种情况,JSTL库中有一个标记,其名称为url确保您传递的任何URL,它将始终解析为应用程序的上下文根(Url重写)。

可以找到更多详细信息here