如何正确映射servlet

时间:2014-12-16 10:35:11

标签: java servlets mapping

我已经映射了这样的servlet



<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>s1</servlet-name>
        <servlet-class>FirstServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>s2</servlet-name>
        <servlet-class>SecondServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>s1</servlet-name>
        <url-pattern>/servlet1/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>s2</servlet-name>
        <url-pattern>/servlet2/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>
&#13;
&#13;
&#13;

每当我在url中写字时都会发生这件事

  
    

case1:localhost:2040 / SampleError / servlet2 / name

         

case2:localhost:2040 / SampleError / servlet2 / name / surname

  

它转到同一个servlet 我知道我没有正确地进行网址映射请建议我修改,所以在第2种情况下应该显示404错误资源不可用

实际上我的应用程序名称是&#34; SampleError&#34; 这个&#34;名称&#34;和&#34;姓氏&#34;在网址中是动态的,我的意思是你可以提供任何东西,其中包括&#34; name&#34;你可以提供你的名字或任何东西

1 个答案:

答案 0 :(得分:0)

更改您的web.xml映射,如下所示:

 <servlet-mapping>
        <servlet-name>s2</servlet-name>
        <url-pattern>/servlet2/name</url-pattern>
    </servlet-mapping>

模式/servlet2/*表示其 URI 中包含servlet2字符串的任何网址都会映射到您的SecondServlet。这就是你/name

处理/name/surnameSecondServlet的原因