我做了一个非常简单的Servlet
:
package it;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// Set the response message's MIME type.
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<!DOCTYPE html>"); // HTML 5
out.println("<html><head>");
out.println("<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>");
String title = "Hello World";
out.println("<title>" + title + "</title></head>");
out.println("<body>");
out.println("<h1>" + title + "</h1>"); // Prints "Hello, world!"
out.println("</body></html>");
} finally {
out.close(); // Always close the output writer
}
}
}
在Eclipse IDE
中构建该类。所以,我把生成的文件。class放在Tomcat/webapps/ROOT/MyServlet/WEB-INF/classes/it
中,因为我的java文件在一个名为它的包中。
然后,在WEB-INF
文件夹中,我创建以下xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.4">
<display-name>My Web server Application</display-name>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>it.MyServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
我在Windows中运行Tomcat Service
(我知道它正在运行,因为我看到tomcat欢迎页面http://localhost:8080)。
所以,当我输入地址http://localhost:8080/MyServlet/hello
,但我总是得到404状态错误,请求的资源不可用。
我读了很多关于这个话题的教程,但我不明白问题在哪里。有人能帮我吗?
路径
Tomcat/webapps/ROOT/MyServlet/WEB-INF/classes/it
放错地方了。
紧接在webapps
下面的目录表示应用程序名称,例如,Tomcat/webapps/foo
的内容将通过URL http://localhost:8080/foo
访问。ROOT
是特殊的,它表示根应用程序:http://localhost:8080
.
WEB-INF目录应该位于应用程序目录的下面。如果你想让你的应用程序在http://localhost:8080/myServlet
,输入WEB-INF
Tomcat/webapps/MyServlet/WEB-INF
,
和你的class在
Tomcat/webapps/MyServlet/WEB-INF/classes/it
保持应用程序在此路径:
Tomcat/webapps/MyServlet/WEB-INF/classes/it
代替ROOT
目录