Tomcat 在@WebServlet(“Hello”)上出错有人知道吗?

Tomcat 在@WebServlet(“Hello”)上出错有人知道吗?,tomcat,servlets,annotations,Tomcat,Servlets,Annotations,如果有人可以,请提供帮助。我在使用eclipse在Tomcat Apache服务器上运行HTML文件时出错,我正在与您共享相关代码 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://xml

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

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>

你好
你好
Servlet
/你好
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)
     */

   }
import java.io.IOException;
导入java.io.PrintWriter;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
/**
*Servlet实现类Hello
*/
@WebServlet(“/Hello”)----------------//这里得到一个错误
公共类Hello扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
/**
*@参见HttpServlet#HttpServlet()
*/
公众你好{
超级();
//TODO自动生成的构造函数存根
}
/**
*@参见HttpServlet#doGet(HttpServletRequest请求,HttpServletResponse响应)
*/
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{
response.setContentType(“text/html”);
PrintWriter pw=response.getWriter();
字符串email=request.getParameter(“email”);
字符串密码=request.getParameter(“密码”);
pw.println(“您的电子邮件是”+电子邮件);
pw.println(
您的密码是“+password”); } /** *@请参阅HttpServlet#doPost(HttpServletRequest请求,HttpServletResponse响应) */ }

登录表单
电子邮件Id*
密码*
忘记密码了吗。
记得我吗
*请输入下面显示的验证代码。

您的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>

你好
你好
你好
/你好

更多详细信息:

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

  • 注册servlet
  • 为那些servlet注册mpping
  • 在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>
    
    
    嗨//在此上下文中您的servlet的名称
    com.example.web.servlets.Hello//您的servlet类(应该包括包)
    您好//引用您的servlet名称
    /你好//映射路径
    

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

    您的代码本身有错误……如Eclipse中所示,您可以分享这个错误吗?根据JEE标准,代码是正确的,只要类在给定路径下存在。cvc复杂类型。2.4.a:发现以元素“servlet name”开头的无效内容。“{”、“http://java.sun.com/xml/ns/j2ee”:display name,”,“j2ee”:context param,“,”中的一个代码正在工作,但没有解决错误:(您提到了包含完整包详细信息的servlet类吗?url模式也是/hello而不是/hello