课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
容器是程序员在学习软件编程开发知识的时候会接触到的一个编程开发技术,而今天我们就通过案例分析来了解一下Servlet容器的一些基础知识。下面就开始今天的主要内容吧。
一、Servlet
很多同学可能跟我一样始终没有搞清楚到底什么是Servlet,什么是Servlet容器。网上看了很多帖子,或许人家说的很清楚,但是自己的那个弯弯就是拐不过来。
想了很久说一下自己的理解。
Javaweb开发中为啥要有Servlet呢?是否可以不要。
web开发的本质就一句话:客户端和服务器交换数据。于是你使用Java的Socket套接字进行编程,去处理客户端来的tcp请求,经过编解码处理读取请求体,获取请求行,然后找到请求行对应的处理逻辑步入服务器的处理中,处理完毕把对应的结果返回给当前的Socket链接,响应完毕,关闭Socket。
以上过程,你有没有发现其实是两个部分:
建立连接,传输数据,关闭连接,你肯定知道这些步骤不是你所开发的web服务去处理的,而是tomcat容器帮你做了这些事情。
拿到请求行之后去找对应的url路由,这一部分是谁做的呢?在如今SpringBoot横行的时代,去配置化已经成为趋势,编程越来越简单导致的后果就是越来越难以理解事物开始的样子。
Servlet接口规定请求从容器到达web服务端的规范,重要的三个步骤是:
init():初始化请求的时候要做什么;
service():拿到请求的时候要做什么;
destory():处理完请求销毁的时候要做什么。
所有实现Servlet的实现方都是在这个规范的基础上进行开发。那么Servlet中的数据是从哪里来的呢?答案就是Servlet容器。容器才是真正与客户端打交道的那一方。Servlet容器只有一个,而Servlet可以有多个。常见的Servlet容器Tomcat,它监听了客户端的请求端口,根据请求行信息确定将请求交给哪个Servlet处理,找到处理的Servlet之后,调用该Servlet的service()方法,处理完毕将对应的处理结果包装成ServletResponse对象返回给客户端。
二、Servlet容器
上面说过,Servlet只是一个处理请求的应用程序,光有Servlet是无法运行起来的,需要有一个main方法去调用你的这段Servlet程序才行。所以这里出现了Servlet容器的概念。Servlet容器的主要作用是:
建立连接;
调用Servlet处理请求;
响应请求给客户端;
释放连接;
这上面的四步,如果是你来设计的话是否可以用一个模板方法搞定,1,3,4都是固定的步骤,不会因为请求不同而有很大的变化。2却会因为对应的请求不同需要业务逻辑自己去实现不同的处理。所以这里抽象出来了Servlet,Servlet想怎么玩就怎么玩,这是你自己的事情。容器帮你做的是你不想做的脏活累活。
另外,既然叫做容器肯定是能装多个Servlet,并且可以管理Servlet的声明周期。这些功能应该是容器必备的。
上面提到了web.xml中的DispatcherServlet,它是Spring中定义的一个Servlet,实现了Servlet接口,本质也是一个Servlet。只是它是HttpServlet的继承者,主要处理http请求。所以Spring程序本质是就是一个Servlet。SpringMVC帮你做了本该你去实现的逻辑,你看不到并不代表它不是。
好啦,以上通俗的语言解释了什么是Servlet,什么是Servlet容器,以及Servlet和Servlet容器之间的关系。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!