专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 Tomcat中Servlet详解

Tomcat中Servlet详解

更新时间:2020-12-09 17:30:50 来源:赢咖4 浏览1048次

很多Java初学者容易把Servlet和太多东西联系起来,其实Servlet本身在Tomcat中是“非常被动”的一个角色,处理的事情也很简单。网络请求与响应,不是他的主要职责,它其实更偏向于业务代码。所谓的Request和Response是Tomcat传给它,用来处理请求和响应的工具,但它本身不处理这些。下文为大家详细介绍Tomcat中Servlet

 

Servlet就是一个普通的类,只不过这个类能够接受和处理请求,并且做出响应。提到Servlet就绕不开Servlet容器,那么什么又是Servlet容器呢?通俗的讲就是实现Servlet标准管理辅助Servlet类工作的工具。Servlet和Servlet容器在我看来就是子弹和枪的关系,通过对标准化接口的实现互相配合,彼此依存又独立发展。在大部分的情况下我们又称Servlet容器为服务器,常用的有Tomcat等。

 

为了迎接HTTP的到来,首先我们需要有一个Servlet类,并且告诉Servlet容器自己的存在,这两个准备步骤就是创建Servlet类和写入配置文件。类和Servlet容器之间的配合是通过接口实现的,一个类只需要实现特定的接口,就可以称为一个Servlet类,并且能够被Servlet所接受,这就是所谓的接口的解耦和。

 

在Tomcat中拥有一个Servlet类的三种方案:

1. 直接实现Servlet接口(interface)

2. 继承GenericServlet类(abstract)

3. 继承HttpServlet类(abstract)

在直接实现或者间接实现Servlet接口之后我们需要重写其中的service方法,到此Servlet就准备好了。然后需要我们写入配置文件,配置文件是一个固定的写法,主要就是为了告诉Servlet容器自己在哪。

 

接受请求Servlet容器开启服务之后就可以迎接request的到来了,当这个HTTP请求到达Servlet容器(以Tomcat为例)的时候,Tomcat看到有HTTP来,就把它带到要去的那个地方(项目名),到了地点之后,Tomcat会拿出花名册(web.xml)让request挑一个(0.0)。

 

结果,不用挑有指定的,那就好办了。Tomcat在部署文件中找 servlet-mapping 中与之匹配的 url-pattern,根据这个url-pattern的servlet-name 映射到真正的 servlet-class ,然后调用相应的 Servlet 类。

 

通过以上的步骤Tomcat就找到了HTTP想要见到的那个Servlet了,但是这个类也许准备好了,也许没有,我们假定这个request是第一次来。这时候就开始了Servlet的生命周期了。

1.因为是第一次请求,Tomcat会调用Servlet类的无参构造方法,创建这个Servlet的对象。


2.之后初始化,会调用init方法,这个方法会对Servlet类做一些初始化的工作,需要注意的这个方法在Servlet的一生中只会执行这么一次。像初始化这么重要的事儿只进行一次是有现实意义的,毕竟如果可以多次的话,我早就一米八了。


3.初始化之后一个Servlet就正式的进入服务状态可以接客了,这时候就会调用service方法,接受HTTP的request,并对这个请求做一些服务项目,剪个头发之类啊,最后再把面目全非的请求送走,不,这时候应该叫响应response。听说每次剪头发都像整容,可惜好久没有剪过头发了。


4.经过第一个请求之后,再有HTTP过来的时候,Servlet会直接调用service方法为其服务,毕竟谁一辈子也不能接一个客户初始化一次吧。


5.最后当服务关闭的时候,会销毁这个对象,在销毁前会调用destroy方法。

 

Tomcat中Servlet实际上可以看成是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类。而Tomcat本质上是一个免费的开放源代码的Servlet容器,Servlet容器在Servlet的生命周期内包容和管理Servlet。Servlet被编译为平台独立的字节码,可以被动态地加载到支持Java技术的Tomcat服务器中运行。至于Servlet容器的相关知识,在本站的Tomcat服务器教程中有详细讲解,不要错过哦。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>