`
robertliudeqiang
  • 浏览: 123284 次
  • 性别: 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安装包以及一些简单的servlet解说

    2. **Servlet配置**:在`web.xml`部署描述符中,你可以定义Servlet的映射和初始化参数。例如: ```xml &lt;servlet&gt; &lt;servlet-name&gt;MyServlet&lt;/servlet-name&gt; &lt;servlet-class&gt;com.example.MyServlet&lt;/servlet-class...

    Tomcat Servlet配置文件

    ### Tomcat Servlet配置详解 #### 一、Tomcat配置文件概览 ...通过以上介绍,我们可以了解到Tomcat配置文件的具体内容以及Servlet开发与配置的基本流程。这些知识对于理解和开发基于Tomcat的Java Web应用至关重要。

    servlet第一个例子(工程+tomcat)

    4. **配置Servlet**:在项目的`WEB-INF`目录下创建一个名为`web.xml`的部署描述符文件,定义Servlet及其映射。例如: ```xml &lt;servlet&gt; &lt;servlet-name&gt;HelloWorld&lt;/servlet-name&gt; &lt;servlet-class&gt;...

    servlet+tomcat面试题及答案解析.rar

    Servlet和Tomcat是Java Web开发中的重要组成部分,广泛应用于服务器端程序的开发和部署。面试中,对于这两者的理解往往能反映出应聘者在Web服务领域的专业素养。以下是一些常见的Servlet和Tomcat相关的面试题及答案...

    20211210tomcat2.zip Servlet简单例子

    然后,每当有新的请求到来,Servlet容器(如Tomcat)都会调用Servlet的`service()`方法来处理请求。最后,当服务器关闭或者Servlet不再需要时,Servlet会被销毁。 Tomcat是一个开源的Web服务器和Servlet容器,它...

    How Tomcat Works 中文版

    本书以Tomcat的4.1.12和5.0.18版本为基础,对Servlet容器如何处理请求的三个主要步骤进行了阐述:创建request和response对象,以及调用servlet的service方法。request对象包含了客户端请求的所有信息,而response...

    how tomcat works

    一个Servlet容器主要执行以下任务:首先,创建request对象,这个对象被填充了可能被Servlet使用的请求信息,如参数、头部、cookies、查询字符串和URI等;其次,创建response对象供Servlet使用,以便向客户端发送响应...

    Tomcat启动时,自动访问本地servlet

    在Java EE(Java Platform, Enterprise Edition)开发中,Tomcat是一个广泛应用的开源Servlet容器,它遵循Java Servlet和JavaServer Pages(JSP)规范。当我们希望在Tomcat启动时自动访问本地的Servlet或JSP,可以...

    jsp+servlet+tomcat+mysql项目

    2. Tomcat接收到请求后,根据URL映射找到对应的Servlet。 3. Servlet实例化并执行,处理业务逻辑,例如通过JDBC连接MySQL数据库,读取或更新数据。 4. Servlet将处理结果转换为HTTP响应,可能包含JSP页面作为视图。 ...

    Java+MyEclipse+Tomcat (二)配置Servlet及简单实现表单提交_Java_杨秀璋的专栏-CSDN博客1

    当用户填写表单并点击提交按钮后,浏览器将向服务器发送POST请求,MyEclipse中的Tomcat服务器将加载并执行MyServlet,处理请求并返回响应。 总之,Servlet是Java EE的重要组成部分,它为开发动态Web应用提供了强大...

    tomcat-servlet-ajax最基础例子

    【标题】"Tomcat-Servlet-Ajax基础实例详解" 在这个基础实例中,我们将探讨如何在Tomcat服务器上使用Servlet和Ajax技术实现一个简单的交互功能。Tomcat是一个流行的开源Java Servlet容器,它允许开发者运行和部署...

    How Tomcat Works 中文版.pdf

    在Tomcat架构中,一个servlet容器必须完成三个核心任务以处理客户端的请求: 1. 创建请求对象(request object),并填充必要的信息,如HTTP请求中的参数、头部、cookies、查询字符串等,这些信息将被servlet所使用...

    servlet--tomcat--jsp笔记(凯达培训)

    `init()`在Servlet对象创建时由容器(如Tomcat)调用,`service()`负责处理客户端请求并生成响应,`destroy()`则在Servlet销毁时被调用,用于释放资源。 Tomcat是一个开源的Web应用服务器,它实现了Servlet和Java...

    java web 修改request携带的参数信息

    Request对象封装了客户端发送到服务器的所有数据,包括URL参数、请求头、请求体等。在某些场景下,可能需要对这些参数信息进行修改,比如安全过滤、数据校验或者日志记录等。本程序就是针对这种情况设计的一个实用...

    tomcat6到8windows版本.zip

    - 引入了ContextPath、Path、ServletPath和RequestURI的独立路径元素,使URL映射更灵活。 - 集成了Jasper引擎的改进,使得JSP编译更快,支持JSP的热部署。 3. **Apache Tomcat 8.5**: - 发布于2016年,基于Java...

    How Tomcat Work.pdf

    request对象包含了所有可能被servlet使用的请求信息,如参数、头部、cookies等;而response对象则被servlet用来给客户端发送响应。这些对象实现了javax.servlet.ServletRequest或javax.servlet.http.ServletRequest...

    Servlet基础Demo

    - **初始化**:当Servlet容器(如Tomcat)首次接收到对Servlet的请求时,会创建Servlet的实例,并调用`init()`方法进行初始化。通常在这里加载配置信息或进行一次性资源分配。 - **服务**:每次有新的请求到来,...

    简单的servlet例子

    - **加载与初始化**:当Web应用启动或首次接收到匹配Servlet映射的请求时,Servlet容器(如Tomcat)会加载Servlet类,并调用`init()`方法进行初始化。 - **服务**:每当有请求到达,Servlet容器会调用`service()...

    Servlet框架基本源码

    在MyEclipse中,通常通过web.xml配置文件来注册和映射Servlet。例如: ```xml &lt;servlet&gt; &lt;servlet-name&gt;ServletDemo&lt;/servlet-name&gt; &lt;servlet-class&gt;com.example.ServletDemo&lt;/servlet-class&gt; &lt;/servlet&gt; ...

Global site tag (gtag.js) - Google Analytics