servelet 资源加载过程:
启动tomcat服务器的时候,服务器将会加载所有webapps 目录下所有项目的配置文件,即web.xml;
web.xml里面配置了动态资源到网络url访问地址的mapping,即当我们在浏览器输入url地址以后,tomcat怎么定位到对应的资源
如
<servlet>
<servlet-name>className</servlet-name>
<servlet-class>fullClassPath</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>className</servlet-name>
<url-pattern>/webName</url-pattern>
</servlet-mapping>
当我们输入http://localhost:8080/webName 后,tomcat服务器会根据/webName去匹配url-pattern,然后根据匹配结果找到servlet-name 再接着找到serlet-class
然后给你class全名生成对应的class对象;
通过名字<url-pattern>我们可以看出,它是一个pattern,因此并不一定是一个完全匹配
url-pattern支持三种格式:
1>完全匹配
2>XX*匹配
3>*XX匹配
2>3>不能同时使用
*代表任意字符; 如XX*则表示只要是以XX开头即可,后面可以是任意字符;
如果/webName在url-pattern里面没有匹配到任何对象,则会访问默认的servelet对象,它会去搜索静态资源去匹配webName,
如果仍然没有匹配,则报404错误。
所以这里需要注意一点,不要使用/* 这种模式,因为它可以匹配任意输入格式,这样将永远无法访问静态资源
当定位到对应的class之后,如果没有提前初始化,则会通过反射的方式来构造该类的对象,然后调用初始化。
接下来每次对该sevlet的访问都将不再初始化,而是直接调用service方法。
当服务器关闭时调用destroy方法来销毁sevlet.
分享到:
相关推荐
当Servlet不再使用或者服务器关闭时,容器会调用Servlet的`destroy()`方法释放资源,然后垃圾收集器回收对象。 接下来,我们来看看创建Servlet的步骤: 1. **创建Servlet类**: 继承`javax.servlet....
`init()`方法只会在Servlet的生命周期中被调用一次,主要用于加载资源、创建数据库连接等初始化操作。完成初始化后,Servlet便处于待命状态,准备接收客户端的请求。 #### 二、Servlet的请求处理 当客户端发送请求...
为提高Servlet的性能,可以考虑使用多线程处理请求、实现Servlet的单例模式(通过`load-on-startup`元素设置Servlet加载时机)以及使用过滤器(Filter)来拦截和预处理请求。 8. **Servlet 3.0及以上版本的新特性*...
容器负责Servlet的加载、初始化、服务和销毁过程,以及线程安全问题。开发者无需关心这些细节,只需关注业务逻辑。 四、Servlet配置 在Web应用的`web.xml`配置文件中,可以声明Servlet,指定Servlet类、URL映射、...
在 `web.xml` 文件中可以对 Servlet 进行配置,包括初始化参数、加载顺序等。 ```xml <servlet> <servlet-name>FirstServlet</servlet-name> <servlet-class>com.example.FirstServlet</servlet-class> </...
1. **加载和实例化**:当Servlet容器(通常是Web服务器)接收到客户端的请求时,如果发现该请求与某个Servlet相关联,则会加载并实例化该Servlet。 2. **初始化**:Servlet容器调用init()方法对Servlet进行初始化,...
其中`load-on-startup`属性可用来指定Servlet在服务器启动时的加载顺序。 #### 四、如何处理一个请求 在Servlet中,主要通过`service()`方法来处理请求。对于HTTP请求,还可以通过重写`doGet()`、`doPost()`等方法...
Servlet生命周期是Java Web开发中的核心概念,它涵盖了Servlet从创建到销毁的整个过程,主要分为初始化阶段、运行阶段和销毁阶段。这个过程完全由Servlet容器(如Tomcat、Jetty等)管理。 **初始化阶段** 在初始化...
4. `javax.servlet.ServletContext`:表示一个Web应用程序的上下文,提供对全局资源的访问,如静态资源、其他Servlet等。 5. `javax.servlet.http.HttpServletRequest`和`javax.servlet.http.HttpServletResponse`:...
Servlet是Java平台中用于开发Web...随着Java EE的不断演进,Servlet也不断发展,如Servlet 3.0引入了异步处理和注解配置等功能,进一步简化了开发过程。学习和理解Servlet是成为一名合格的Web开发者的关键技能之一。
Servlet生命周期包括加载、初始化、服务、销毁四个阶段。通过继承HttpServlet类并覆盖doGet、doPost等方法,可以处理HTTP请求。 二、Servlet工作流程 1. 客户端发起HTTP请求到服务器。 2. 服务器接收到请求后,通过...
它们根据web.xml或注解配置加载Servlet,并通过DispatcherServlet进行请求分发。DispatcherServlet是Spring MVC的核心组件,它实现了Servlet API并负责调度请求到合适的处理器。源码中,可以研究DispatcherServlet...
3. `destroy()`: 销毁Servlet,服务器在Servlet不再使用时调用,释放Servlet占用的资源。 4. `getServletConfig()`: 获取Servlet的配置信息。 5. `getServletInfo()`: 获取Servlet的描述信息。 六、...
### Servlet生命周期详解 #### 一、引言 在Java Web开发中,Servlet作为一种重要的技术,被...在实际开发过程中,合理利用Servlet的生命周期特性可以帮助我们更好地管理资源、提高系统性能。希望本文能对你有所帮助。
在这里,你可以设置 Servlet 的配置信息,并处理必要的资源加载。 2. `ServletConfig getServletConfig()`: 返回在 `init()` 方法中传入的 `ServletConfig` 对象,该对象包含了 Servlet 的配置信息,如参数、描述等...
- 内存消耗:多个对同一CGI程序的请求会导致该程序代码多次加载到内存中,而Servlet只加载一次,创建多个线程,节省了内存资源。 - 跨平台性:Servlet使用Java编写,遵循标准API,因此具有良好的跨平台性,可以...
在探讨Servlet的执行流程之前,我们首先了解Servlet的生命周期。Servlet的生命周期主要分为三个阶段:初始化阶段、运行阶段以及销毁阶段。 **1. 加载与实例化** - **加载类文件:** 当Servlet首次被请求时,...
在此过程中,Servlet可以进行必要的准备工作,如建立数据库连接或加载配置文件。 - `init()`方法通常被覆盖以执行特定于应用的初始化操作。 2. **服务阶段**: - 当客户端发送请求时,Servlet容器会根据URL映射将...
这样,Servlet在服务器启动时就会被加载和初始化。 `init()`方法在Servlet生命周期中只执行一次,用于进行一些一次性配置。它接收一个`ServletConfig`对象,这个对象提供了获取`web.xml`中配置信息的方法,如初始化...