我正在为两种类型的用户创建一个带有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问题吗?我该如何解决这个问题?
答案 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”。