有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将请求URL与web中的正确URL模式相匹配。xml

我试图学习如何将请求URL映射到部署描述符中的URL模式。我得到了所有正确的答案,但我不确定思考过程是否正确。 请帮助我确认或更改推理

<servlet>  
        <servlet-name>One</servlet-name>  
        <servlet-class>foo.DeployTestOne</servlet-class>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>One</servlet-name>  
        <url-pattern> *.do </url-pattern>  
    </servlet-mapping>  
    <servlet>  
        <servlet-name>Two</servlet-name>  
        <servlet-class>foo.DeployTestTwo</servlet-class>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>Two</servlet-name>  
        <url-pattern> /fooStuff/bar </url-pattern>  
    </servlet-mapping>  
    <servlet>  
        <servlet-name>Three</servlet-name>  
        <servlet-class>foo.DeployTestThree</servlet-class>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>Three</servlet-name>  
        <url-pattern> /fooStuff/* </url-pattern>  
    </servlet-mapping>  

1)http://localhost:8080/MapTest/blue.do 容器选择:DeployTestOne(匹配*.do扩展模式)

精确匹配检查:DD中是否有一个URL模式,其精确值为=/MapTest/blue。做不 目录匹配检查:DD中是否有目录/MapTest的URL模式?不 扩展名匹配:DD中是否有扩展名文件的模式。做对 选择DeployTestOne

问题-在进行精确匹配检查时,容器是否为蓝色。在DD中执行,还是查找/MapTest/blue。是吗

2)http://localhost:8080/MapTest/fooStuff/bar/blue.do 容器选择:DeployTestThree(匹配/fooStuff/*目录模式)

精确匹配检查:DD中是否有一个URL模式,精确地为=/MapTest/fooStuff/bar/blue。做不 目录匹配检查:DD中是否有目录/MapTest/fooStuff/bar的URL模式?对 选择最长pat的url模式,即/footstuff/*

问题-在进行目录匹配检查时,容器是查找/MapTest/fooStuff/bar/还是只查找/fooStuff/bar


共 (1) 个答案

  1. # 1 楼答案

    url模式规范:

    1-以“/”字符开头,以“/*”后缀结尾的字符串用于路径映射

    2-以“*”开头的字符串前缀用作扩展映射

    3-仅包含“/”字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet路径是请求URI减去上下文路径,路径信息为null

    4-所有其他字符串仅用于精确匹配

    参考:Java Servlet Specification