Java应用程序post操作在EclipseTomcat中工作,但在本地Tomcat服务器上不工作
我已经在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上的表单: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”文件 我的猜测
<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>-->