JavaWeb--day4--WebHttp协议Tomcat
(以下内容全部来自上述课程及课件)
这里maven我学过了,可见:Maven项目管理–基础篇,所以跳过
SpringBootWeb
1. 需求
需求:基于SpringBoot的方式开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串 “Hello World ~”。
2. 开发步骤
第1步:创建SpringBoot工程项目
第2步:定义HelloController类,添加方法hello,并添加注解
第3步:测试运行
2.1 创建SpringBoot工程(需要联网)
基于Spring官方骨架,创建SpringBoot工程。
基本信息描述完毕之后,勾选web开发相关依赖。
点击Finish之后,就会联网创建这个SpringBoot工程,创建好之后,结构如下:
注意:在联网创建过程中,会下载相关资源(请耐心等待)
2.2 定义请求处理类
在com.itheima这个包下创建一个子包controller
然后在controller包下新建一个类:HelloController
package com.itheima.controller;import org.springframework.web.bind.annotation.*;@RestControllerpublic class HelloController {@RequestMapping("/hello")public String hello(){System.out.println("Hello World ~");return "Hello World ~";} }
2.3 运行测试
运行SpringBoot自动生成的引导类
打开浏览器,输入 http://localhost:8080/hello
3. Web分析
浏览器:
输入网址:http://192.168.100.11:8080/hello
- 通过IP地址192.168.100.11定位到网络上的一台计算机
我们之前在浏览器中输入的localhost,就是127.0.0.1(本机)
- 通过端口号8080找到计算机上运行的程序
localhost:8080 , 意思是在本地计算机中找到正在运行的8080端口的程序
- /hello是请求资源位置
资源:对计算机而言资源就是数据
web资源:通过网络可以访问到的资源(通常是指存放在服务器上的数据)
localhost:8080/hello ,意思是向本地计算机中的8080端口程序,获取资源位置
是/hello的数据
- 8080端口程序,在服务器找/hello位置的资源数据,发给浏览器
服务器:(可以理解为ServerSocket)
- 接收到浏览器发送的信息(如:/hello)
- 在服务器上找到/hello的资源
- 把资源发送给浏览器
我们在JavaSE阶段学习网络编程时,有讲过网络三要素:
- IP :网络中计算机的唯一标识
- 端口 :计算机中运行程序的唯一标识
- 协议 :网络中计算机之间交互的规则
问题:浏览器和服务器两端进行数据交互,使用什么协议?
答案:http协议
Http协议
1. 介绍
HTTP:Hyper Text Transfer Protocol(超文本传输协议),规定了浏览器与服务器之间数据传输的规则。
-
http是互联网上应用最为广泛的一种网络协议
-
http协议要求:浏览器在向服务器发送请求数据时,或是服务器在向浏览器发送响应数据时,都必须按照固定的格式进行数据传输
-
浏览器向服务器进行请求时:服务器按照固定的格式进行解析
-
服务器向浏览器进行响应时:浏览器按照固定的格式进行解析
2. 特点
- 基于TCP协议: 面向连接,安全
TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在数据传输方面更安全
- 基于请求-响应模型: 一次请求对应一次响应(先请求后响应)
请求和响应是一一对应关系,没有请求,就没有响应
- HTTP协议是无状态协议: 对于数据没有记忆能力。每次请求-响应都是独立的
无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息。
- 缺点: 多次请求间不能共享数据
- 优点: 速度快
请求之间无法共享数据会引发的问题:
- 如:京东购物。加入购物车和去购物车结算是两次请求
- 由于HTTP协议的无状态特性,加入购物车请求响应结束后,并未记录加入购物车是何商品
- 发起去购物车结算的请求后,因为无法获取哪些商品加入了购物车,会导致此次请求无法正确展示数据
3. HTTP-请求协议
GET请求和POST请求的区别:
4. HTTP-响应协议
5. HTTP-协议解析
这里是用代码演示服务器可以使用java完成编写,是可以接受页面发送的请求和响应数据给前端浏览器
的,而在开发中真正用到的Web服务器,我们不会自己写的,都是使用目前比较流行的web服务器。
如:Tomcat。
想具体了解可看视频:HTTP-协议解析
Tomcat
1. 服务器介绍
服务器硬件
指的也是计算机,只不过服务器要比我们日常使用的计算机大很多。
服务器,也称伺服器。是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
在网络环境下,根据服务器提供的服务类型不同,可分为:文件服务器,数据库服务器,应用程序服务器,WEB服务器等。
服务器只是一台设备,必须安装服务器软件才能提供相应的服务。
服务器软件
服务器软件:基于ServerSocket编写的程序
- 服务器软件本质是一个运行在服务器设备上的应用程序
- 能够接收客户端请求,并根据请求给客户端响应数据
2. Web服务器
Web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作
(不用程序员自己写代码去解析http协议规则),让Web开发更加便捷。主要功能是"提供网上信息浏览服务"。
Web服务器是安装在服务器端的一款软件,将来我们把自己写的Web项目部署到Tomcat服务器软件中,当Web服务器软件启动后,部署在Web服务器软件中的页面就可以直接通过浏览器来访问了。
Web服务器软件使用步骤
- 准备静态资源
- 下载安装Web服务器软件
- 将静态资源部署到Web服务器上
- 启动Web服务器使用浏览器访问对应的资源
3. Tomcat
官网: https://tomcat.apache.org/
下载:https://tomcat.apache.org/download-90.cgi
Tomcat软件类型说明:
- tar.gz文件,是linux和mac操作系统下的压缩版本
- zip文件,是window操作系统下压缩版本(我们选择zip文件)
注意,Tomcat在解压缩的时候,解压所在的目录可以任意,但最好解压到一个不包含中文和空格的目录,因为后期在部署项目的时候,如果路径有中文或者空格可能会导致程序部署失败。
IDEA部署可见:IntelliJ IDEA 新手入门教程-Java、Web、Maven创建(带图解)