当前位置: 首页 > 面试题库 >

Tomcat 7一直给我一个404。我在做什么错?

司寇高洁
2023-03-14
问题内容

这是我有史以来的第一个servlet。这是代码。

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Ch1Servlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
    PrintWriter out = response.getWriter();
    java.util.Date today = new java.util.Date();
    out.println("<html> " +"<body>" +"<h1 align=center>HF\'s Chapter1 Servlet</h1>" +" " + "<br>" + today + "</body>" + "</html>");
    }
}

我使用此命令对其进行了编译, javac -classpath /usr/share/tomcat7/common/lib/servlet-api.jar -d classes src/Ch1servlet.java
然后将.class文件放入WEB-INF文件夹中的classes文件夹中。

这是我的web.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
    <servlet>
        <servlet-name>Chapter1 Servlet</servlet-name>
        <servlet-class>Ch1Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Chapter1 Servlet</servlet-name>
        <url-pattern>/Serv1</url-pattern>
    </servlet-mapping>
</web-app>

Tomcat7一直给我一个404的http://127.0.0.1:8080/ch1/Serv1/说法The requested resource (/ch1/Serv1/) is not available.

文件树: File Tree

我在这里做错了什么?


问题答案:

您应该将servlet类放在包中。无包servlet是否起作用取决于旧版Tomcat和JVM版本的特定组合。如果您在书/教程中看到此示例,那么它肯定已经过时了。

package com.example;

// ...

public class Ch1Servlet extends HttpServlet {
    // ...
}

您应该有一个/com/example/Ch1Servlet.java文件。编译如下

javac -classpath /usr/share/tomcat7/common/lib/servlet-api.jar -d classes src/com/example/Ch1servlet.java

(I however wonder what thecommon lib is doing there, this was typical for
Tomcat 4.x/5.x, but it’s not present since Tomcat 6. If you manually changed
Tomcat’s structure in order to follow the instructions of an outdated
tutorial, undo it!)

Put the com folder with the generated class by its entirity in /WEB- INF/classes folder of your webapp. So you must have a /WEB- INF/classes/com/example/Ch1Servlet.class.

Then, edit your /WEB-INF/web.xml to specify the fully qualified name (FQN)
of the servlet class in <servlet-class>:

<?xml version="1.0" encoding="UTF-8"?>
<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" 
>
    <servlet>
        <servlet-name>Chapter1 Servlet</servlet-name>
        <servlet-class>com.example.Ch1Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Chapter1 Servlet</servlet-name>
        <url-pattern>/Serv1</url-pattern>
    </servlet-mapping>
</web-app>

(please note that I fixed the root declaration as well to comply Tomcat 7
supported servlet version, it would otherwise fall back to least compatibility
modus)



 类似资料:
  • 抱歉,如果不允许这样做。这是我第一次问问题。无论如何,我应该实现一个程序,根据文本读取等级。 “实施一个程序,根据以下内容计算理解某些文本所需的大致年级水平。文本:恭喜!今天是你的一天。你要去很棒的地方!你走了,走了!3 年级 在完成代码之后。每次我编译它时,它都会给我一个异常,即我除以零。几乎就像在我要求用户输入文本后,它根本不被读取,字母计数保持在零。我不知道如何绕过它。下面是我导入java.

  • 问题内容: 我有这个web.xml 突出显示,IDE给出的错误是:“发现无效的内容,从element开始… 我还需要做什么? 问题答案: 使用以下表示法: 但我建议阅读此链接。本教程将使您了解在JSP 2.0的情况下如何避免在web.xml中声明标签库。

  • 问题是,我正在测试一个方法,但它给我一个404错误,我已经把我的承载令牌在我的请求中,这是合乎逻辑的,因为我需要把头“授权”。当我在《邮差》中提出这个要求时,它给了我很好的结果。我有什么不及格的? monedaServiceTest.java: 输出控制台:

  • 问题内容: 我想重写链接 这是我的现在的样子: 给我404。 有什么问题? 问题答案: 括号太多。您可能感染了Lisp。 尝试:

  • 问题内容: 我有一个简单的程序: 当我运行该程序时,我看到的只是用于输出。我原本希望我们会遇到第一轮,然后是,然后是etc。 这是由于这样的事实,一旦我们尝试在左侧重新声明,其值就会重置为? 如果有人可以指出我的详细情况,那将很棒。 更改为,似乎正在按预期方式打印数字。我对它达到最大32位值的速度感到惊讶! 问题答案: 该问题是由于整数溢出引起的。 在32位二进制补码算法中: 确实确实开始具有2的

  • 我有下面的javascript... 基本上,我的 json 应该是一个有效的 json,它以 [{“dID”: 或者会是 [{前任。来自尝试捕获异常的消息... }] 不幸的是,我得到了错误JavaScript运行时错误:正则表达式中应有']' 我已经检查了我的正则表达式/^[{"dID":/RegEx101.com一些测试数据,我的测试按预期工作。有人有什么想法吗?