先搞清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()
分享到:
相关推荐
2. **Servlet配置**:在`web.xml`部署描述符中,你可以定义Servlet的映射和初始化参数。例如: ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class...
### Tomcat Servlet配置详解 #### 一、Tomcat配置文件概览 ...通过以上介绍,我们可以了解到Tomcat配置文件的具体内容以及Servlet开发与配置的基本流程。这些知识对于理解和开发基于Tomcat的Java Web应用至关重要。
4. **配置Servlet**:在项目的`WEB-INF`目录下创建一个名为`web.xml`的部署描述符文件,定义Servlet及其映射。例如: ```xml <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>...
Servlet和Tomcat是Java Web开发中的重要组成部分,广泛应用于服务器端程序的开发和部署。面试中,对于这两者的理解往往能反映出应聘者在Web服务领域的专业素养。以下是一些常见的Servlet和Tomcat相关的面试题及答案...
然后,每当有新的请求到来,Servlet容器(如Tomcat)都会调用Servlet的`service()`方法来处理请求。最后,当服务器关闭或者Servlet不再需要时,Servlet会被销毁。 Tomcat是一个开源的Web服务器和Servlet容器,它...
本书以Tomcat的4.1.12和5.0.18版本为基础,对Servlet容器如何处理请求的三个主要步骤进行了阐述:创建request和response对象,以及调用servlet的service方法。request对象包含了客户端请求的所有信息,而response...
一个Servlet容器主要执行以下任务:首先,创建request对象,这个对象被填充了可能被Servlet使用的请求信息,如参数、头部、cookies、查询字符串和URI等;其次,创建response对象供Servlet使用,以便向客户端发送响应...
在Java EE(Java Platform, Enterprise Edition)开发中,Tomcat是一个广泛应用的开源Servlet容器,它遵循Java Servlet和JavaServer Pages(JSP)规范。当我们希望在Tomcat启动时自动访问本地的Servlet或JSP,可以...
2. Tomcat接收到请求后,根据URL映射找到对应的Servlet。 3. Servlet实例化并执行,处理业务逻辑,例如通过JDBC连接MySQL数据库,读取或更新数据。 4. Servlet将处理结果转换为HTTP响应,可能包含JSP页面作为视图。 ...
当用户填写表单并点击提交按钮后,浏览器将向服务器发送POST请求,MyEclipse中的Tomcat服务器将加载并执行MyServlet,处理请求并返回响应。 总之,Servlet是Java EE的重要组成部分,它为开发动态Web应用提供了强大...
【标题】"Tomcat-Servlet-Ajax基础实例详解" 在这个基础实例中,我们将探讨如何在Tomcat服务器上使用Servlet和Ajax技术实现一个简单的交互功能。Tomcat是一个流行的开源Java Servlet容器,它允许开发者运行和部署...
在Tomcat架构中,一个servlet容器必须完成三个核心任务以处理客户端的请求: 1. 创建请求对象(request object),并填充必要的信息,如HTTP请求中的参数、头部、cookies、查询字符串等,这些信息将被servlet所使用...
`init()`在Servlet对象创建时由容器(如Tomcat)调用,`service()`负责处理客户端请求并生成响应,`destroy()`则在Servlet销毁时被调用,用于释放资源。 Tomcat是一个开源的Web应用服务器,它实现了Servlet和Java...
Request对象封装了客户端发送到服务器的所有数据,包括URL参数、请求头、请求体等。在某些场景下,可能需要对这些参数信息进行修改,比如安全过滤、数据校验或者日志记录等。本程序就是针对这种情况设计的一个实用...
- 引入了ContextPath、Path、ServletPath和RequestURI的独立路径元素,使URL映射更灵活。 - 集成了Jasper引擎的改进,使得JSP编译更快,支持JSP的热部署。 3. **Apache Tomcat 8.5**: - 发布于2016年,基于Java...
request对象包含了所有可能被servlet使用的请求信息,如参数、头部、cookies等;而response对象则被servlet用来给客户端发送响应。这些对象实现了javax.servlet.ServletRequest或javax.servlet.http.ServletRequest...
- **初始化**:当Servlet容器(如Tomcat)首次接收到对Servlet的请求时,会创建Servlet的实例,并调用`init()`方法进行初始化。通常在这里加载配置信息或进行一次性资源分配。 - **服务**:每次有新的请求到来,...
- **加载与初始化**:当Web应用启动或首次接收到匹配Servlet映射的请求时,Servlet容器(如Tomcat)会加载Servlet类,并调用`init()`方法进行初始化。 - **服务**:每当有请求到达,Servlet容器会调用`service()...
在MyEclipse中,通常通过web.xml配置文件来注册和映射Servlet。例如: ```xml <servlet> <servlet-name>ServletDemo</servlet-name> <servlet-class>com.example.ServletDemo</servlet-class> </servlet> ...