gpt4 book ai didi

Java 应用程序后处理在 Eclipse Tomcat 中有效,但在本地 Tomcat 服务器上无效

转载 作者:行者123 更新时间:2023-11-28 22:25:40 27 4
gpt4 key购买 nike

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

我的猜测是我在 servlet 映射方面做错了什么。请注意,我一直在访问我本地 Tomcat 服务器上的 Web 应用程序,方法是转到 http://localhost:8080/qa 并且没有对其进行配置,以便在访问 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>

这是我的 LoginServlet:

package com.XXXXX.qa.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns = "/login.do")
public class LoginServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);

}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.getRequestDispatcher("/WEB-INF/views/runtest.jsp").forward(request, response);

}
}

我的 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>

IMAGE: Accessing Tomcat server, performing post and file structure in Eclipse workspace

最佳答案

难怪为什么服务器返回 404。你正试图从你的表单中获取 /login.douri,它变成了 http://localhost:8080/login.do 导航时:此 URL 缺少应用程序上下文“qa”。简而言之:您必须去掉前导斜线。让它成为:

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

关于Java 应用程序后处理在 Eclipse Tomcat 中有效,但在本地 Tomcat 服务器上无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46061744/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com