servlet学习(一)
Tomcat
注:以下资料摘自孙鑫的《sevlet/JSP深入详解》,仅用于个人学习使用。
一.web技术的发展
早期web是静态页面的浏览,使用HTML编写,放入服务器。
1.1浏览器请求静态页面的流程
随着发展,用户访问的资源不仅仅局限于静态网页,更多的应用需要根据用户的请求动态生成页面信息 ,复杂一些的还需要从数据库中提取数据,经过一定的运算,生成一个页面返回给客户。
早期使用的Web服务器扩展机制是CGI,它允许用户调用Web服务器上的CGI程序。CGI的全称是Common Gateway Interface,即公共网关接口。大多数的CGI程序使用Perl来编写,也有使用C、Python或PHP来编写的。CGI程序编写是非常困难的,对用户请求的响应时间较长、以进程方式运行导致性能受限等。由于CGI程序的这些缺点,开发人员需要其他的CGI方案。97年SUN公司推出了Servlet,作为Java的CGI解决方案。
Java Servlet(Java服务器小程序)是一个基于Java技术的Web组件,运行在服务器端,由Servlet容器(有时也称作Servlet引擎)所管理,用于生成动态的内容。Servlet不能独立运行,它必须被部署到Servlet容器中,由容器来实例化和调用Servlet的方法,Servlet容器在Servlet的生命周期内包容和管理Servlet。JSP技术推出后,管理和运行Servlet的容器也被称为Web容器。
那么在用户点击一个URL之后用户通过访问Servlet,Web服务器接收请求后,并非将请求直接交给Servlet,而是交给Servlet容器。Servlet容器实例化Servlet,调用Servlet的一个特定方法对请求进行处理,并产生一个响应。这个响应由Servlet容器返回给Web服务器,Web服务器包装这个响应,以HTTP响应的形式发送给Web浏览器。
servlet的特点:单实例多线程(每个请求在一个独立的线程中运行,而提供服务的Servlet实例只有一个);使用Java编写,具有Java的一切优点;可以访问Java平台丰富的类库,使得各种应用的开发更为容易,用了Java之后都会觉得Java的类库真的很方便,比c++更加受欢迎。
2.Tomcat(servlet的运行环境)
学习servlet技术首先需要servlet的运行环境,我们这里采用Tomcat容器
1.2 Tomcat服务器接受客户请求并做出响应的过程
1.客户端访问Web服务器,发送HTTP请求。
2.Web服务器接收到请求后,传递给Servlet容器。
3. Servlet容器加载Servlet,产生Servlet实例,向其传递表示请求和响应的对象。
4. Servlet实例使用请求对象(Request)得到客户端的请求信息,然后进行相应的处理。
5. Servlet实例将处理结果通过响应对象(Response)发送回客户端,容器负责确保响应正确送出,同时将控制返回给Web服务器。
Tomcat是Web服务器和Servlet容器的结合。
Web服务器:是网络环境下为客户提供某种服务的专用计算机,简单的来说就是将计算机的资源映射为一个URL供外界访问
Servlet容器:Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。任何一个应用程序必然包括三个步骤:
1.接收请求
2.处理请求
3.响应请求
接收和响应请求是共性功能,没有差异性,所以把这两种步骤抽取成web服务器。处理请求逻辑上和这两个步骤不同,被抽取出来做成servlet,再到后来servlet被抽取成三层
servlet学习(一)的更多相关文章
- JSP&Servlet学习手册
JSP&Servlet学习手册 沙琪玛 书 目录 JSP 指令... 3 书写方式... 3 指令列表... 3 JSP 内置对象... 3 内置对象特点... 3 常用内置对象... 3 o ...
- Servlet 学习笔记
Servlet 运行在服务器上的 java 类: Servlet 容器为 javaWeb 应用提供运行时环境,负责管理 servlet 和 jsp 生命周期,以及管理他们的共享数据. 现在我们知道了 ...
- Servlet学习:(三)Servlet3.0 上传文件
转: Servlet学习:(三)Servlet3.0 上传文件 2018年08月03日 11:57:58 iDark_CSDN 阅读数:362 一.注意事项 客户端(浏览器) 表单的提交方法必须是 ...
- Servlet学习(九)——request
request运行流程在Servlet学习(四)——response已介绍,不再赘述 1.通过抓包工具获取Http请求 因为request代表请求,所以我们可以通过该对象分别获得Http请求的请求行, ...
- # jsp及servlet学习笔记
目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...
- Servlet学习笔记(四)
目录 Servlet学习笔记(四) 一.会话技术Cookie.session 1. 什么是会话技术? 2. 会话技术有什么用? 3. Cookie 3.1 什么是Cookie? 3.2 使用Cooki ...
- Servlet学习笔记(三)
目录 Servlet学习笔记(三) 一.HTTP协议 1.请求:客户端发送欸服务器端的数据 2.响应:服务器端发送给客户端的数据 3.响应状态码 二.Response对象 1.Response设置响应 ...
- Servlet学习笔记(二)
目录 Servlet学习笔记(二) Request对象 1.request和response对象: 2.request对象继承体系结构: 3.什么是HttpServletRequest ? 4.Htt ...
- servlet 学习(二)
一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...
- JavaWeb学习总结-04 Servlet 学习和使用
一 Servlet 1 Servlet概念 Servlet时运行在服务器端的Java程序. Servlet的框架核心是 javax.servlet.Servlet 接口. 所有自定义的Servlet都 ...
随机推荐
- TDD & Unit testing
TDD & Unit testing TDD jest https://github.com/facebook/jest https://facebook.github.io/jest/zh- ...
- PEP 8 & Style Guide
PEP 8 & Style Guide Style Guide for Python Code https://www.python.org/dev/peps/pep-0008/ PEP Py ...
- Objec.assign & bug
Objec.assign & bug shallow copy https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Referenc ...
- SPEC-RFC3261总述
最近学习VoLTE(Voice Vver LTE)相关知识,而学习VoLTE必须要学相关的协议,最基础的就是RFC3261,RFC3261的全称是:SIP: Session Initiation Pr ...
- Spring Data Solr
1.什么是spring data solr? Solr是一个开源搜索平台,用于构建搜索应用程序.简单的来说就是作为一个搜索引擎使用. 2.solr的安装(本地安装,远程安装同) 1)解压一个tomca ...
- Go的数组
目录 数组 一.数组的定义 1.声明数组 2.初始化设值 3.指定位置设值 4.不指定长度初始化(了解) 二.数组的使用 三.数组的类型 四.数组的长度 五.迭代数组 1.初始化迭代 2.使用rang ...
- Typora For Markdown 语法
数学表达式 要启用这个功能,首先到Preference->Editor中启用.然后使用$符号包裹Tex命令,例如:$lim_{x \to \infty} \ exp(-x)=0$将产生如下的数学 ...
- python+unittest+ddt数据驱动进行接口自动化测试
所谓数据驱动测试,简单的理解为数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.通过使用数据驱动测试的方法,可以在需要验证多组数据测试场景中,使用外部数据源实现对输入输出与期望值的参数化,避 ...
- nignx的location正则匹配
原文链接:http://nginx.org/en/docs/http/ngx_http_core_module.html Syntax: location [ = | ~ | ~* | ^~ ] ur ...
- System.Net.Mail邮件发送抄送附件(多个)
/// <summary> /// 邮件发送抄送附件 /// </summary> /// <param name="mailTo">收件人(可 ...