Http协议&Servlet
Http协议
双方在交互、通讯的时候, 遵守的一种规范、规则。
针对网络上的客户端 与 服务器端在执行http请求的时候,遵守的一种规范。其实就是规定了客户端在访问服务器端的时候,要带上哪些东西, 服务器端返回数据的时候,也要带上什么东西。
1.0
请求数据,服务器返回后, 将会断开连接
1.1
请求数据,服务器返回后, 连接还会保持着。除非服务器 | 客户端 关掉。有一定的时间限制,如果都空着这个连接,那么后面会自己断掉。
演示客户端 如何 与服务器端通讯。
在地址栏中键入网络地址 回车 或者是平常注册的时候,点击了注册按钮 , 浏览器都能显示出来一些东西。那么背地里到底浏览器和服务器是怎么通讯。它们都传输了哪些数据。
6.x 和 7.x 的文档页面有所不同,但是只要找到example就能够找到例子工程
接着点击Request Parameters 的 Execute超链接
执行tomcat的例子,然后查看浏览器和 tomcat服务器的对接细节
Http请求数据解释
请求的数据里面包含三个部分内容 :请求行 、 请求头 、请求体
POST /examples/servlets/servlet/RequestParamExample HTTP/1.1
POST :请求方式 ,以post去提交数据 /examples/servlets/servlet/RequestParamExample请求的地址路径 , 就是要访问哪个地方。HTTP/1.1 协议版本
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, /
Referer: http://localhost:8080/examples/servlets/servlet/RequestParamExample
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8080
Content-Length: 31
Connection: Keep-Alive
Cache-Control: no-cache
Accept: 客户端向服务器端表示,我能支持什么类型的数据。Referer :真正请求的地址路径,全路径Accept-Language: 支持语言格式User-Agent: 用户代理 向服务器表明,当前来访的客户端信息。Content-Type:提交的数据类型。经过urlencoding编码的form表单的数据Accept-Encoding:gzip, deflate :压缩算法 。Host :主机地址Content-Length:数据长度Connection : Keep-Alive 保持连接Cache-Control :对缓存的操作
浏览器真正发送给服务器的数据
发送的数据呈现的是key=value ,如果存在多个数据,那么使用 & firstname=zhang&lastname=sansan
请求的数据里面包含三个部分内容 :响应行 、 响应头 、响应体
HTTP/1.1 200 OKServer: Apache-Coyote/1.1Content-Type: text/html;charset=ISO-8859-1Content-Length: 673Date: Fri, 17 Feb 2017 02:53:02 GMT...这里还有很多数据...
HTTP/1.1 200 OK
协议版本 状态码 咱们这次交互到底是什么样结果的一个code. 200 : 成功,正常处理,得到数据。 403 : for bidden 拒绝 404 :Not Found 500 :服务器异常OK 对应前面的状态码
Server: 服务器是哪一种类型。Tomcat
Content-Type :服务器返回给客户端你的内容类型Content-Length :返回的数据长度Date :通讯的日期,响应的时间
Get 和 Post请求区别
Web资源
在http协议当中,规定了请求和响应双方, 客户端和服务器端。与web相关的资源。
有两种分类
html 、 js、 css
servlet/jsp
Servlet
其实就是一个java程序,运行在我们的web服务器上,用于接收和响应 客户端的http请求。
更多的是配合动态资源来做。当然静态资源也需要使用到servlet,只不过是Tomcat里面已经定义好了一个 DefaultServlet
Hello Servlet
配置Servlet , 用意:告诉服务器,我们的应用有这么些个servlet。
在webContent/WEB-INF/web.xml里面写上以下内容。
新建一个类, 实现Servlet接口
- <!-- 向tomcat报告, 我这个应用里面有这个servlet, 名字叫做HelloServlet , 具体的路径是com.itheima.servlet.HelloServlet -->
- <servlet>
- <servlet-name>HelloServlet</servlet-name>
- <servlet-class>com.itheima.servlet.HelloServlet</servlet-class>
- </servlet>
- <!-- 注册servlet的映射。servletName : 找到上面注册的具体servlet, url-pattern: 在地址栏上的path 一定要以/打头 -->
- <servlet-mapping>
- <servlet-name>HelloServlet</servlet-name>
- <url-pattern>/a</url-pattern>
- </servlet-mapping>
3. 在地址栏上输入 http://localhost:8080/项目名称/a
Servlet执行过程
Servlet的通用写法
- Servlet (接口)
- |
- |
- GenericServlet
- |
- |
- HttpServlet (用于处理http的请求)
定义一个类,继承HttpServlet 复写doGet 和 doPost
Servlet的生命周期
从创建到销毁的一段时间
从创建到销毁,所调用的那些方法。
在创建该servlet的实例时,就执行该方法。
一个servlet只会初始化一次, init方法只会执行一次
默认情况下是 :初次访问该servlet,才会创建实例。
只要客户端来了一个请求,那么就执行这个方法了。
该方法可以被执行很多次。一次请求,对应一次service方法的调用
servlet销毁的时候,就会执行该方法
1. 该项目从tomcat的里面移除。
2. 正常关闭tomcat就会执行 shutdown.bat
doGet 和 doPost不算生命周期方法,所谓的生命周期方法是指,从对象的创建到销毁一定会执行的方法, 但是这两个方法,不一定会执行。
让Servlet创建实例的时机 提前。
- <servlet>
- <servlet-name>HelloServlet04</servlet-name>
- <servlet-class>com.itheima.servlet.HelloServlet04</servlet-class>
- <load-on-startup>2</load-on-startup>
- </servlet>
ServletConfig
Servlet的配置,通过这个对象,可以获取servlet在配置的时候一些信息
先说 , 在写怎么用, ***说有什么用。
- //1. 得到servlet配置对象 专门用于在配置servlet的信息
- ServletConfig config = getServletConfig();
- //获取到的是配置servlet里面servlet-name 的文本内容
- String servletName = config.getServletName();
- System.out.println("servletName="+servletName);
- //2、。可以获取具体的某一个参数。
- String address = config.getInitParameter("address");
- System.out.println("address="+address);
- //3.获取所有的参数名称
- Enumeration<String> names = config.getInitParameterNames();
- //遍历取出所有的参数名称
- while (names.hasMoreElements()) {
- String key = (String) names.nextElement();
- String value = config.getInitParameter(key);
- System.out.println("key==="+key + " value="+value);
- }
为什么需要有这个ServletConfig
在开发当中比较少用。
刚才的这个实验, 希望基础好或者感兴趣的同学,回去自己做一下。
总结
Http协议
1.基本了解 请求和响应的数据内容
请求行、 请求头 、请求体
响应行、响应头、响应体
2.Get和Post的区别
3.使用HttpWacht 抓包看一看http请求背后的细节。
Servlet【重点】
1.Servlet的生命周期
init 一次 创建对象 默认初次访问就会调用或者可以通过配置,让它提前 load-on-startup
service 多次,一次请求对应一次service
destory 一次 销毁的时候 从服务器移除 或者 正常关闭服务器
2.ServletConfig
获取配置的信息, params
3.会使用简单的servlet
写一个类,实现接口Servlet
配置Servlet
会访问Setvlet
云、本地数据中心、SaaS、多样化商业服务、多供应商和劳动力迁移不断涌现,这就...
虚拟内存 尽管基址寄存器和变址寄存器用来创建地址空间的抽象,但是这有一个其他...
概念 什么是反向代理其与正向代理有什么区别? 正向代理是指客户端与目标服务器之...
早期内存通过存储器总线和北桥相连,北桥通过前端总线与CPU通信。从Intel Nehale...
【51CTO.com原创稿件】提到定制化服务器,我想大家对其并不陌生,只是由于之前用...
新型冠状病毒感染的肺炎疫情发生以来,天津高新区企业中科曙光第一时间启动了应...
一、不同气象区的选择 1、我国五大气象区域的气象特点 我国面积有960万平方公里...
预测美国大学生篮球联赛(NCAA)一级男子篮球锦标赛的结果和锦标赛本身一样具有竞...
敏捷性已成为许多经历新冠病毒危机的全球性和英国本土组织机构的正面特征。以下...
【51CTO.com原创稿件】AI在各种场景的应用落地,对算力提出了更高的要求,这就需...