我正在阅读另一本令人惊叹的 Head First 书。这是,#34; Head First Servlets& JSP - 通过Sun认证的Web组件开发人员考试"。我正在关注创建一个小型的#34; hello world"程序类型。这是第30至31页。
我正在以下列方式编译Java源代码:
C:\Users\username\Desktop\Servlets_HF_Example\project1>javac -classpath C:\tomcat\
apache-tomcat-9.0.0.M26-windows-x86\apache-tomcat-9.0.0.M26\lib\servlet-api.jar
-d classes src/Ch1Servlet.java
找不到的类,即500错误的原因,具有以下源代码:
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>Head First Chapter 1 Servlet</h1>"
+ "<br>" + today + "</body> " + "</html>");
}
}
web.xml文件包含以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<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>
我有以下代码的文件夹结构:
project1
|
|
+classes
|
Ch1Servlet.class
+etc
|
web.xml
+src
|
Ch1Servlet.java
放入tomcat webapps目录的项目结构如下:
ch1
|
|
+classes
|
Ch1Servlet.class
+WEB-INF
|
web.xml
我在此Windows 7操作系统(OS)上设置了TOMCAT_HOME目录并设置了JAVA_HOME。当我部署应用程序并启动Tomcat 1)时,我看到500错误,表示找不到该类。这是找不到的Ch1Servlet.class。然后,如果我刷新页面,我会看到2)404错误。这些错误如下所示。
我哪里出错了?
答案 0 :(得分:2)
为了让应用服务器正确加载您的类,您的webapp结构应如下所示:
ch1/
|
+- WEB-INF/
|
+- classes/
| |
| +- Ch1Servlet.class
|
+- web.xml
所有类和库都位于WEB-INF
文件夹下,具体分别位于classes
和lib
。
答案 1 :(得分:0)
编辑web.xml
<servlet-name>Chapter1 Servlet</servlet-name>
<servlet-class>packagenameofCh1Servlet.Ch1Servlet</servlet-class>
<servlet-name>Chapter1 Servlet</servlet-name>
<url-pattern>/Serv1</url-pattern>
``