servlet学习

servlet=service+applet 可以理解为用来服务的小程序

为什么用servlet

早期web服务器只能处理静态资源请求,客户端请求动态资源时,服务器就把请求转交给扩展程序,运用的是CGI技术(技术复杂),只要有请求,就分配给他一个单独进程来处理,可移植性差。后来出现了servlet慢慢取代了CGI,各个请求被分配为一个进程中的各个线程,服务器处理请求的开销被明显降低。

作用

servlet在Javaweb的MVC模型中处于controller,负责处理用户发送的请求。

servlet组件运行原理

浏览器————>服务器————>servlet容器(通信模块———>servlet)

在浏览器输入请求地址后,浏览器根据IP和端口号找到服务器。如果请求的是静态资源,服务器直接提供响应。如果是动态资源,服务器的通信模块将请求发送给servlet容器(由Tomcat,weblogic...充当,不仅具备管理servlet组件的功能,还具备web服务器的一些功能),servlet容器用来创建servlet实例,将请求中的数据解析出来传给servlet,servlet处理完后,响应结果由servlet的通信模块发送给服务器。后期servlet的销毁及管理都由servlet容器处理。

servlet生命周期及回调方法

有三个阶段:初始化,运行,销毁

初始化:1.servlet容器加载servlet类,将servlet类的.class类文件中数据读到内存中

               2.servlet容器创建servletconfig对象,包含了servlet的初始化配置信息

               3.servlet容器创建servlet对象

               4.调用servlet对象的init方法来初始化

运行:servlet容器接收到请求,针对这个请求创建servletRequest和servletResponse对象,调用service方法,把这两个参数传过去。service通过servletResquest对象获得请求,然后处理请求,通过servletResponse生成这个请求的响应结果。最后销毁servletRequest和servletResponse,不管请求是post还是get,都由service处理。

销毁:web应用终止,调用servlet对象的destroy方法,销毁servlet对象和跟他有关的servletConfig对象,释放servlet所占的资源(关闭数据库连接,关闭文件输入输出流等)。

在servlet生命周期中,初始化和销毁阶段都只执行一次。service方法执行的次数取决于service被客户端访问的次数。

 

posted @ 2018-11-12 22:36  wkkke  阅读(80)  评论(0)    收藏  举报