web.xml tomcat中的多个servlet条目

时间:2015-08-18 06:50:25

标签: servlets tomcat7

这是我的web.xml的代码。它有两个servlet映射到不同的URL。如果我一次只放一个url,它对两个servlet都运行正常。但是将它们放在xml中总是调用“loginpage”servlet,即使请求是“http://localhost:8181/servlet_jsp/loginauth”用于“loginauth”。

我知道我可以使用类似注释的替代方法,但我的好奇心是,为什么这个特殊代码无效。

这是我的web.xml:

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

    <servlet>
        <servlet-name>loginauth</servlet-name>
        <servlet-class>login.LoginAuth</servlet-class>  

        <servlet-name>loginpage</servlet-name>
        <servlet-class>login.LoginPage</servlet-class>  
    </servlet>
    <servlet-mapping>
        <servlet-name>loginauth</servlet-name>
        <url-pattern>/loginauth</url-pattern>       

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

</web-app>

1 个答案:

答案 0 :(得分:1)

您需要将定义放在单独的servletservlet-mapping元素中:

<servlet>
    <servlet-name>loginpage</servlet-name>
    <servlet-class>login.LoginPage</servlet-class>  
</servlet>

<servlet>
    <servlet-name>loginauth</servlet-name>
    <servlet-class>login.LoginAuth</servlet-class>  
</servlet>

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

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