我尝试运行的简单servlet Hello.java有问题。我将其制作在eclipse中,然后将其放在文件webapps/ServletTest/WEB- INF/classes夹中并进行编译,然后Hello.class在同一文件夹中创建文件。然后,我修改了web.xml文件以映射servlet,并尝试通过以下地址运行它
webapps/ServletTest/WEB- INF/classes
Hello.class
http://localhost:8080/ServletTest/Hello
但是,这不起作用,出现以下错误
HTTP状态404-
类型状态报告
信息
描述所请求的资源不可用。 Apache Tomcat / 7.0.42
web.xml文件中的映射如下所示:
<servlet> <servlet-name>Hello</servlet-name> <servlet-class>Main.Hello</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/Hello</url-pattern> </servlet-mapping>
servlet的代码:
package Main; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/Hello") public class Hello extends HttpServlet { private static final long serialVersionUID = 1L; public Hello() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); response.setContentType("text/html"); String path = request.getContextPath(); String ip = request.getRemoteAddr(); out.print("<html>" + "<title>Hello</title>" + "Hello World"+ "<br>" + "Your ip is: " + ip + "<br>" + "Your path is: " + path + "</html>"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
编译后的Hello.class文件应该在文件夹中
webapps/ServletTest/WEB-INF/classes/Main
因为它被声明在package中Main。
Main
此外,你可以看到Tomcat的启动日志中/logs/catalina.out或/logs/catalina.log根据。
/logs/catalina.out
/logs/catalina.log
另外,Suresh在注释中是正确的,请使用<servlet>声明或@WebServlet。请勿同时使用。
<servlet>
@WebServlet