HtmlWebDay01

Http超文本协议:
特点:无状态,每一次的请求都是单独的.没有任何的联系(但是实际开发中不是这样);
用处:实际上就是指在与服务器一问一答的过程中必须要遵守的协议,
请求:浏览器向服务器发送数据
响应:服务器向浏览器发送数据

HTTP的版本:
91年诞生了0.9版本,只有get命令只能向服务器请求一个静态的网页
96年诞生1.0版本,除了静态页面以外,增加了文件,图片,二进制数据等并新增了post,head命令
97年诞生1.1版本
15年诞生了2.0版本

http与https的区别:
HTTPS在HTTP基础上增加了ssl/tls加密处理;

浏览器每次想服务器发送请求,服务器都需要做什么?
接收请求并解析请求头
服务器响应浏览器请求,先添加响应头,然后返回响应主题。
解析请求头以及添加响应头的操作都由tomcat服务器来帮我们完成,我们只需要接收请求以及响应即可。

tomcat的目录结构:
bin: 命令目录
conf: 配置文件
lib: 里面存放的都是tomcat运行时需要的jar包
logs; 日志信息
temp: 存放临时文件的
webapps: 部署项目的目录
work: 里面存放编译后的.java .class文件。
src: 里面存放的是源码。

B/S 与 C/S架构模式:

C/S 客户端与服务器的架构模式
例如,qq,或者扫雷,等一些游戏都是这种模式。
特点:数据库存在客户端,存储数据,页面渲染,交互逻辑都是在客户端完成的。
优点:安全性高,用户体验效果好,功能强大。
缺点:每次升级都需要手动更新客户端,可移植性差
B/S 浏览器与服务器的结构模式
例如:很多的页游
特点:jsp,html,asp,php等都是基于浏览器访问,存储数据,业务逻辑等全部交由服务器处理,客户端只负责渲染页面。
优点:客户端压力较小,每次更新与客户端无关,可移植性强。
缺点:用户体验差,安全性较差

现在的项目目录:
src 里面存放Java的源代码
build web项目默认将编译后的.class文件放在这里
WebContent 我们所有的html,jsp,css,js,图片等所有页面的资源都在这里
META-INF 信息包,不需要管
WEB-INF 专门存放我们的web.xml以及lib等,web-inf下的资源都不能直接通过url来访问。
lib 我们使用的第三方jar包都需要存放到lib下。
web.xml 一个web项目最核心的配置文件。

启动项目:
选中项目,右键 选择RunAs,然后选择 Run on server ,然后选择需要添加的服务器(或项目)即可。

解析访问地址:http://localhost:8080/WDemo01/1.html
DNS:把域名解析成ip地址,然后才能找到对应的服务器
例如:输入www.baidu.com(域名),需要使用DNS才能解析成ip地址
localhost:代表本地主机
8080:代表tomcat应用的端口号(web端口默认全部都是80)
我们的电脑上可以同时打开很多的应用,如何找到对应的应用呢,需要通过ip来找到哪一台电脑,端口确定了访问电脑上的
哪一个应用,我们只有通过ip+端口(套接字)才能确定要访问哪个电脑上的哪个应用。
WDemo01:上下文路径,一般都是我们的项目名称(自动生成的,可以在server.xml中取消掉)。
1.html:我们的项目中会有多个页面,根据这个路径来确定具体访问的哪里。

TCP三次握手(客户端与服务器建立连接的过程):
1:客户端向服务器发送连接请求
2:服务器收到客户端的连接请求之后,向客户端发送连接请求
3:客户端收到了服务端的连接请求后开始连接。
我(客户端) 李军齐(服务端)
我:能听到么
李:听到了,你能听到么
我:能听到(开始交流)
TCP四次挥手(断开连接)
1:客户端向服务器发送断开连接的请求
2:服务器接收到客户端发送的断开连接请求
3:服务器向客户端发送断开连接请求
4:客户端接收到服务器发送的断开连接请求
断开连接。

虽然现在我们的tomcat服务器可以去接收请求了,但是请求现在无法与我们的Java代码相关联,所以我们需要使用servlet来
处理请求。
servlet是一个规范,由sun公司在97年提供的一组接口,这一组接口由tomcat等各种服务器去实现。
servlet在本质上也是一个Java的类,只是这个类需要遵守一些规范,可以用来处理我们的请求以及返回响应信息。
(也就是说,我们自己编写一个类,只要符合servlet规范就能去处理客户端的请求了。)
servlet与tomcat的关系
我们可以将servlet看成一个处理请求的小型服务器,tomcat就是这些服务器运行的容器,tomcat是一个 servlet/jsp运行
的容器,tomcat负责接收客户端的请求当接收到请求之后找到对应的servlet来处理这些请求,并将servlet的响应结果返回
给客户端。

servlet的请求流程:
本地的端口
1:dns解析上面的浏览器地址,根据localhost找到了本地主机,然后根据8080端口找到了tomcat应用
2:找到tomcat(解析上下文之后)根据/hello请求,tomcat根据解析web.xml时候获得的所有的url-pattern看是否有对应
的路径,如果没有会报404,如果找到了会根据对应的servlet-name 找到对应的servlet。
3:先判断servlet缓存池中是否存在有对应的servlet对象,如果有对象则直接跳到第7步
4:如果没有对应的servlet对象,则根据全限定名创建一个servlet对象然后将其放入到缓存池中。
obj = Class.forName(“全限定名”).newInstance();
5:创建servletConfig对象,并将对象注入到init()方法之中。
6:创建ServletRequest于ServletResponse对象,注入到service方法之中。
7:调用service方法来处理请求。

如何给servlet中的属性赋值:
一:在servlet标签中加入如下代码:

		<init-param>
			<param-name>name</param-name>
			<param-value>张三</param-value>
		</init-param>

二:当有100个servlet,所需要的的属性以及值都一样的情况下,使用上面的代码需要写100次,这个时候可以使用下面代码
直接给所有的servlet属性赋值。

<context-param>
	<param-name>name</param-name>
		<param-value>上下文的张三</param-value>
	</context-param>

实现servlet的三种方式:
1:实现servlet接口
缺点:需要实现servlet中的所有方法,很多方法我们用不到。
2:继承GenericServlet抽象类
缺点:并没有直接提供我们HTTP请求以及响应对象,提供的是servlet原生对象。
3:继承HttpServlet抽象类
优点: 1:可以什么方法都不实现(因为都提供有默认实现)
2:重写service方法的时候,会在里面自动注入 Http的请求与响应对象。

Servlet的声明周期:
构造器------>init方法 ----->循环调用service----->destory方法
1:构造方法先执行,因为servlet中的所有方法都是非静态的,全部需要创建对象后才能调用
2:一个servlet类在程序运行期间只会诞生一个对象,默认是在第一次访问的时候才创建。
3:init方法在创建完对象后立马调用,一个servlet对象只会执行一次。
4:service方法会在每次请求的时候都执行。
5:destory方法,会在tomcat正常关闭的时候执行。

Servlet的初始化策略(什么时候创建的对象):
1:默认是第一次请求的时候创建对象。
2:可以在servlet中使用0来指定加载时间,值越小越先加载。
如果值是负数,代表什么时候访问,什么时候加载(默认)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小郑要做干饭人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值