尝试运行servlet时出现HTTP状态404错误

时间:2014-01-01 18:35:37

标签: java eclipse tomcat servlets http-status-code-404

我正在尝试运行的简单servlet有问题,Hello.java。我在eclipse中创建它,然后将文件放在webapps/ServletTest/WEB-INF/classes文件夹中并编译它,在同一文件夹中创建文件Hello.class。然后我修改了我的web.xml文件以映射servlet并尝试通过以下地址运行它

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 {

}

}

3 个答案:

答案 0 :(得分:8)

已编译的Hello.class文件应位于文件夹

webapps/ServletTest/WEB-INF/classes/Main

因为它被声明在包Main中。

此外,您可以在/logs/catalina.out/logs/catalina.log中查看Tomcat的启动日志,具体取决于。


此外,Suresh在评论中是正确的,使用<servlet>声明或@WebServlet。不要同时使用它们。

答案 1 :(得分:2)

尝试删除web.xml。 对于Tomcat 7 +

,注释@WebServlet("/Hello")就足够了

答案 2 :(得分:1)

如果根文件夹没有适当的权限,您将面临此问题。因此,请检查根文件夹属性并删除只读权限,并在安全选项卡中将用户添加到完全访问权限。