Java Simple servlet在Tomcat/9.0.14中遇到问题,错误为;源服务器未找到当前表示形式..”;

Java Simple servlet在Tomcat/9.0.14中遇到问题,错误为;源服务器未找到当前表示形式..”;,java,tomcat,servlets,Java,Tomcat,Servlets,在ApacheTomcat/9.0.14中,我创建了一个非常简单的servlet来运行,但出现了以下错误: 源服务器找不到目标资源的当前表示形式,或者不愿意透露存在该表示形式 我跟随这篇文章: 我用jdk1.8.0_151在redhat 6.9中安装了tomcat/9.0.14 我也在我的桌面Windows10上尝试了同样的方法 当我按照上面文章中的步骤,尝试直接使用url“localhost:8080\First\hello”运行servlet时,我得到了如下错误: <?xml vers

在ApacheTomcat/9.0.14中,我创建了一个非常简单的servlet来运行,但出现了以下错误:

源服务器找不到目标资源的当前表示形式,或者不愿意透露存在该表示形式

我跟随这篇文章:

我用jdk1.8.0_151在redhat 6.9中安装了tomcat/9.0.14

我也在我的桌面Windows10上尝试了同样的方法

当我按照上面文章中的步骤,尝试直接使用url“localhost:8080\First\hello”运行servlet时,我得到了如下错误:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app version="3.0" xmlns="java.sun.com/xml/ns/javaee" xmlns:xsi="w3.org/2001/XMLSchema-instance" xsi:schemaLocation="java.sun.com/xml/ns/javaee java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>pl.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

HTTP状态404–未找到
类型状态报告

留言/你好

说明源服务器找不到目标资源的当前表示形式,或者不愿意透露存在该表示形式

ApacheTomcat/9.0.14


web.xml文件如下所示:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app version="3.0" xmlns="java.sun.com/xml/ns/javaee" xmlns:xsi="w3.org/2001/XMLSchema-instance" xsi:schemaLocation="java.sun.com/xml/ns/javaee java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>pl.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>
我已经读过这里的帖子:

我没有使用像Eclipse或J_Builder这样的IDE。我只是按照上面的帖子构建这个servlet来测试它是否工作正常

还多次重新启动服务器,重新编译、重新检查web.xml并检查tomcat web日志

它只是简单的不起作用

package pl; 
import java.io.*; 
import java.util.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class MyServerlet extends HttpServlet { 
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 
        response.setContentType("text/html"); 
        PrintWriter out = response.getWriter(); 
        out.println("<html><body>"); 
        out.println("<h1>Hello Readers</h1>"); 
        out.println("</body></html>"); 
    }//end of doGet 
}//end of Class
pl包;
导入java.io.*;
导入java.util.*;
导入javax.servlet.*;
导入javax.servlet.http.*;
公共类MyServerlet扩展了HttpServlet{
public void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出IOException,ServletException{
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
out.println(“”);
out.println(“读者你好”);
out.println(“”);
}//末日
}//下课

您的web应用程序目录结构中有一个输入错误。它应该是
WEB-INF
而不是
WEB-INF

您是否在URL中使用了反斜杠?“localhost:8080\First\hello”。使用普通斜杠试试:“localhost:8080/First/hello”早上好,vanje:我在URL中尝试了反斜杠“\”,但在Chrome中它会自动更改为普通斜杠“/”。当我把网络信息改回WEB-INF的时候,它很好用。非常感谢,祝你有一个愉快的一天。亲爱的马克·托马斯,你回答了我的问题,帮我省去了一个大麻烦。我在这个问题上工作了几个星期,直到我把它贴在这里。非常感谢您,祝您度过愉快的一天。我还感谢编辑我的原始帖子并将java代码和web.xml放入其中的人,使其清晰易读。为我缺乏一开始就把它贴对的技巧道歉。非常感谢,祝你度过愉快的一天。