web服务器工作原理及协议
2016-04-21 14:51
218 查看
Web服务器负责接收客户端请求,每当收到客户端连接请求之后,Web服务器应该使用单独的线程为该客户端提供服务:接收请求数据、相应请求数据。B/S的应用架构总是先由客户端发送请求,服务器端接收到请求后送回响应的数据,也将这种架构称作“相应/请求”架构。对于每次客户端请求而言,Web服务器大致需要完成如下几个步骤:
1 启动单独的线程
2 使用I/O流读取用户的请求数据
3 从请求数据中解析参数
4 处理用户请求
5 生成响应数据
6 使用I/O流向客户端发送请求数据
其中启动单独线程、使用I/O流读取用户数据、使用I/O流向客户端发送请求数据是通用的,可以由Web服务器完成,但是由于从数据中解析的参数的不同,处理应用请求的不同,相应数据的不同,Web服务器会调用Servlet的_jspService()方法来完成以上三步。当我们编写JSP页面时,页面里的静态内容、JSP脚本都会转换成_jspService()方法邪恶执行代码,这些代码负责完成解析参数、处理请求、生成响应等业务功能,而Web服务器则负责完成多线程、网络通信等底层的功能。
Web在执行了第3部解析到用户的请求参数之后,将需要通过这些请求参数来创建HttpServletRequest、HttpServletResponse等对象,作为调用_jspService()方法的参数,实际上一个Web服务器必须为Servlet API中绝大部分接口提供实现类。
Web应用里的JSP页面,Servlet等程序都是由Web服务器来调用(因此又可称作Servlet容器),JSP、Servlet之间不会相互调用,他们之间的信息交互则需Web服务器负责。几乎所有的Web服务器(Apache,IIS···)都会提供四个类似Map的结构,分别是application、session、request、page。这四个Map结构的作用范围是不同的。
· application:对于整个Web应用都有效,一旦JSP、Servlet将数据存入到application中,该数据可以被该应用下的其他所有JSP、Servlet访问。
· session:仅对一次会话有效,一旦JSP、Servlet将数据存入session中,该数据可以被本次会话的其他所有JSP、Servlet访问。
· request:仅对本次请求有效,一旦JSP、Servlet将数据存入到request中,该数据可以被该次请求的其他JSP、Servlet访问。
· page:仅对当前页面有效,一旦JSP、Servlet将数据存入page中,该数据只可以被当做当前页面的JSP脚本、声明部分访问。
将数据放入application,session,request,page中之后,就相当于扩大了该数据的作用范围,所以我们也认为application、session、request、page中的数据分别处于application、session、request、page范围之内。而JSP中的application、session、request、page四个内置对象分别用于操作application、session、request、和page中的数据。
http协议使Web服务器和浏览器可以通过Web交换数据。它是一种请求/响应协议,即服务器等待并响应客户方请求。H T T P不维护与客户方的连接,它使用可靠的T C P连接,通常采用TCP 80端口。客户/服务器传输过程可分为四个基一步骤:
1) 浏览器与服务器建立连接;
2) 浏览器向服务器请求文档;
3) 服务器响应浏览器请求;
4) 断开连接。
H T T P是一种无状态协议,它不维护连接的状态信息。
1 启动单独的线程
2 使用I/O流读取用户的请求数据
3 从请求数据中解析参数
4 处理用户请求
5 生成响应数据
6 使用I/O流向客户端发送请求数据
其中启动单独线程、使用I/O流读取用户数据、使用I/O流向客户端发送请求数据是通用的,可以由Web服务器完成,但是由于从数据中解析的参数的不同,处理应用请求的不同,相应数据的不同,Web服务器会调用Servlet的_jspService()方法来完成以上三步。当我们编写JSP页面时,页面里的静态内容、JSP脚本都会转换成_jspService()方法邪恶执行代码,这些代码负责完成解析参数、处理请求、生成响应等业务功能,而Web服务器则负责完成多线程、网络通信等底层的功能。
Web在执行了第3部解析到用户的请求参数之后,将需要通过这些请求参数来创建HttpServletRequest、HttpServletResponse等对象,作为调用_jspService()方法的参数,实际上一个Web服务器必须为Servlet API中绝大部分接口提供实现类。
Web应用里的JSP页面,Servlet等程序都是由Web服务器来调用(因此又可称作Servlet容器),JSP、Servlet之间不会相互调用,他们之间的信息交互则需Web服务器负责。几乎所有的Web服务器(Apache,IIS···)都会提供四个类似Map的结构,分别是application、session、request、page。这四个Map结构的作用范围是不同的。
· application:对于整个Web应用都有效,一旦JSP、Servlet将数据存入到application中,该数据可以被该应用下的其他所有JSP、Servlet访问。
· session:仅对一次会话有效,一旦JSP、Servlet将数据存入session中,该数据可以被本次会话的其他所有JSP、Servlet访问。
· request:仅对本次请求有效,一旦JSP、Servlet将数据存入到request中,该数据可以被该次请求的其他JSP、Servlet访问。
· page:仅对当前页面有效,一旦JSP、Servlet将数据存入page中,该数据只可以被当做当前页面的JSP脚本、声明部分访问。
将数据放入application,session,request,page中之后,就相当于扩大了该数据的作用范围,所以我们也认为application、session、request、page中的数据分别处于application、session、request、page范围之内。而JSP中的application、session、request、page四个内置对象分别用于操作application、session、request、和page中的数据。
http协议使Web服务器和浏览器可以通过Web交换数据。它是一种请求/响应协议,即服务器等待并响应客户方请求。H T T P不维护与客户方的连接,它使用可靠的T C P连接,通常采用TCP 80端口。客户/服务器传输过程可分为四个基一步骤:
1) 浏览器与服务器建立连接;
2) 浏览器向服务器请求文档;
3) 服务器响应浏览器请求;
4) 断开连接。
H T T P是一种无状态协议,它不维护连接的状态信息。
相关文章推荐
- centos 删除 、安装和配置jdk
- OracleHelper.cs 源码
- windows下Flask上传文件路径
- 如何生成a1,a2,a3,a4这样的变量名
- Hammer.js移动端触屏框架的使用
- ng-repeat 嵌套访问父作用域里的属性
- 期中总结
- ABAP 合并单元格自建函数
- 面向对象开发弹窗组件
- 消息中间件的技术选型心得-RabbitMQ、ActiveMQ和ZeroMQ
- Mysql编码出现错乱问题
- 调用本地相册与相机(4.4版本与以下的区别)
- RESTful架构---结合spring MVC 4
- mysql优化
- SSM整合之创建Maven项目
- uboot的链接脚本
- 【学习】如何制作手机端html模板(REM的实际应用)
- saltstack(五) saltstack的state状态管理
- 环境相关的测试
- [Oracle]ASP.NET+Oracle连接类conn.cs