Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java应用程序post操作在EclipseTomcat中工作,但在本地Tomcat服务器上不工作_Java_Eclipse_Jsp_Tomcat_Servlets - Fatal编程技术网

Java应用程序post操作在EclipseTomcat中工作,但在本地Tomcat服务器上不工作

Java应用程序post操作在EclipseTomcat中工作,但在本地Tomcat服务器上不工作,java,eclipse,jsp,tomcat,servlets,Java,Eclipse,Jsp,Tomcat,Servlets,我已经在Eclipse中使用Maven和“tomcat7:run”的构建目标开发了一个Java web应用程序,以在Eclipse中运行该应用程序。现在我已经开始从Eclipse导出.war文件,在本地Tomcat服务器上尝试用户启动的post命令时,我看到了一些不同的行为。用户在访问http://localhost:8080/qa(该.war文件称为qa.war)时将访问的第一个.jsp加载文件没有问题。执行post命令时,我的应用程序找不到表单标记中指定的“/login.do”文件 我的猜测

我已经在Eclipse中使用Maven和“tomcat7:run”的构建目标开发了一个Java web应用程序,以在Eclipse中运行该应用程序。现在我已经开始从Eclipse导出.war文件,在本地Tomcat服务器上尝试用户启动的post命令时,我看到了一些不同的行为。用户在访问http://localhost:8080/qa(该.war文件称为qa.war)时将访问的第一个.jsp加载文件没有问题。执行post命令时,我的应用程序找不到表单标记中指定的“/login.do”文件

我的猜测是,servlet映射有一些地方我做错了。请注意,我一直在通过访问http://localhost:8080/qa访问本地Tomcat服务器上的web应用程序,并且没有对其进行配置,以便在访问http://localhost:8080/时显示默认页面,这也可能是相关的

这是我在login.jsp上的表单:

<form action="/login.do" method="post">
    Username: <input type="text" name="username">
    Password: <input type="password" name="password">
    <br>
    <input type="submit" value="Submit">
</form>
My web.xml:

<!-- webapp/WEB-INF/web.xml -->
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

    <display-name>To do List</display-name>

    <welcome-file-list>
        <welcome-file>login.do</welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.XXXXX.qa.servlets.LoginServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>login.do</url-pattern>
    </servlet-mapping>  

    <servlet>
        <servlet-name>RunTestServlet</servlet-name>
        <servlet-class>com.XXXXX.qa.servlets.RunTestServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>RunTestServlet</servlet-name>
        <url-pattern>/runtest.do</url-pattern>
    </servlet-mapping>

</web-app>

待办事项清单
login.do
罗金瑟夫莱特酒店
com.XXXXX.qa.servlets.LoginServlet
罗金瑟夫莱特酒店
login.do
RunTestServlet
com.XXXXX.qa.servlets.RunTestServlet
RunTestServlet
/runtest.do

难怪服务器返回404。您正在尝试从表单中获取
/login.do
uri,该uri将变成
http://localhost:8080/login.do
导航时:此URL缺少应用程序上下文“qa”。简言之:必须去掉前导斜杠。让它成为:

<form action="login.do" method="post">


难怪服务器返回404。您正在尝试从表单中获取
/login.do
uri,该uri将变成
http://localhost:8080/login.do
导航时:此URL缺少应用程序上下文“qa”。简言之:必须去掉前导斜杠。让它成为:

<form action="login.do" method="post">

我尝试了一些似乎有效的方法:

  • 我从web.xml中删除了servlet映射
  • 
    

    
    
    这似乎造成了很多问题

  • 在Eclipse中打包my.war,然后将其重命名为ROOT.war并将其放置在Tomcat web apps文件夹中。Eclipse中的Tomcat和我的本地Tomcat服务器之间的一个差异是,我的应用程序是通过访问“http://localhost:8080”而不是“http://localhost:8080/qa”在Eclipse中运行的,所以这样做似乎有帮助

  • 在执行了这两个修复之后,我很难再现该问题,因此我无法确认是否将表单操作从“/login.do”修改为“login.do”修复了该问题


  • 我尝试了一些似乎有效的方法:

  • 我从web.xml中删除了servlet映射
  • 
    

    
    
    这似乎造成了很多问题

  • 在Eclipse中打包my.war,然后将其重命名为ROOT.war并将其放置在Tomcat web apps文件夹中。Eclipse中的Tomcat和我的本地Tomcat服务器之间的一个差异是,我的应用程序是通过访问“http://localhost:8080”而不是“http://localhost:8080/qa”在Eclipse中运行的,所以这样做似乎有帮助

  • 在执行了这两个修复之后,我很难再现该问题,因此我无法确认是否将表单操作从“/login.do”修改为“login.do”修复了该问题

  • <!--<servlet-mapping>
      <servlet-name>LoginServlet</servlet-name>
      <url-pattern>login.do</url-pattern>
    </servlet-mapping>-->  
    
    <!--<servlet-mapping>
      <servlet-name>RunTestServlet</servlet-name>
      <url-pattern>/runtest.do</url-pattern>
    </servlet-mapping>-->