servlet-mapping/と/*はいったいどういう意味ですか?

2813 ワード

最近、小ヤード兄の公開授業を見ていたとき、幸いにも転覆現場に出会った.まず、現場環境を復元します.

    dispatcherServlet
    /*


Spring MVCは上記のように構成されており、jspはレンダリングできません.
そこで疑問に思ったのが、/*と何が違うのか.なぜjspがレンダリングできないのですか?
上記の質問に答える前に、まず関連知識を紹介します.
一、servletのurl-patternの4種類のマッチング規則
1.正確な一致
で構成されているアイテムはurlと完全に正確に一致する必要があります.

    MyServlet
    /user/users.html
    /index.html
    /user/addUser.action


2.パスマッチング
「/*」で終わる文字列は、パスマッチングに使用されます.

    MyServlet
    /user/*


3.拡張子照合
「*.」で先頭の文字列は拡張子マッチングに使用されます

    MyServlet
    *.jsp
    *.action


4.デフォルト照合

    MyServlet
    /


4つのマッチングルールの優先順位は1>2>3>4です.パスマッチングと拡張子マッチングは、/user/*.actionが不正であり、/aa/*/bbが正確なマッチングであるなど、同時に設定できないことに注意してください.
二、Tomact中web.xmlのデフォルト構成

    default
    org.apache.catalina.servlets.DefaultServlet
    
        debug
        0
    
    
        listings
        false
    
    1



    default
    /




    jsp
    *.jsp
    *.jspx



    jsp
    org.apache.jasper.servlet.JspServlet
    
        fork
        false
    
    
        xpoweredBy
        false
    
    3


Tomact起動時はデフォルトでjspへのマッピング処理が追加されており、springMVCで/*のマッチングルールが構成されている場合、マッチングの順序に従ってすべてのリクエストがデフォルトのjspのservletにマッピングされなくなり、jspがレンダリングできなくなります
サーブレット容器Tomcatのweb.xmlにおけるurl-patternの構成の詳細[ソース分析付き]