Java Web基础概述

时间:2022-12-26 20:02:03


文章目录

  • ​​一. JavaWeb基本概念​​
  • ​​1. 前言​​
  • ​​2. web应用程序​​
  • ​​3. 静态web​​
  • ​​4. 动态web​​
  • ​​二. Web结构​​
  • ​​1. 什么是后端开发​​
  • ​​2. 后端和前端的区别​​
  • ​​二. Web开发模式​​
  • ​​1. 定义​​
  • ​​2. 网络应用程序的两种基本结构​​
  • ​​(1). C/S结构(客户机/服务器)(Client/Server)​​
  • ​​1. 定义​​
  • ​​2. 缺点:​​
  • ​​3. 优点:​​
  • ​​(2). B/S结构(浏览器/服务器)(Browser/Server)​​
  • ​​1. 定义​​
  • ​​2. 优点​​
  • ​​3. 缺点​​
  • ​​4. B/S架构的分层:​​
  • ​​5. B/S架构的几种形式:​​
  • ​​(1). 第一种:客户端—服务器—数据库​​
  • ​​(2). 第二种:客户端—web服务器—应用服务器—数据库​​
  • ​​(3). 第三种方法:客户端—负载均衡器(Nginx)—中间服务器(Node)—应用服务器—数据库​​
  • ​​三. Web应用服务器​​
  • ​​1.服务器概念​​
  • ​​2.常见的web服务器​​
  • ​​四. Web编程语言​​
  • ​​五. Http​​
  • ​​1. 什么是http​​
  • ​​2. 两个时代​​
  • ​​3. http请求​​
  • ​​4. http响应​​
  • ​​六. JSP执行流程​​
  • ​​1. 第一次访问:​​
  • ​​2. 第二次访问:​​
  • ​​3. 对比自己写的index.jsp项目和翻译后的Java(严格来说是Servlet)文件​​
  • ​​4. JSP和Servlet文件可以相互转换​​

一. JavaWeb基本概念

1. 前言

web开发:

  • web:网页的意思(从网上获取相应的资源页面)
  • 静态web
html、css
提供给所有人看的数据始终不会发生变化
  • 动态web
提供给所有人看的数据始终发生变化,
每个人在不同的时间,不同的地点看到的信息各不相同
  • 技术栈
Servlet/JSP、ASP、PHP

在Java中,动态web资源开发的技术统称为Javaweb

2. web应用程序

web应用程序:可以提供浏览器访问的程序

  • a.html、b.html…多个web资源,这些web资源可以被外界访问,对外界提供服务
  • 你们能访问到的任何一个页面或者资源,都存在这个世界的某一个角落的计算机上
  • 通过URL进行查找访问
  • 这些统一的web资源会被放在同一个文件下,变成一个web应用程序,要依赖于Tomcat:服务器
  • 一个web应用程序由多部分组成(静态web、动态web)
html、css、js
jsp、servlet程序
java程序
jar包
配置文件(Properties)

web应用程序编写完毕后,若想提供给外界访问,需要一个服务器来统一管理

3. 静态web

  • .htm、.html,这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取,通络。

静态web存在的缺点

  • web页面无法动态更新,所有用户看到的都是同一个页面
动态页面:轮播图、点击特性、伪动态
JavaScript[实际开发使用最多]
VBScript
  • 它无法和数据库交互(数据无法持久化,用户无法交互)

4. 动态web

页面会动态展示,“web的页面展示的效果因人而异”

Java Web基础概述


缺点

  • 假如服务器的动态web资源出现了错误,我们需要重写编写我们的后台程序重新发布
停机维护

优点:

  • web页面可以动态更新
  • 可以与数据库交互(数据持久化:注册)

Java Web基础概述

二. Web结构

以下三块组成一个完整的项目

Java Web基础概述

1. 什么是后端开发

  • 后端开发即“服务器端”开发,主要涉及软件系统“后端”的东西。比如,用于托管网站和 App 数据的服务器、放置在后端服务器与浏览器及 App 之间的中间件,它们都属于后端。简单地说,那些你在屏幕上看不到但又被用来为前端提供支持的东西就是后端。
  • 网站和移动 App 的后端
  • 网站的后端涉及搭建服务器、保存和获取数据,以及用于连接前端的接口。如果说前端开发者关心的是网站外观,那么后端开发者关心的是如何通过代码、API 和数据库集成来提升网站的速度、性能和响应性。
  • 与前端类似,移动 App 的后端与网站后端是一样的。为移动 App 搭建后端有这些选择:云平台(AWS、Firebase)、自己的服务器或 MBaaS(移动后端即服务,Mobile Backend as a Service)。

2. 后端和前端的区别

Java Web基础概述


Java Web基础概述

二. Web开发模式

1. 定义

web开发是在B/S模式下进行的一种开发形式

2. 网络应用程序的两种基本结构

(1). C/S结构(客户机/服务器)(Client/Server)

Java Web基础概述

1. 定义

C/S分为客户机和服务器两层,把应用软件安装在客户机端,通过网络与服务器端相互通信

它可以分为客户机和服务器两层:

第一层:  在客户机系统上结合了界面显示与业务逻辑;
第二层: 通过网络结合了数据库服务器。

简单的说就是第一层是用户表示层,第二层是数据库层。

这里需要补充的是,客户端不仅仅是一些简单的操作,它也是会处理一些运算,业务逻辑的处理等。也就是说,客户端也做着一些本该由服务器来做的一些事情

2. 缺点:
  • 如果应用程序改动了(例如丰富了界面,增加功能)就必须通知所有客户端重新安装,
  • 维护稍有不便
  • 每一台客户端都需要按照客户端软件
3. 优点:
  • C/S架构的界面和操作可以很丰富。(客户端操作界面可以随意排列,满足客户的需要)
  • 安全性能可以很容易保证。(因为只有两层的传输,而不是中间有很多层。
  • 由于只有一层交互,因此响应速度较快。(直接相连,中间没有什么阻隔或岔路,比如QQ,每天那么多人在线,也不觉得慢)

(2). B/S结构(浏览器/服务器)(Browser/Server)

Java Web基础概述

1. 定义

B/S架构的全称为Browser/Server,即浏览器/服务器结构。

Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现。

B/S架构的系统无须特别安装,只有Web浏览器即可。

其实就是我们前端现在做的一些事情,大部分的逻辑交给后台来实现,我们前端大部分是做一些数据渲染,请求等比较少的逻辑。

2. 优点

1、客户端无需安装,有Web浏览器即可直接访问服务端。
2、B/S架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。
3、B/S架构无需升级多个客户端,升级服务器即可。可以随时更新版本,而无需用户重新下载什么的。

3. 缺点

1、在跨浏览器上,B/S架构不尽如人意。
2、表现要达到C/S程序的程度需要花费不少精力。
3、在速度和安全性上需要花费巨大的设计成本,这是B/S架构的最大问题。
4、客户端服务器端的交互是请求-响应模式,通常需要刷新页面,这并不是客户乐意看到的。(在Ajax风行后此问题得到了一定程度的缓解)

4. B/S架构的分层:

第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能。

第二层逻辑层:主要是利用服务器完成客户端的应用逻辑功能。

第三层数据层:主要是接受客户端请求后独立进行各种运算。

Java Web基础概述

5. B/S架构的几种形式:
(1). 第一种:客户端—服务器—数据库

Java Web基础概述


Java Web基础概述


这个应该是我们平时比较常用的一种模式:

1、客户端向服务器发起Http请求

2、服务器中的web服务层能够处理Http请求

3、服务器中的应用层部分调用业务逻辑,调用业务逻辑上的方法

4、如果有必要,服务器会和数据库进行数据交换. 然后将模版+数据渲染成最终的Html, 返送给客户端

(2). 第二种:客户端—web服务器—应用服务器—数据库

Java Web基础概述


类似于第一种方法,只是将web服务和应用服务解耦

1 客户端向web服务器发起Http请求

2 web服务能够处理Http请求,并且调用应用服务器暴露在外的RESTFUL接口

3 应用服务器的RESTFUL接口被调用,会执行对应的暴露方法.如果有必要和数据库进行数据交互,应用服务器会和数据库进行交互后,将json数据返回给web服务器

4 web服务器将模版+数据组合渲染成html返回给客户端

(3). 第三种方法:客户端—负载均衡器(Nginx)—中间服务器(Node)—应用服务器—数据库

Java Web基础概述


1、整正暴露在外的不是真正web服务器的地址,而是负载均衡器器的地址

2、客户向负载均衡器发起Http请求

3、负载均衡器能够将客户端的Http请求均匀的转发给Node服务器集群

4、Node服务器接收到Http请求之后,能够对其进行解析,并且能够调用应用服务器暴露在外的RESTFUL接口

5、应用服务器的RESTFUL接口被调用,会执行对应的暴露方法.如果有必要和数据库进行数据交互,应用服务器会和数据库进行交互后,将json数据返回给Node

6、Node层将模版+数据组合渲染成html返回反向代理服务器

7、反向代理服务器将对应html返回给客户端

三. Web应用服务器

1.服务器概念

  • Web 服务器一般指网站服务器,也称之为 WWW(World Wide Web)服务器。是指驻留于因特网上某种类型计算机的程序。这个服务器并不是硬件服务器,而是软件服务器。其主要功能是提供网上信息浏览服务,可以向发出请求的浏览器提供文档,也可以放置网站文件,让全世界浏览;还可以放置数据文件,让全世界下载等。

2.常见的web服务器

  • ①Apache是世界使用排名第一的Web服务器软件。它几乎可以运行在所有的计算机平台上。由于Apache是开源免费的,因此有很多人参与到新功能的开发设计,不断对其进行完善。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
  • ②WebLogic 是美国 Oracle 公司出品的一个应用程序服务器,主要用于开发、集成、部署和管理大型分布式 Web 应用、网络应用和数据库应用的 Java 应用服务器,主要用于部署大型分布式项目使用。
  • ③IIS 是一种 Web 服务组件,其中包括 Web 服务器、FTP 服务器、NNTP 服务器和 SMTP 服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,主要用来部署 ASP.NET 项目使用。
  • ④Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。
  • ⑤Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。

主要包括:Tomcat、Jboos、Weblogic、IIS、Jetty(就相当一个服务)

  • 服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息

IIS

  • 微软的;ASP…Windows自带的

Tomcat

  • Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
  • Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个Java初学web的人来说,是最佳选择
  • 而Tomcat 实际上运行JSP 页面和Servlet。

四. Web编程语言

  1. CGI
  2. PHP
PHP开发速度快,功能强大,跨平台,代码简单(70%,WP)
无法承载大访问量的情况(局限性)
  1. JSP(本质是Servlet)
sun公司主推的B/S架构
基于Java语言的(所有的大公司,或开源组件,都是由Java写的)
可以承载三高(高并发、高可用、高性能)问题带来的影响
语法像ASP,ASP-->JSP
  1. ASP
微软:国内最早流行的就是ASP
在HTML中嵌入了VB脚本,ASP+COM
在ASP开发中,基本一个界面都有几千行业务代码,页面极其混乱
维护成本高
语言是C#
IIS服务器

五. Http

1. 什么是http

HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上

  • 文本:html、字符串…
  • 超文本:图片、音乐、视频、定位、地图…
  • 端口:80、https:443

2. 两个时代

  • http1.0
客户端/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接
  • http2.0
客户端/1.0:客户端可以与web服务器连接后,可以获得多个web资源

3. http请求

  • 客户端—发请求—服务器
百度
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: 主机

4. http响应

百度
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:让网页重新定位

响应状态码

  • 200:请求响应成功
  • 3xx:请求重定向(你重新到我给你新的位置去)
  • 404:找不到资源
  • 5xx:服务器代码错误:500(502网关错误)

六. JSP执行流程

Java Web基础概述

1. 第一次访问:

服务端将JSP翻译成Java( 严格来讲是Servlet文件),再将Java文件编译成.class文件,最终执行.class文件

存放的位置:

Java Web基础概述

2. 第二次访问:

第二次直接访问class文件

如果服务端代码修改了,将会在访问时重新编译和翻译

因为第一次请求服务端,会有翻译和编译的过程,因此比较慢,后续访问可以直接访问class文件,所以访问速度会变快

但是如果服务端修改了代码,则再次访问时,会重新的翻译、编译

3. 对比自己写的index.jsp项目和翻译后的Java(严格来说是Servlet)文件

自己写的index.jsp

Java Web基础概述


翻译后的Servlet文件

Java Web基础概述

4. JSP和Servlet文件可以相互转换

早期只有Servlet文件

由于Servlet文件编写太过麻烦,所以出现了JSP文件