我的第一个Servlet的deployig中出现错误404

时间:2014-12-10 10:00:08

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

这是我的第一个Servlet,我做任何书都说,但得到404错误。

我使用Tomcat 7.0.56Windows 7,我已经设置了所有可变环境。

这是我的servlet:

@WebServlet("/FirstServlet/PersonalServlet")
public class PersonalServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws  IOException, ServletException {

    response.setContentType("text/HTML");
    PrintWriter out = response.getWriter();
    out.println("<HTML>");
    out.println("<HEAD>");
    out.println("<TITLE>Simple Servlet</TITLE>");
    out.println("</HEAD>");
    out.println("<BODY>");
    out.println("<BR><BR><BR>");

    String clientName = request.getParameter("firstName");
    out.println("<H1> A Simple Servlet for ");
    out.println(clientName + "</H1></CENTER>");
    out.println("</BODY>");
    out.println("</HTML>");
    out.flush();
    }
}

这是Hello.html

中的C:\tomcat\webapps\FirstServlet\Hello.html
<html>
<head>
    <title></title>
</head>
<body>
<form method=GET action="PersonalServlet">
    Enter Your first name:

    <input type="text" name="firstName" value="">
    <br> <br>
    <input type="submit" value="submit">

</form>

</body>
</html>

以下是web.xml中的C:\tomcat\webapps\FirstServlet\WEB-INF

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns=" http://java.sun.com/xml/ns/javaee "
xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance "
xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "
version="3.0">

   <servlet>
      <servlet-name>PersonalServlet</servlet-name>
      <servlet-class>PersonalServlet</servlet-class>
   </servlet>


   <servlet-mapping>
      <servlet-name>PersonalServlet/servlet-name>
      <url-pattern>/PersonalServlet</url-pattern>
   </servlet-mapping>

</web-app>

我的tomcat已成功配置,

但是当我尝试http://127.0.0.1:8080/FirstServlet/PersonalServlet

http://127.0.0.1:8080/FirstServlet/

我收到了这个错误。

我把servlet类放在C:\tomcat\webapps\FirstServlet\WEB-INF\classes

3 个答案:

答案 0 :(得分:0)

在这里提供完全合格的班级名称..

内部web.xml

<servlet-class>**Fully qualified class name**</servlet-class>

为什么同时使用xml和Annotation,删除

 @WebServlet("/FirstServlet/PersonalServlet") 

来自你的班级..

答案 1 :(得分:0)

  1. 如果使用@WebServlet注释,则不需要使用xml配置。在这种情况下,web.xml中的配置会覆盖注释配置。
  2. 所以,现在,当使用web.xml的配置时,您应该通过/ PersonalServlet URL访问您的servlet,这是您在url-pattern中提供的。
  3. 另外,您应该在servlet-class元素中提供完全限定的名称。

答案 2 :(得分:-1)

这应该是这样的:

<web-app>
    <servlet>
        <servlet-name>PersonalServlet</servlet-name>
        <servlet-class>PersonalServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>PersonalServlet</servlet-name>
        <url-pattern>/PersonalServlet/*</url-pattern>
    </servlet-mapping>

</web-app>