发布时间:2023-10-28 18:30
web开发:
web:网页的意思(从网上获取相应的资源页面)
静态web
html、css
提供给所有人看的数据始终不会发生变化
动态web
提供给所有人看的数据始终发生变化,
每个人在不同的时间,不同的地点看到的信息各不相同
技术栈
Servlet/JSP、ASP、PHP
在Java中,动态web资源开发的技术统称为Javaweb
web应用程序:可以提供浏览器访问的程序
a.html、b.html…多个web资源,这些web资源可以被外界访问,对外界提供服务
你们能访问到的任何一个页面或者资源,都存在这个世界的某一个角落的计算机上
通过URL进行查找访问
这些统一的web资源会被放在同一个文件下,变成一个web应用程序,要依赖于Tomcat:服务器
一个web应用程序由多部分组成(静态web、动态web)
html、css、js
jsp、servlet程序
java程序
jar包
配置文件(Properties)
web应用程序编写完毕后,若想提供给外界访问,需要一个服务器来统一管理
静态web存在的缺点
web页面无法动态更新,所有用户看到的都是同一个页面
动态页面:轮播图、点击特性、伪动态
JavaScript[实际开发使用最多]
VBScript
它无法和数据库交互(数据无法持久化,用户无法交互)
假如服务器的动态web资源出现了错误,我们需要重写编写我们的后台程序重新发布
停机维护
优点:
以下三块组成一个完整的项目
web开发是在B/S模式下进行的一种开发形式
C/S分为客户机和服务器两层,把应用软件安装在客户机端,通过网络与服务器端相互通信
它可以分为客户机和服务器两层:
第一层: 在客户机系统上结合了界面显示与业务逻辑;
第二层: 通过网络结合了数据库服务器。
简单的说就是第一层是用户表示层,第二层是数据库层。
这里需要补充的是,客户端不仅仅是一些简单的操作,它也是会处理一些运算,业务逻辑的处理等。也就是说,客户端也做着一些本该由服务器来做的一些事情
如果应用程序改动了(例如丰富了界面,增加功能)就必须通知所有客户端重新安装,
维护稍有不便
每一台客户端都需要按照客户端软件
C/S架构的界面和操作可以很丰富。(客户端操作界面可以随意排列,满足客户的需要)
安全性能可以很容易保证。(因为只有两层的传输,而不是中间有很多层。
由于只有一层交互,因此响应速度较快。(直接相连,中间没有什么阻隔或岔路,比如QQ,每天那么多人在线,也不觉得慢)
B/S架构的全称为Browser/Server,即浏览器/服务器结构。
Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现。
B/S架构的系统无须特别安装,只有Web浏览器即可。
其实就是我们前端现在做的一些事情,大部分的逻辑交给后台来实现,我们前端大部分是做一些数据渲染,请求等比较少的逻辑。
1、客户端无需安装,有Web浏览器即可直接访问服务端。
2、B/S架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。
3、B/S架构无需升级多个客户端,升级服务器即可。可以随时更新版本,而无需用户重新下载什么的。
1、在跨浏览器上,B/S架构不尽如人意。
2、表现要达到C/S程序的程度需要花费不少精力。
3、在速度和安全性上需要花费巨大的设计成本,这是B/S架构的最大问题。
4、客户端服务器端的交互是请求-响应模式,通常需要刷新页面,这并不是客户乐意看到的。(在Ajax风行后此问题得到了一定程度的缓解)
第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能。
第二层逻辑层:主要是利用服务器完成客户端的应用逻辑功能。
第三层数据层:主要是接受客户端请求后独立进行各种运算。
1、客户端向服务器发起Http请求
2、服务器中的web服务层能够处理Http请求
3、服务器中的应用层部分调用业务逻辑,调用业务逻辑上的方法
4、如果有必要,服务器会和数据库进行数据交换. 然后将模版+数据渲染成最终的Html, 返送给客户端
1 客户端向web服务器发起Http请求
2 web服务能够处理Http请求,并且调用应用服务器暴露在外的RESTFUL接口
3 应用服务器的RESTFUL接口被调用,会执行对应的暴露方法.如果有必要和数据库进行数据交互,应用服务器会和数据库进行交互后,将json数据返回给web服务器
4 web服务器将模版+数据组合渲染成html返回给客户端
1、整正暴露在外的不是真正web服务器的地址,而是负载均衡器器的地址
2、客户向负载均衡器发起Http请求
3、负载均衡器能够将客户端的Http请求均匀的转发给Node服务器集群
4、Node服务器接收到Http请求之后,能够对其进行解析,并且能够调用应用服务器暴露在外的RESTFUL接口
5、应用服务器的RESTFUL接口被调用,会执行对应的暴露方法.如果有必要和数据库进行数据交互,应用服务器会和数据库进行交互后,将json数据返回给Node
6、Node层将模版+数据组合渲染成html返回反向代理服务器
7、反向代理服务器将对应html返回给客户端
主要包括:Tomcat、Jboos、Weblogic、IIS、Jetty(就相当一个服务)
IIS
Tomcat
CGI
PHP
PHP开发速度快,功能强大,跨平台,代码简单(70%,WP)
无法承载大访问量的情况(局限性)
JSP(本质是Servlet)
sun公司主推的B/S架构
基于Java语言的(所有的大公司,或开源组件,都是由Java写的)
可以承载三高(高并发、高可用、高性能)问题带来的影响
语法像ASP,ASP-->JSP
ASP
微软:国内最早流行的就是ASP
在HTML中嵌入了VB脚本,ASP+COM
在ASP开发中,基本一个界面都有几千行业务代码,页面极其混乱
维护成本高
语言是C#
IIS服务器
HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上
http1.0
客户端/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接
http2.0
客户端/1.0:客户端可以与web服务器连接后,可以获得多个web资源
百度
General
Request URL: https://www.baidu.com/ 请求地址
Request Method: GET 请求方法
Status Code: 200 OK 状态码
Remote Address: 36.152.44.95:443 远程地址
Referrer Policy: strict-origin-when-cross-origin 协议
Request Headers
Accept:text/html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cache-Control: max-age=0
Connection: keep-alive
请求行
请求方式:get(post)
get:请求能够携带的参数比较少,大小有限制,会在浏览器URL地址栏显示,不安全,但高效
post:请求能够携带数据没有限制,大小没有限制,不会再浏览器显示,安全,但不高效
消息头
Accept:text/html 告诉浏览器,它所支持的数据类型
Accept-Encoding: gzip, deflate, br 支持哪种编码格式
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 告诉浏览器,它的语言环境
Cache-Control: max-age=0 缓存控制
Connection: keep-alive 告诉浏览器,请求完成时断开还是保持连接
HOST: 主机
百度
Response Headers
Cache-Control: private 缓存控制
Connection: keep-alive 连接:保证连接
Content-Encoding: gzip 编码
Content-Type: text/html 类型
响应体:
Accept:text/html 告诉浏览器,它所支持的数据类型
Accept-Encoding: gzip, deflate, br 支持哪种编码格式
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 告诉浏览器,它的语言环境
Cache-Control: max-age=0 缓存控制
Connection: keep-alive 告诉浏览器,请求完成时断开还是保持连接
HOST: 主机
Refresh:告诉客户端多久刷新一次
Location:让网页重新定位
响应状态码
服务端将JSP翻译成Java( 严格来讲是Servlet文件),再将Java文件编译成.class文件,最终执行.class文件
第二次直接访问class文件
如果服务端代码修改了,将会在访问时重新编译和翻译
因为第一次请求服务端,会有翻译和编译的过程,因此比较慢,后续访问可以直接访问class文件,所以访问速度会变快
但是如果服务端修改了代码,则再次访问时,会重新的翻译、编译
自己写的index.jsp
早期只有Servlet文件
由于Servlet文件编写太过麻烦,所以出现了JSP文件