web.xml文件中的servlet名称出错

时间:2016-08-03 11:14:56

标签: java eclipse servlets web.xml

我正在为两种类型的用户创建一个带有tomcat7注册/登录表单的项目,我创建了所有内容:login,registration1,registration2,以及每个用户的一些验证类。我的web.xml中有一些问题,说“从元素'servlet-name'开始发现无效内容。我有一些目录中的所有文件,除了/ src中的2个注册,以及有效的/ login /(所有servlet +登录)。这是我的代码:

    <?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" version="3.0">
  <servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>Login</servlet-class>
    <servlet-name>RegisterMedico</servlet-name>
    <servlet-class>/progettoTesi/src/RegisterMedic</servlet-class>
    <servlet-name>RegisterUser</servlet-name>
    <servlet-class>progettoTesi/src/RegisterUser</servlet-class>

  </servlet>
  <servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>progettoTesi/WebContent/login</url-pattern>
    <servlet-name>RegisterMedic</servlet-name>
    <url-pattern>progettoTesi/src/RegisterMedic</url-pattern>
    <servlet-name>RegisterUser</servlet-name>
    <url-pattern>progettoTesi/src/RegisterUser</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

我无法理解我的错误是什么:我的servlet的名称是正确的。这是一个java问题吗?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您正尝试在同一<servlet>标记内定义多个servlet,但这样做无效。为每个servlet提供自己的<servlet><servlet-mapping>标记。

<?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" version="3.0">
  <servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>Login</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>RegisterMedico</servlet-name>
    <servlet-class>RegisterMedic</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>RegisterUser</servlet-name>
    <servlet-class>RegisterUser</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/login</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>RegisterMedic</servlet-name>
    <url-pattern>/RegisterMedic</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>RegisterUser</servlet-name>
    <url-pattern>/RegisterUser</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

或者,您可以在servlet类上使用@WebServlet注释,因此您根本不需要在web.xml中配置它们。示例:@WebServlet annotation with Tomcat 7

url-pattern和servlet-class也是非常错误的。 servlet-class应该是一个完全限定的类名(package + classname)。 url模式实际上是url中必须“映射”到servlet的模式。示例:url-pattern“/ beep”将映射到“http://localhost:8080/beep”。