一.web
1.web资源与web开发
<1>是什么:web资源分为静态web资源和动态web资源
I.静态web:
i.是什么:
数据不会变,所有人都可以看
ii.技术栈:
html,css,js
iii.怎么用:
浏览器访问www.baidu.com 展示出百度首页的流程:
①客户端输入url发送一次请求->
②请求通过网络到达服务器中的WebServerPlugin服务(过滤一些垃圾请求,比如带有病毒的请求)->
③WebServerPlugin服务把静态资源交给webserver服务->
④WebServer服务找服务器在磁盘中有没有index.html页面->
⑤WebServer服务找到index.html以后把资源返回给客户端(如下图)
iv.存在的缺点:
①web页面无法动态更新,所有用户看到的都是同一个页面,不能交互(轮播图,点击特效是之前做的伪动态,伪动态用的技术栈有javascript,VBScript)
②无法和数据库交互(数据无法持久化,用户无法交互)
II.动态web:
i.是什么:
页面会动态展示,web页面的展示效果因人而异,如淘宝
ii.技术栈:
servlet/jsp,asp,php
iii.怎么用:
访问动态资源流程:
①客户端输入url发送一次请求->
②请求通过网络到达服务器中的WebServerPlugin服务(过滤一些垃圾请求,比如带有病毒的请求)->
③WebServerPlugin服务过滤出来动态资源交给jsp/servlet渲染->
④处理后的动态资源交给webserver服务->
iv.优点
可以做到动态更新web页面,可以与数据库交互(可以做数据持久化:商品信息,用户注册信息...)
v.存在缺点:
如果服务器中动态web资源出现了错误(比如代码出错),就需要重新编写后台程序,并重新发布
III.总结:
java中,动态资源开发的技术统称为javaweb;
用户访问资源(动态、静态资源)流程:
2.web应用程序
<1>是什么
I.可以提供浏览器访问的程序;
多个web资源被放在同一文件夹下,就是一个web应用程序,但是想要访问需要依赖于服务器(比如tomcat)
II.一个web应用包含多个部分(静态web,动态web)
html,css,js
jsp,servlet
java程序
jar包
配置文件(properties)
<2>为什么用:
之前只能用C/S架构,玩单机版的,即只能给自己看,别人访问不到
<3>怎么用:
web应用程序编写完成,若想提供给外界访问,需要一个服务器统一管理;
这就是资源目录映射 ,即把本机上的电脑提供给外地访问(自己的域名在自己的电脑上可以使用)
3.web服务器
<1>是什么:
通过上面用户访问动态或静态资源的流程图发现,需要一个webserver,用来处理浏览器的一个请求并返回给用户一个响应
<2>技术分类:
I.Asp:
技术栈:c#,IIS
是什么:微软推出的,国内最早流行的web服务器,在html中嵌入了VB脚本ASP+COM,维护成本高
II.php:
是什么:跨平台,但无法承载大访问量的情况(有局限性,停留在中量型网站)
III. JSP/Serlet
技术栈:tomcat
是什么:sun公司推出的基于java编写的B/S架构(浏览器/服务器),可以承载三高带来的问题,语法接近ASP
<3>web服务器
iis
tomcat
二.tomcat服务器
1.是什么:
apache的开源项目,是一个web应用服务器,tomcat中运行着JSP和servlet
2.怎么用:
<1>安装并解压 : tomcat.apache.org/
<2>了解目录结构及配置文件(在idea中使用,不需要配置环境变量)
<3>tomcat的启动和关闭
3.发布web项目三种方式
<1>server.xml部署(了解)
I.怎么用
在tomcat/conf/server.xml中找到标签,添加标签
II.缺点
i.配置文件修改完毕后,需要重启后生效
ii.server.xml是tomcat的核心配置文件,如果稍有不慎操作失误,整个tomcat启动失败
<2>webapps部署(直接放在webapps下)
I. web项目的目录结构
II.webapps部署一个静态web网站
I.bin目录下找到startup.sh开启tomcat服务器->
II.把网站直接放到tomcat服务器指定的webapps文件夹下->(F:\apache-tomcat\webapps\myapp)
III.访问域名 ->(http://localhost:8080/myapp/index.html)(默认会访问index.html,所以可以不写)
<3>独立xml部署(开发时使用)
在tomcat/conf/Catalina/localhost 目录下创建一个xml文件,添加标签
4.IDEA中发布一个javaee工程
<1>.IDEA中配置tomcat
<2>.创建web项目
<3>.javaee工程目录
<4>发布web项目
<5>页面资源热更新
三.http
1.是什么
超文本传输协议(Hyper Text Transfer Protocol)是互联网上应用最为广泛的一种网络协议。
传输协议:在客户端和服务器端通信时,规范了传输数据的格式
2.chrome(谷歌)——按键f12
3.Http请求
<1>浏览器查看Http请求协议
I. get方式
II.post方式
<2>. HTTP请求消息格式
I.请求行
i. 格式
请求方式 请求路径 协议/版本号
ii.例如
POST /day07_myapp/static/login.html HTTP/1.1
GET /day07_myapp/static/login.html?username=jack&password=123 HTTP/1.1
iii.请求方式区别
①get
1>.请求参数在地址栏显示(请求行)
2>.请求参数大小有限制
3>.数据不太安全
②post
1>.请求参数不在地址栏显示(请求体)
2>.请求参数大小没有限制
3>.数据相对安全
II.请求头
i. 格式
请求头名称:请求头的值
ii.例如
Host: localhost:8080
iii.常见请求头
Host: localhost:8080 访问服务器的地址(域名+端口)
Connection: keep-alive 长连接(http1.1协议)
Cache-Control: max-age=0 设置缓存数据的存活时间,单位秒
Referer: http://baidu.com 上一次请求的地址
百度推广....
防盗链....
User-Agent: 客户端系统和浏览器版本
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) Chrome/63.0 Safari/537.36
浏览器兼容性
判断
谷歌方式一
IE方式二
火狐方式三
III.请求体(正文)
i.格式
参数名=参数值&参数名=参数值...
ii. 例如
username=jack&password=123
iii.注意
get方式没有请求体,post方式才有
4.Http响应
<1>浏览器查看Http响应协议
<2>HTTP响应消息格式
I.响应行
i. 格式
协议/版本号 状态码
ii. 例如
tomcat8:HTTP/1.1 200
tomcat7:HTTP/1.1 200 OK
iii. 常见状态码
--------------- 用户可以正常访问页面 200 :表示成功
302 :重定向
304 :从缓存中读取数据 --------------- 用户无法正常访问页面
404:请求资源未找到(not found)
405:请求的方法未找到(明天讲了servlet帅哥给大家演示....)
500:服务器内部错误(java代码写错了.....)
II.响应头
i.格式
响应头名称:响应头的值
ii. 例如
Last-Modified: Mon, 13 Apr 2020 06:11:24 GMT
iii.常见响应头
Location:通常与状态码302一起使用,实现重定向操作
Location:http://www.itcast.cn
Content-Type:服务器告诉客户端,返回响应体的数据类型和编码方式
Content-Type:text/html;charset=utf-8
Content-Disposition:服务器告诉客户端,以什么样方式打开响应体
* in-line(默认):浏览器直接打开相应内容,展示给用户
* attachment;filename=文件名:浏览器以附件的方式保存文件 【文件下载】
Refresh:在指定间隔时间后,跳转到某个页面
Refresh:5;http://www.itcast.cn
Last-Modified:通常与状态码304一起使用,实现缓存机制
Last-Modified: Mon, 13 Apr 2020 06:11:24 GMT
III.响应体(正文)
服务器返回的数据,由浏览器解析后展示给用户
用户看到页面所有的内容,都是在响应体中返回的