tomcat 如何把请求(request)映射到servlet

    技术2022-08-07  35

    http://robblog.javaeye.com/blog/577312

    tomcat 如何把请求(request)映射到servlet

    文章分类:Web前端

    先搞清servlet的几个概念: RequestURI(请求URI) 表示客户端(浏览器)请求的URL,例如一个链接http://localhost/app/test,那么request URL就是/app/test。RequestURI不浩瀚查询参数。 RequestURI可以使用request.getRequestURI()获取。 context path(上下文路径) 表示了一个应用(web application),例如一个链接http://localhost/app/test,那么context pathL就是/app。 context path可以使用request.getContextPath()获取。 ServletPath 用来找servlet的部分。例如一个链接http://localhost/app/test,那么用来进行servlet mapping的字符串就是/test,注意这个URI中是没有path info的。 tomcat的匹配规则: tomcat是根据web.xml中的<url-pattern>标签来匹配的,匹配规则如下: 1 Exact Match(完全匹配) 2 Prefix Match(前缀匹配) 匹配字符串以"/*"结尾,是最长路径匹配 例如http://localhost/app/test/a,在匹配/test/*和/test/a/*时,会匹配后者 3 Extension Match(扩展匹配) 匹配字符串以"*."开头。 4 Welcome资源处理   4a Welcome resources processing for exact macth   4b Welcome resources processing for prefix match   4c Welcome resources processing for physical folder 5 Default servlet 定义在global的$CATALINA_HOME/conf/web.xml中,下面是缺省定义     <servlet>         <servlet-name>default</servlet-name>         <servlet-class>           org.apache.catalina.servlets.DefaultServlet         </servlet-class>         <init-param>             <param-name>debug</param-name>             <param-value>0</param-value>         </init-param>         <init-param>             <param-name>listings</param-name>             <param-value>true</param-value>         </init-param>         <load-on-startup>1</load-on-startup>     </servlet> ...     <servlet-mapping>         <servlet-name>default</servlet-name>         <url-pattern>/</url-pattern>     </servlet-mapping> 可以修改这个配置。 匹配规则可以参考servlet 3.0文档和tomcat源码。 tomcat的源码: org.apache.tomcat.util.http.mapper.Mapper类 主要匹配方法 internalMapWrapper()
    最新回复(0)