当前位置: 首页 > 知识库问答 >
问题:

404从客户端到JavaServlet的GET/POST请求未找到错误

邢弘业
2023-03-14

在通过jquery从html页面向java servlet发送GET请求时,我收到一个404错误(在web浏览器控制台中)。类文件。

在我的IntelliJ maven webapp项目中创建了核心文件之后,我真的不知道应该做什么:

pom.xml, MyTestServlet.class, web.xml, index.html, do.js

我正在通过以下方式将我的项目构建到名为“target”的文件夹中:

建筑

然后,我把目标中的所有文件都上传到我部门的服务器上,但当我导航到索引时。html并单击按钮,它会在GET请求上返回404错误,而不是打印出servlet中指定的文本。

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by isardar on 7/11/2017.
 *
 * GOAL FOR THIS TEST:
 *
 *  make a servlet that sends data to client and client should receive/process the data
 *
 */
//@WebServlet("/MyTestServlet")  <-- idk what i'm doing
public class MyTestServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request,response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String text = "some text boiii";
        response.setContentType("text/plain");  // Set content type of the response so that jQuery knows what it can expect.
        response.setCharacterEncoding("UTF-8"); // You want world domination, huh?
        response.getWriter().write(text);       // Write response body.
    }

}
<!DOCTYPE html>
<html lang="en">
<head>
    <title>SO question 4112686 - Copied & Tweaked Version</title>
    <link rel="stylesheet" href="style.css"/>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script src="do.js"></script>
</head>
<body>
<button id="somebutton">press here</button>
<div id="somediv"></div>
</body>
</html>
/**
 * Created by isardar on 7/11/2017.
 */
$(document).on("click", "#somebutton", function() { // When HTML DOM "click" event is invoked on element with ID "somebutton", execute the following function...
    $.get("WEB-INF\\classes\\ServerTest.class", function(responseText) {   // Execute Ajax GET request on URL of "someservlet" and execute the following function with Ajax response text...
        $("#somediv").text(responseText);           // Locate HTML DOM element with ID "somediv" and set its text content with the response text.
    });
});
<!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>
    <display-name>Archetype Created Web Application</display-name>

    <servlet>
        <servlet-name>ServletTest</servlet-name>
        <servlet-class>MyTestServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>ServletTest</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

</web-app>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>ServletTest4</groupId>
    <artifactId>ServletTest4</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>ServletTest4 Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>

        <!-- a default maven-web-app dependency for some reason... -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.0-b07</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>
    <build>
        <finalName>ServletTest4</finalName>
    </build>
</project>

有人能指导我应该改变什么来使这项工作成功吗,我觉得我已经非常接近解决方案了?也让我知道,如果有更好的方法来解决这个问题,我曾短暂地听说过Web servlet 3.0,但找不到任何好的资源,它的IntellliJ和Maven。谢谢!

共有3个答案

封瑞
2023-03-14

正如CrazyCoder指出的,我的问题是在“jquery.get(...”在“do.js”文件中。它应该是:

$。获取(“WEB-INF\\classes\\MyTestServer.class”…

而不是:

$. get("WEB-INF\\class\\ServerTest.class"...

这只是一个简单的打字错误!

雷晋
2023-03-14

这与服务器启动时您的servlet未被识别有关。它看起来是一个与Servlet相关的问题,可能不在正确的目录或包中。或者您还必须在“web.xml”文件中为您的servlet提供包名称

祖翰音
2023-03-14

确保应用程序在应用程序服务器(Tomcat、JBoss等)下运行之后。您的请求应该被重定向到正确的路径,路径应该是:localhost:8080/ProjectName/WebServletName。

您使用get请求直接访问servlet文件,但它在HTTP协议下工作。所以应该以这种方式访问它

 类似资料:
  • 问题内容: 我的科尔多瓦版本是 5.0.0 将应用程序部署在设备上时,对于所有ajax请求都收到404错误。在网络浏览器上,它可以正常工作,但是在设备上部署时,相同的应用程序无法正常工作。 我尝试添加关注者来解决该问题,但没有帮助。 Config.xml AndriodManiest.xml 我还在index.html文件中添加了以下内容,但也没有任何区别。 这里的任何人还有另一个解决此问题的技巧

  • 我正在处理一个 Post 请求,在此请求中检索用户令牌 ID,我使用 OAuth2Client 库进一步验证令牌。验证后,我想发出 Get 请求以获取用户信息。我不确定我链接请求的方式。 代码就像: 在客户端,浏览器表示post请求失败,因为它花费了太多时间返回: POSThttp://mywebapp.com/oauth/google/redirect504(网关超时)

  • 我试图创建我的第一个Spring后端,简单的应用程序,存储音乐专辑。不幸的是,我创建的endpoint没有一个工作(我使用postman测试了它们,请求返回404,没有找到)。以下是我所有与项目相关的文件/代码: 我所尝试的: 结果: 正在添加应创建数据库的dataSource方法。 @bean@ConfigurationProperties(前缀=“spring.DataSource”)publ

  • 我是Spring MVC的新手。在尝试基本程序时,我面临404错误页面。 Web.xml myDemoApp servletConfid。xml 控制器类 JSP页面 使用的URL: http://localhost/8050/springMVCDemo/getQuote.html 文件夹结构:[在此输入图像描述][1] 请告诉我这个错误的解决方法。