HTTP
HTTP协议
HTTP(Hyper Text Transfer Protocol),是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。
经典五层模型
物理层
定义了物理设备如何传输数据(光缆)
功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0。
数据链路层
为通讯的实体之间建立数据链路连接
由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思。
功能:定义了电信号的分组方式。分组方式后来形成了统一的标准,即以太网协议ethernet。
网络层
为数据在节点之间传输创建逻辑链路。
需要方法区分哪些计算机是同一广播域,同一广播域则采用广播方式发送,否则采用路由方式(向不同广播域/子网分发数据包)。mac地址是无法区分的,它只跟厂商有关。
由来:有了ethernet、mac地址、广播的发送方式,世界上的计算机就可以彼此通信了,问题是世界范围的互联网是由一个个彼此隔离的小的局域网组成的,那么如果所有的通信都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,这就不仅仅是效率低的问题了,这会是一种灾难。
功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址。
传输层
数据的传输是在这一层定义的。数据过大的时候会进行分包或者分片,由采用的协议来进行数据的组装。
由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,再通过端口来标识主机上的应用程序。端口即应用程序与网卡关联的编号。
功能:建立端口到端口的通信,补充:端口范围0-65535,0-1023为系统占用端口。
传输层有两种协议,TCP和UDP。
应用层
为应用提供服务,构建于协议之上。
由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式。
HTTP 消息结构
HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。
一个HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。
一个HTTP"服务器"同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。
HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。
一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。
HTTP方法
GET方法。获取资源。用来请求访问一杯URI识别的资源。指定的资源经过服务器解析后返回的响应内容。
POST方法。传输内容实体。虽然GET方法也可以用来传输内容实体,但是我们一般不这么做。POST的主要目的并不是获取响应的主体内容。
此外还有HEAD、PUT、DELETE等方法。
Web应用原理
所谓web应用程序,就是采用B/S计算模式开发,基于http等协议,通过web来访问的应用程序
静态页面
显示的内容不变,不需要连接数据库,不会因某些操作改变页面内容。
无需经过服务器的编译,直接加载到客户浏览器上显示出来。静态页面需要占一定的服务器空间,且不能自主管理发布更新的页面,如果想更新网页内容,要通过FTP软件把文件DOWN下来用网页制作软件修改(通过fso等技术例外)。常见的静态页面举例:.html扩展名的、.htm扩展名的。
优点:速度快,可以跨平台,跨服务器,安全,不存在SQL注入漏洞
缺点:灵活性差,不能自动更新,交互性较差,维护麻烦
动态页面
显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。
动态网页是基本的html语法规范与Java、VB、VC等高级程序设计语言、数据库编程等多种技术的融合,以期实现对网站内容和风格的高效、动态和交互式的管理。因此,从这个意义上来讲,凡是结合了HTML以外的高级程序设计语言和数据库技术进行的网页编程技术生成的网页都是动态网页。
技术举例:php,jsp,asp,aspx,cgi
优点:
1.以数据库技术为基础,降低网站维护工作量
2.可以实现更多的功能,如登录、查询、管理、注册等
缺点:访问速度慢,安全风险大
Tomact服务器
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
Tomact主要目录
bin 存放tomact命令,包括以.sh结尾的linux命令和以.bat结尾的windows命令,很多环境变量的设置也在这里
conf 存放配置文件
server.xml 可以设置端口号、设置域名或IP、默认加载的项目、请求编码
web.xml 设置tomcat支持的文件类型
context.xml 用来配置数据源
tomcat-users.xml 用来配置管理tomcat的用户与权限
lib 存放运行时需要的jar包
logs 存放运行时产生的日志文件
temp 存放运行时产生的临时文件
webapps 存放应用程序,tomact启动后会加载这里面的程序
work 存放运行时的编译后文件
Tomcat的安装及配置
下载网址:https://tomcat.apache.org/download-90.cgi
1.选择自己想要下载的版本
2.点击想要下载的版本,下滑看到如下页面
3.根据自己电脑配置下载相应的安装压缩包(本次配置我们选择zip压缩包)
配置
配置Tomcat环境变量前一定要配置好java的环境变量,尤其是JAVA_HOME
以下环境变量均在系统环境变量中设置。
1.新建 CATALINA_HOME 环境变量,变量:CATALINA_HOME
值:D:\apache-tomcat-9.0.64
2.修改 Path ,在 Path 后添加(新建): %CATALINA_HOME%\lib
、%CATALINA_HOME%\bin
、%CATALINA_HOME%\lib\servlet-api.jar
环境变量中,环境变量名对大小写不敏感,可将
CATALINA_HOME
小写,但需要保持一致
注意:在环境变量中,如果新建有两个相同仅大小写不同的的变量名,会覆盖设置。如:path
和PATH
访问Tomcat
先打开.\bin\startup.bat
,再打开浏览器,在地址栏中输入http://localhost:8080
或localhost:8080
回车,如果看到Tomcat自带的一个JSP页面,说明JDK和Tomcat已搭建成功。
注意:如果点startup.bat
窗口的×
直接关闭,可能会造成关闭异常,需要点击同目录下的shutdown.bat
常见问题
1.闪退
可能原因是:环境变量配置不正确
JAVA_HOME中的路径不能用分号结尾,如C:\Program Files\Java\jdk1.8.0_121
JAVA_HOME的路径是JDK路径,而不是JRE的路径。
CATALINA_HOME中的路径不能以\结尾。
在环境变量中修改添加变量时,一定要注意分号、空格,是否有多余的字母。
2.乱码
问题描述:打开startup.bat后汉字乱码
解决方法:在.\apache-tomcat-9.0.64\conf下打开logging.properties文件
将java.util.logging.ConsoleHandler.encoding = UTF-8
替换为java.util.logging.ConsoleHandler.encoding = GBK
在idea内配置Tomcat服务器
1.点击Run—Edit Configurations…
2.点击加号
3.下滑找到Tomcat→local
4.配置Tomcat路径
5.将Tomcat配置到自己需要的项目中