`
robertliudeqiang
  • 浏览: 121860 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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()

分享到:
评论
1 楼 cfczdws 2015-05-06  
???????????:)

相关推荐

    tomcat环境变量配置

    那么就是应该把C:\Tomcat\common\lib里面的servlet.jar文件拷贝到C:JDKjrelibe xt中,再次编译,就没有问题了! 然后在Tomcat目录里面的C:\Tomcat\webapps\ROOT里面按如下的文件结构: ROOT\index.html ROOT\...

    入门案例-SpringMVC技术架构图

    Servlet容器会负责监听端口消息并映射为Request/Response对象,然后交给Servlet实例去处理。SpringMVC框架的作用核心就是Servlet实例,这个实例在Spring中默认是DispatcherServlet,DispatcherServlet中使用众多...

    Servlet与JSP核心编程第2版

    6.3 将用户重定向到浏览器相关页面的servlet 6.4 各种搜索引擎的一个前端 第7章 服务器响应的生成:htip响应报头 7.1 在servlet中设置响应报头 7.2 理解http1.1响应报头 7.3 构建excel电子表格 7.4 ...

    外文翻译 stus MVC

    An incoming event is normally in the form of an HTTP request, which the servlet Container turns into an HttpServletRequest. The Controller looks at the incoming event and dispatches the request to an ...

    从J2SE到J2EE知识点介绍

    (一) myeclipse上配置Tomcat服务器 101 (二) Jsp+servlet+bean版HelloWorld概览 105 (三) Jsp基本页面标签 116 1. 标签 116 2. contentType属性 118 3. pageEncoding属性 118 (四) form表单中的action,post和get ...

    Spring MVC 入门实例

    然后我们再配置 Servlet 映射(servlet-mapping 标签), 也就是你希望哪些请求被DispatcherServlet处理. 这里, 我们设置后缀名为 do(*.do) 的所有URL请求都被名为 ideawu 的 DispatcherServlet 的程序处理. 选择 .do ...

    java面试题

    答:request 用户端请求 response 回应 pageContext 网页属性 session 会话 out 输出 page 当前网页 exception 错误网页 application servlet正在执行的内容 config servlet构架部件 Struts模型驱动? 答:...

    超级有影响力霸气的Java面试题大全文档

    redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。 23、EJB与JAVA BEAN的区别?  Java Bean 是可...

    spring security 参考手册中文版

    14.2.3 SavedRequest和RequestCache接口 123 14.3 SecurityContextPersistenceFilter 123 14.3.1 SecurityContextRepository 124 14.4 UsernamePasswordAuthenticationFilter 125 14.4.1认证成功与失败的应用流程 ...

    java 面试题 总结

    redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。 20、EJB与JAVA BEAN的区别? Java Bean 是可复用...

    fckedit编辑器

    3 把tomcat安装目录下/server/lib中的catalina-ant.jar拷贝到/WEB-INF/lib目录 下 4 打开build.xml 找到 修改成你自己的tomcat安装目录 &lt;property value="/home/uniquejava/tool/tomcat5028/"/&gt; 找到 修改...

    Java开发技术大全 电子版

    7.2.5保存用户输入到文件240 7.2.6显示文件内容241 7.2.7文件的复制243 7.2.8顺序输入流244 7.2.9管道输入输出流246 7.2.10过滤输入输出流248 7.3Reader和Writer类使用249 7.3.1InputStreamReader类中的方法...

Global site tag (gtag.js) - Google Analytics