Java基础

Java基础——Servlet浅析

2018-11-12  本文已影响2人  莫问以

1、什么是Servlet?

Servlet技术是使用Java语言开发的一套组件规范,不再像CGI技术那样需要分配单独的进程来处理请求,而是单独分配一个线程来处理,于是大大提升了处理效率。并且Java语言是跨平台的语言,也提升了Web服务器扩展程序的可移植性,已经取代了CGI技术,成为BS架构中的主流技术。所有后续的BS架构中的主流框架本质上都是基于Servlet来实现的,所以Servlet在于交互式的浏览和修改数据,生成动态Web内容。
--补充:组件规范是什么?
组件规范是依靠一套API来实现的,也就是说开发中只要基于Sun公司提供的这套API,按照一定的规则来编写程序,那么就可以实现针对Web服务器的功能扩展。
但是组件只是对部分功能的一个实现,不能单独运行,必须放在一定的环境中才能运行。而这个针对各个组件进行管理、创建、销毁的运行环境即容器。

2、Servlet的运行原理

Servlet作为补充Web服务器功能的组件,需要依赖于Servlet容器才能运行,它的运行原理如图:

Servlet的运行原理.png

在浏览器中输入请求地址后,浏览器会依据IP地址及端口号找到对应的Web服务器,如果请求的是静态资源,Web服务器直接提供响应;如果请求的是动态资源,Web服务器的通信模块会将该请求传递给Servlet容器的通信模块,Servlet容器负责创建Servlet实例,并将请求中的数据解析出来传递给Servlet。在Servlet处理完数据之后,响应结果也是由容器的通信模块负责返回给Web服务器。后续的Servlet的销毁及管理都由容器来负责。

能够充当Servlet容器这个角色的有很多软件,如Tomcat、Weblogic、JBoss等。而这些Servlet容器不仅仅具备了管理Servlet组件的功能,也具备了Web服务器的一些功能,所以很多时候只要安装一个Tomcat软件就同时具备了Web服务器及Servlet容器的双重功能。

Servlet详细运行原理图.png

1、浏览器通过向服务器发送ip地址,端口号等信息与服务器建立连接。
2、建立连接后浏览器端通信组件将请求数据打包发送给服务器。
3、服务器接收到用户请求数据后服务器端通信组件将数据拆包。
4、创建request请求对象和response响应对象。
5、创建Servlet实例对象后调用该实例对象的doGet/doPost/service方法传入request请求对象和response响应对象。
6、request请求对象接收请求信息数据,处理完毕后由response相应对象将处理结果进行响应。
7、服务器端通信组件将响应信息打包并发送给浏览器。
8、浏览器接收到响应信息后通信组件将其拆包并将数据展示在浏览器页面
9、响应结束与服务器端口断开连接。

3、web.xml的配置中<context-param>的作用

A、启动一个WEB项目时容器(如:Tomcat)会去读配置文件web.xml,主要读两个节点: <listener></listener> 和 <context-param></context-param>
B、随后容器创建一个ServletContext(上下文)让WEB项目所有部分共享
C、容器将<context-param></context-param>转化为键值对并交给ServletContext
D、容器创建<listener></listener>中的类实例,即创建监听
E、在监听中会有contextInitialized(ServletContextEvent args)初始化方法,在该方法中获得ServletContext = ServletContextEvent.getServletContext();
context-param的值 = ServletContext.getInitParameter("context-param的键");
F、得到context-param的值之后,便可以做相关操作。

上一篇下一篇

猜你喜欢

热点阅读