JavaWeb||Web简介、Tomcat安装与配置
1.Web的基本概念
1.1 静态web与动态Web的区别
- 静态web
- html,css
- 提供给所有人看的数据始终不会发生变化!
- 动态web
- 淘宝,几乎所有的网站都是动态web;
- 提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同!
- 实现动态web的技术栈:
- ASP:微软、IIS
- PHP
- Servlet/JSP:SUN,用于解决 B/S架构
- 性能比较高
- 跨平台(class文件
- 不用任何门槛(从HTML嵌套Java代码)
在Java中,动态web资源开发的技术统称为JavaWeb
1.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应用程序编写完毕后,若想提供给外界访问:需要一个服务器来统一管理;
1.3 静态web
- *.htm, *.html,这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取。
- 静态web存在的缺点:
- Web页面无法动态更新,所有用户看到都是同一个页面,以下方式可以让页面“动”起来:
- 轮播图,点击特效 [伪动态]
- JavaScript [实际开发中用的最多]
- VBScript
- 它无法和数据库交互(数据无法持久化,用户无法交互)
- Web页面无法动态更新,所有用户看到都是同一个页面,以下方式可以让页面“动”起来:
1.4 动态web
页面会动态展示: “Web的页面展示的效果因人而异”;
动态Web的优点:
- Web页面可以动态更新,所有用户看到都不是同一个页面
- 它可以与数据库交互 (数据持久化:注册,商品信息,用户信息…)
动态Web与数据库交互的原理图如下:
动态Web的缺点:
- 加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布,即停机维护。
2.web服务器
2.1 技术讲解
ASP:
-
微软:国内最早流行的就是ASP;
-
在HTML中嵌入了VB的脚本, ASP + COM;
-
在ASP开发中,基本一个页面都有几千行的业务代码,页面极其换乱,维护成本高!
-
C#
-
IIS
<h1> <h1><h1> <h1> <h1> <h1> <h1> <% System.out.println("hello") %> <h1> <h1> <h1><h1> <h1>
php:
- PHP开发速度很快,功能很强大,跨平台,代码很简单 (70% , WP)
- 无法承载大访问量的情况(局限性)
JSP/Servlet:
B/S:浏览器和服务器
C/S: 客户端和服务器
- sun公司主推的B/S架构
- 基于Java语言的 (所有的大公司,或者一些开源的组件,都是用Java写的)
- 可以承载三高问题带来的影响;
- 语法像ASP , ASP–>JSP , 加强市场强度;
2.2 web服务器
服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息;
IIS
微软: ASP…,Windows中自带的
Tomcat
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个Java初学web的人来说,它是最佳的选择
Tomcat 实际上运行JSP 页面和Servlet。Tomcat最新版本为9.0。
3.Tomcat
学习思路:
- 安装 or 解压
- 了解配置文件及目录结构
- 了解这个东西的作用
3.1 安装tomcat
tomcat官网:http://tomcat.apache.org/
3.2 Tomcat启动和配置
解压后每个文件夹作用:
启动、关闭Tomcat
测试访问的网址:http://localhost:8080/
可能遇到的问题:
- Java环境变量没有配置
- 闪退问题:需要配置兼容性
- 乱码问题:配置文件中设置
3.3 修改配置:端口和主机名
1.可以配置启动的端口号
- tomcat的默认端口号:8080
- mysql的默认端口号:3306
- http的默认端口号:80
- https的默认端口号:443
在tomcat的核心配置文件server.xml做如下修改,将端口改为8081:
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改后访问示例(将端口号改为8081):
2.可以配置主机的名称
- 默认的主机名为:localhost->127.0.0.1
- 默认网站应用存放的位置为:webapps
在tomcat的核心配置文件server.xml做如下修改:
<Host name="www.young.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
在Windows系统的host文件(C:\Windows\System32\drivers\etc\host)中,做如下修改:
修改后访问示例(将主机名称改为www.young.com):
3.4 简述访问网站的过程
- 输入域名;
- 检查本机C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射;(结合修改主机名这个过程加以理解)
- 如果有域名映射:直接返回对应的ip地址,这个地址中,有我们需要访问的web程序,可以直接访问
- 如果本地没有域名映射:去DNS服务器找,找到的话就返回,找不到就返回找不到;
- 如果有域名映射:直接返回对应的ip地址,这个地址中,有我们需要访问的web程序,可以直接访问
3.5 发布一个自己的web网站demo
- 在webapps下面新建一个文件夹youngdemo,用来放置我们的网址demo
- 文件夹youngdemo里面至少有两个文件,一个是WEB-INF,里面有一个web.xml,用来网站配置文件(从root文件夹里面拷出来就行);还有一个是index.html,用来放置默认的首页。
访问网址:http://localhost:8080/youngdemo/
3.6 网站文件夹结构分析
--webapps :Tomcat服务器的web目录
-ROOT
-young :网站的目录名
- WEB-INF
-classes : java程序
-lib:web应用所依赖的jar包
-web.xml :网站配置文件
- index.html 默认的首页
- static
-css
-style.css
-js
-img
-.....
3.7 在 IDEA中配置Tomcat
必须解决这个警告问题,原因是我们访问一个网站是,需要指定一个文件夹名字,这里需要添加一个artifact,设置访问的地址。
弹出如下页面,说明IDEA中的TomCat配置成功。
4 Http
参考来源:https://blog.csdn.net/qq_41151659/article/details/100097627
4.1 Http与Https简介
4.1.1 Http简介
HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。默认端口号是80。
特点:
-
支持客户/服务器模式。(C/S模式)
-
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
-
灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
-
无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
-
无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快
工作流程:
-
第一步:建立TCP/IP连接,客户端与服务器通过Socket三次握手进行连接
-
第二步:客户端向服务端发起HTTP请求(例如:POST/login.html http/1.1)
-
第三步:客户端发送请求头信息,请求内容,最后会发送一空白行,标示客户端请求完毕
-
第四步:服务器做出应答,表示对于客户端请求的应答,例如:HTTP/1.1 200 OK
-
第五步:服务器向客户端发送应答头信息
-
第六步:服务器向客户端发送请求头信息后,也会发送一空白行,标示应答头信息发送完毕,接着就以Content-type要求的数据格式发送数据给客户端
-
第七步:服务端关闭TCP连接,如果服务器或者客户端增Connection:keep-alive就表示客户端与服务器端继续保存连接,在下次请求时可以继续使用这次的连接
4.1.2 Https简介
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。默认端口号是443。
特点:
HTTPS是HTTP协议的修改,它加密数据并确保其机密性。其配置可保护用户在与网站交互时免于窃取个人信息和计费数据。
-
优点
相比于http,https可以提供更加优质保密的信息,保证了用户数据的安全性,此外https同时也一定程度上保护了服务端,使用恶意攻击和伪装数据的成本大大提高。 -
缺点
缺点也同样很明显,第一 https的技术门槛较高,多数个人或者私人网站难以支撑,CA机构颁发的证书都是需要年费的,此外对接Https协议也需要额外的技术支持;其二,目前来说大多数网站并不关心数据的安全性和保密性,其https最大的优点对它来说并不适用;其三,https加重了服务端的负担,相比于http其需要更多的资源来支撑,同时也降低了用户的访问速度;第四,目前来说Http网站仍然大规模使用,在浏览器侧也没有特别大的差别,很多用户不关心的话根本不感知。
工作流程:
- 第一步:客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
- 第二步:Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
- 第三步:客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
- 第四步:客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
- 第五步:Web服务器利用自己的私钥解密出会话密钥。
- 第六步:Web服务器利用会话密钥加密与客户端之间的通信。
4.1.3 Http和Https的主要区别
-
https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
-
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
-
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
-
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
4.2 Http协议的两个时代
- http1.0
- HTTP/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接
- http2.0
- HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源。
4.3 Http请求Request
请求的定义:就是浏览器往服务器发送数据
请求的结构:
- 请求行:请求信息的第一行
- 请求头:从请求信息的第二行开始到请求空行结束
- 请求体:从请求空行往下
请求行:
GET /HTTPTest/login?username=zhangsan&password=123456 HTTP/1.1
- 请求行的格式:
请求方式 /请求的资源?请求参数 协议/版本 - 常见的请求方式 get post
- get:会把请求参数拼接在URL后面,数据大小有限制,get请求没有请求体
- post:请求会将请求参数放到请求体里面,数据大小无限制
请求头:
- 请求头的格式:
key:value,value - 常见的请求头
- Accept: text/html,image/* --告诉服务器当前客户端可以接收的文档的类型。其实这里包含了*/*,就表示什么都可以接收; 大类型/小类型 比如 text/css text/javascript
- Accept-Charset: ISO-8859-1 --告诉服务器,客户端提交的表单可能使用的编码类型
- Accept-Encoding: gzip --浏览器发给服务器,声明浏览器支持的编码类型
- Accept-Language:zh-cn --语言环境
- Host: localhost:8080 --访问主机
4.4 Http响应Response
响应的定义:服务器往浏览器回写数据
响应的结构:
- 响应行:响应信息第一行
- 响应头:响应信息第二行到响应空行
- 响应体:响应空行以下
响应行
HTTP/1.1 200 OK
- 响应行的格式: 协议/版本 响应状态码 响应的描述
- 常见的响应状态码:
200:请求响应成功
3xx:请求重定向
4xx:找不到资源 如:404
5xx:服务器代码错误 如: 502(网关错误)
响应头
常见的响应头:
- Location: http://www.baidu.org/index.jsp
跳转方向 302重定向 - Refresh: 1;url=http://www.hehe.org
定时刷新 - Connection: Keep-Alive
保持连接 长链接