Java - Servlet 404错误

时间:2015-06-16 11:52:21

标签: java eclipse tomcat servlets

我是servlet编程的新手。

以下是我的示例servlet代码

Sample.Java

public class Sample extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        res.setContentType("text/html");  
        PrintWriter pw=res.getWriter();  

        String name=req.getParameter("name");//will return value  
        pw.println("Welcome "+name);  
        pw.close();  
    }
}

Web.xml中

<web-app>
<servlet>
<servlet-name>sampleservlet</servlet-name>
<servlet-class>Sample</servlet-class>
<load-on-startup>1</load-on-startup> 
</servlet>
<servlet-mapping>
<servlet-name>sampleservlet</servlet-name>
<url-pattern>/Sample</url-pattern>
</servlet-mapping>
</web-app>

的index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form action="Sample" method="get">  
Enter your name<input type="text" name="name"><br>  
<input type="submit" value="login">  
</form>  
</body>
</html>

我的问题

当我右键单击我的项目然后单击Run as -> Run on server时,我选择了服务器,它要求我选择服务器,然后选择要运行的服务器。在eclipse窗口中,打开一个浏览器窗口,其地址URL为http://localhost:8080/Sample/

enter image description here

当我点击login时,它会给我一个这样的错误,

HTTP状态404 - /示例/欢迎

类型状态报告

消息 /示例/欢迎

说明所请求的资源不可用。

Apache Tomcat / 7.0.62

截图

enter image description here

为什么我会收到这样的错误?

其他详情

服务器:Apache-Tomcat的7.0.62 IDE:Eclipse Java EE kepler

步骤我试图解决问题

我尝试了这些,

  1. Getting HTTP Status 404 error when trying to run servlet
  2. 结果

    我没有在.class文件夹中看到WEB-INF个文件。

    1. Tomcat giving 404 error with servlets
    2. 结果 在此路径&#34; tomcat7 \ work \ Catalina \ localhost \ your app&#34;中,work文件夹为空。

      如果我需要发布更多详细信息,请与我们联系。

      IDE的目录结构

      enter image description here

2 个答案:

答案 0 :(得分:2)

你的代码在tomcat 7和eclipse中对我有用。 也许你的index.html与你发布的那个不一样,因为它的目标是Sample / welcome而不是Sample / Sample。

提示:

  • 确保index.html发布的版本与代码中的版本相同。修改内容并确保其正确发布。
  • 直接在浏览器中加载http://localhost:8080/Sample/Sample?name=Random以查看servlet是否正常运行。
  • 双击服务器上的Tomcat7。转到您的服务器路径。例如C:\ Java \ workspace.metadata.plugins \ org.eclipse.wst.server.core \ tmp2 \ wtpwebapps \ Sample \ WEB-INF \ classes(您的Sample类应该在那里)仔细检查您是否拥有这些文件夹中的权限。
  • 将您的项目导出为WAR,并将其直接部署在您的tomcat中,而不会进行日食。
  • 清理/构建项目
  • 在Servers / server.xml下的Package Explorer上,你应该有一个声明的上下文,例如: <Context docBase="Sample" path="/Sample" reloadable="false" source="org.eclipse.jst.jee.server:Sample"/></Host> 如果您不仔细检查这些文件夹中的permisions。再次从头开始添加tomcat7服务器。

enter image description here

答案 1 :(得分:1)

试试这个,你不需要为任何servlet编写XML文件;)

只需添加注释@WebServlet("/urlpattern")并在<form action="urlpattern">

中的JSP中调用此URL模式

只有在使用Eclipse时才能使用。

@WebServlet("/Sample")
public class Sample extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

    res.setContentType("text/html");  
    PrintWriter pw = res.getWriter();  

    String name = req.getParameter("name"); //will return value  
    pw.println("Welcome "+name);  
    pw.close();  
}}

希望它有所帮助。