zoukankan      html  css  js  c++  java
  • servlet虚拟路径映射

    在web.xml文件中,一个<servlet-mapping>元素用于映射一个Servlet的对外访问路径,该路径也称为虚拟路径。例如<url-pattern>/TestServlet</url-pattern>,其中“/TestServlet”就是一个虚拟路径。创建的Servlet只有在web.xml中映射了虚拟路径,客户端才能访问。但是,在映射Servlet时,有一些细节问题需要注意,比如Servlet的多重映射,在映射路径中使用通配符等,接下来,针对这些问题进行详细解释,具体如下:
    (1)Servlet的多重映射
    Servlet的多重映射是指同一个Servlet可以被映射成多个虚拟路径,即客户端可以通过多个路径访问同一个Servlet,具体如下:

    可以在<servlet-mapping>标签中配置多个<url-pattern>标签,

    如例1-7所示:

    <servlet-mapping>

    <servlet-name>AServlet</servlet-name>

    <url-pattern>/AServlet</url-pattern>

    <url-pattern>/BServlet</url-pattern>

    </servlet-mapping>

    如例1-7所示,AServlet配置了多个url-pattern,在浏览器端地址栏通过http://localhost:8080/Example13/AServlet和http://localhost:8080/Example13/BServlet都能够过访问到AServlet。但是这种配置方式,现在开发基本不用了,大家了解即可。

    (2)映射路径中使用通配符有时候,我们希望某个目录下的所有路径都可以访问同一个Servlet,这时,可以在Servlet映射的路径中使用通配符”*”。如下所示:
    1)<url-pattern>/servlet/*</url-pattern>

    这种属于路径匹配,通配符”*”为后缀,/servlet/a、/servlet/b都与/servlet/*匹配。

    2)<url-pattern>*.do</url-pattern>

    这种属于扩展名匹配,通配符”*”为前缀,/abc/a.do、/a.do都与*.do匹配。

    3)<url-pattern>/*</url-pattern>

    这种属于完全匹配,通配符”*”为后缀,匹配所有路径。需要注意的是:
    通配符要么在开头,要么在结尾,不能在中间,<url-pattern>/*.do</url-pattern>就
    是错误的使用。
    如果不使用通配符,那么<url-pattern>的内容必须以”/”开头,
    <url-pattern>abc</url-pattern>就是错误的。
    三种通配符匹配方式的优先级是匹配的范围越大优先级越低。如1-8所示:
    例1-8匹配优先级
    <servlet>
    <servlet-name>hello1</servlet-name>

    <servlet-class>cn.itcast.servlet.Hello1Servlet</servlet-class>

    </servlet>

    <servlet-mapping>
    <servlet-name>hello1</servlet-name>

    <url-pattern>/servlet/hello1</url-pattern>

    </servlet-mapping>

    <servlet>
    <servlet-name>hello2</servlet-name>
    <servlet-class>cn.itcast.servlet.Hello2Servlet</servlet-class>

    </servlet>
    <servlet-mapping>
    <servlet-name>hello2</servlet-name>

    <url-pattern>/servlet/*</url-pattern>

    </servlet-mapping>
    根据例1-8的配置,当在浏览器端访问http://localhost:8080/Example13/servlet/hello1时,hello1和hello2都能够匹配,但是由于hello1匹配的更加准确,范围更小,所以访问的是hello1这个Servlet。

  • 相关阅读:
    CREATE AGGREGATE
    技术文档列表
    jQuery 判断表单中多个 input text 中至少有一个不为空
    Java实现 蓝桥杯 算法提高 奥运会开幕式
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最大值路径
    Java实现 蓝桥杯 算法提高 最大值路径
    Java实现 蓝桥杯 算法提高 最大值路径
  • 原文地址:https://www.cnblogs.com/Gandy/p/7382240.html
Copyright © 2011-2022 走看看