在@WebServlet("Hello") 出现错误任何人都知道吗?

Getting error at @WebServlet("Hello") could anyone have any idea about it?

如果有人可以,请提供帮助,我在 运行 HTML 文件 Tomcat Apache 服务器上使用 eclipse 我与您分享的相关代码时遇到错误

WEB.XML

  <?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/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.4">
 <servlet>
 <servlet-name>Hi</servlet-name>
 <servlet-class>Hello</servlet-class>
 </servlet>
 <servlet-mapping>
<servlet-name>Servlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
 </web-app>

Hello.java

  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;

   /**
 * Servlet implementation class Hello
  */
  @WebServlet("/Hello") -----------//Here getting an error

     public class Hello extends HttpServlet {
    private static final long serialVersionUID = 1L;


  /**
  * @see HttpServlet#HttpServlet()
*/
  public Hello() {
   super();
   // TODO Auto-generated constructor stub
   }

     /**
    * @see HttpServlet#doGet(HttpServletRequest request,HttpServletResponse response)
   */
      protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
      response.setContentType("text/html");
      PrintWriter pw=response.getWriter();
      String email=request.getParameter("email");
     String password=request.getParameter("password");
     pw.println("<br>your email is "+email);
     pw.println("<br>your password is "+password);

     }

     /**
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */

   }

<!DOCTYPE html>
           <!--<script src="http://jqueryvalidation.org/files/dist/additional-methods.min.js"></script>-->

          <html>
           <head>
        <meta charset="utf-8">
        <title>Login Form</title>
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <!--<script src="plugin/validation/dist/additional-methods.min.js">     </script>-->
         <script src="jquery.validate.min.js"></script>
           <script src="validationutils.js"></script>
 <script src="rememberme.js"></script>
 <script src="captcha.js"></script>
</head>
<body><div>
      <form id="formRegistration" method="post" action="hello">
   
                 <div>
                <label for="email">Email Id*</label>
                <input id="email" type="email" name="email" value="" placeholder="Enter your Email Id" />
                </div>
    
    
    <div>
                <label for="Password">Password*</label>
                <input id="password" type="password" name="password" value="" placeholder=" Enter Password" />
                </div>
    
    <div>
                <input type="submit" name="commit" value="Login" id="publiclogin">
          </div>
    
    <div>
                Forgot your password? <a href="google.com">Click here to reset it</a>.
                </div>
    
    
                <label class="checkbox">
                <input type="checkbox" value="remember-me" id="remember_me"> Remember me
                </label>
    
    
    
    <label class="" for="captcha">*Please enter the verication code shown below.</label>
                <div id="captcha-wrap">
                <img src="plugin/utilities/img/refresh.jpg" alt="refresh captcha" id="refresh-captcha" /> <img src="plugin/utilities/img/glyphicons-halflings.png" alt="" id="captcha" />
                </div>
                <input class="narrow text input" id="captcha" name="captcha" type="text" placeholder="Verification Code"/>
                
            </form>
             </div> 
           </body>
            </html>

非常感谢任何帮助。

您的 servlet 名称在 servlet 映射中不同。

参考下面提到的片段,

 <servlet>
   <servlet-name>Hi</servlet-name>
   <servlet-class>Hello</servlet-class>
 </servlet>
 <servlet-mapping>
   <servlet-name>Hi</servlet-name>
   <url-pattern>/hello</url-pattern>
 </servlet-mapping>

更多详情:http://javapapers.com/servlet/what-is-servlet-mapping/

在 web.xml 中定义 servlet 时,您必须创建两件事:

  1. 注册 servlet
  2. 为这些 servlet 注册 mppings

在您的 Hi servlet 示例中,您没有定义请求映射。对于 /hello 路径,没有名为 'Servlet'.

的 servlet
    <servlet>
      <servlet-name>Hi</servlet-name> // name of your servlet in this context
      <servlet-class>com.example.web.servlets.Hello</servlet-class> // your servlet class(should include package)
    </servlet>
    <servlet-mapping>
      <servlet-name>Hi</servlet-name> // reference to your servlet name
      <url-pattern>/hello</url-pattern> // mapped path
    </servlet-mapping>

我们可以从这里开始,告诉我们,它解决了您的问题。