Java Servlet地址不正确

Java Servlet地址不正确,java,tomcat,servlets,Java,Tomcat,Servlets,我正在尝试创建一个servlet,我正在使用Tomcat7。 我在webapps文件夹中为我的应用程序添加了一个文件夹,看起来如下所示: --[webapps] --[agtel] --[web-inf] --[classes] --add.class --web.xml --index.html web.xml包含: <servlet> <servle

我正在尝试创建一个servlet,我正在使用Tomcat7。 我在webapps文件夹中为我的应用程序添加了一个文件夹,看起来如下所示:

--[webapps]
    --[agtel]
        --[web-inf]
           --[classes]
              --add.class
           --web.xml
        --index.html
web.xml包含:

  <servlet>
    <servlet-name>add</servlet-name>
    <servlet-class>add</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>add</servlet-name>
    <url-pattern>/add</url-pattern>
  </servlet-mapping>
<FORM METHOD=GET ACTION="/add">
这将导致404错误。但是如果我把它改成

http://localhost:8080/agtel/add
当然,它会执行小程序

因此,我尝试将html文件中的URL更改为

<FORM METHOD=GET ACTION="agtel/add">
为什么现在要加两次这个名字?这非常令人困惑,让我发疯。

这就是所谓的“上下文”路径。如果您在同一个Tomcat(或任何应用服务器)上运行多个应用程序,则会区分对它们的访问。
当您将路径从“/add”更改为“add”(无前导斜杠)时,它应该可以正常工作

在HTML中使用URL时,不带前导/它们是相对于当前URL的。与领先/他们是绝对的:

<FORM METHOD=GET ACTION="/agtel/add">


我会做你想做的

我建议您在操作路径中添加上下文,例如(在JSP中):



有了它,您将永远不必更改路径,例如,如果您移动文件或复制代码。当然,您需要一个index.jsp。

您是否尝试过
ACTION=“add”
,或者
ACTION=“/agtel/add”
ACTION=“add”
,并且由于servlet上下文根是
/agtel
,所以url是
/agtel/add
。就是这样!我在一个例子中看到了斜杠(它起作用了),我想应该是这样的。非常感谢你!
http://localhost:8080/agtel/agtel/add
<FORM METHOD=GET ACTION="/agtel/add">
<FORM METHOD=GET ACTION="add">
<FORM METHOD=GET ACTION="${pageContext.request.contextPath}/add">