2015-05-08 71 views
0

我的Servlet实现有问题。我将Apache Tomcat用作Servlet引擎,将Eclipse用作IDE。首先,我创建了一个search.html如下:Servlet映射和HTTP状态404

<html> 
    <head> 
    <meta charset="UTF-8"> 
    <title>FirstServler</title> 
    </head> 
    <body> 
     <form action="/myServlet" method="get"> 
     Name : <INPUT TYPE="text" NAME="name" SIZE="18"/> 
     <input type="submit" value="OK"> 
     </form> 
    </body> 
</html> 

然后创建一个servlet,称为Servlet1:

import java.io.IOException; 

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("/Servlet1") 
public class Servlet1 extends HttpServlet 
{ 
    private static final long serialVersionUID = 1L; 

    public Servlet1() 
    { 
     super(); 
    } 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
     String s= request.getParameter("name"); 
     response.getWriter().write(s); 
    } 
} 

最后web.xml中,位于的WebContent \ WEB-INF:

<?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/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>Servlet</display-name> 

    <servlet> 
    <servlet-name>servlet1</servlet-name> 
    <servlet-class>Servlet1</servlet-class> 
</servlet> 
    <servlet-mapping> 
    <servlet-name>servlet1</servlet-name> 
    <url-pattern>/myServlet</url-pattern> 
    </servlet-mapping> 
    </web-app> 

当我search.html,按输入框进入里面的数据“OK”我得到以下错误:

HTTP Status 404 - /Servlet1.0/es1 
type Status report 
message /Servlet1.0/es1 
description The requested resource is not available. 

我觉得web.xml有一些错误。事实上,如果我将url模式更改为es1,我不会收到错误。

+0

你检查了你的控制台来检查你得到了什么异常吗? –

回答

0

该err说:“请求的资源不可用”。我最好的猜测是服务器找不到Servlet1类。

两个建议:

  • @WebServlet("/Servlet1")的名称不匹配<servlet-name>servlet1</servlet-name>,以前使用 'S' 而后者使用的“。尝试使用相同的名称。
  • 尝试将Servlet1类转换为包,而不是将其放置在默认包下。