【问题标题】:HTML form submit error to servletHTML 表单向 servlet 提交错误
【发布时间】:2013-11-28 13:03:00
【问题描述】:

我有一个如图所示的基本 HTML 表单,它向 servlet 提交发布请求:

我使用 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>

这里有什么问题。

【问题讨论】:

    标签: java jsp jakarta-ee servlets


    【解决方案1】:

    问题只是action参数中前面的斜杠“/”

    &lt;form method="post" action="/getFormParam"&gt;

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

    &lt;form method="post" action="getFormParam"&gt;

    它将开始按您的意愿工作。但是,最好了解 URL 重写概念,以防您再次陷入这种情况。为了克服这种情况,JSTL 库中有一个名称为 url 的标记确保您传递的任何 URL,它将始终解析为应用程序的上下文根(Url Re-writing)。

    更多详情可以查看here

    【讨论】:

      【解决方案2】:

      问题出在

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

      将其更改为(删除 / )

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

      帖子 URL 将变为 http://localhost:8080/sample/getFormParam servlet 现在会收到请求。

      【讨论】:

        猜你喜欢
        • 2014-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-04
        • 2021-09-17
        • 2015-04-20
        • 1970-01-01
        相关资源
        最近更新 更多