JavaWeb--08SpringBootWeb入门--Web服务器-Tomcat

1 SpringBootWeb快速入门

Spring的官网(https://spring.io),去看一下Spring的简介:Spring makes Java simple.modern.productive.reactive.cloud-ready
**加粗样式**

1.1 需求

需求:基于SpringBoot的方式开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串 “Hello World ~”。
在这里插入图片描述

1.2 开发步骤

第1步:创建SpringBoot工程项目(需要联网)

在这里插入图片描述

在这里插入图片描述
等一会就加载好了
在这里插入图片描述

第2步:定义HelloController类,添加方法hello,并添加注解

在com.itheima这个包下创建一个子包controller,然后在controller包下新建一个类:HelloController
在这里插入图片描述

第3步:测试运行

在这里插入图片描述

在网页输入localhost:8080或者http://127.0.0.1:8080/hello
在这里插入图片描述

1.3 Web分析

在这里插入图片描述

浏览器

  • 通过端口号8080找到计算机上运行的程序

    localhost:8080 , 意思是在本地计算机中找到正在运行的8080端口的程序

  • /hello是请求资源位置

    • 资源:对计算机而言资源就是数据
      • web资源:通过网络可以访问到的资源(通常是指存放在服务器上的数据)

    localhost:8080/hello ,意思是向本地计算机中的8080端口程序,获取资源位置是/hello的数据

    • 8080端口程序,在服务器找/hello位置的资源数据,发给浏览器
      服务器:(可以理解为ServerSocket)
  • 接收到浏览器发送的信息(如:/hello)

  • 在服务器上找到/hello的资源

  • 把资源发送给浏览器

在JavaSE阶段学习网络编程时,有讲过网络三要素:

  • IP :网络中计算机的唯一标识
  • 端口 :计算机中运行程序的唯一标识
  • 协议 :网络中计算机之间交互的规则

问题:浏览器和服务器两端进行数据交互,使用什么协议?

答案:http协议

2 HTTP协议

2.1 HTTP 概述

在这里插入图片描述
HTTP:Hyper Text Transfer Protocol(超文本传输协议),规定了浏览器与服务器之间数据传输的规则。

特点

  • 基于TCP协议: 面向连接,安全

    TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在数据传输方面更安全

  • 基于请求-响应模型: 一次请求对应一次响应(先请求后响应)

    请求和响应是一一对应关系,没有请求,就没有响应

  • HTTP协议是无状态协议: 对于数据没有记忆能力。每次请求-响应都是独立的

2.2 HTTP 请求协议

HTTP协议又分为:请求协议和响应协议

  • 请求协议:浏览器将数据以请求格式发送到服务器
    • 包括:请求行请求头请求体
  • 响应协议:服务器将数据以响应格式返回给浏览器
    • 包括:响应行响应头响应体
请求方式请求说明
GET获取资源。
向特定的资源发出请求。例:http://www.baidu.com/s?wd=itheima
POST传输实体主体。
向指定资源提交数据进行处理请求(例:上传文件),数据被包含在请求体中。
OPTIONS返回服务器针对特定资源所支持的HTTP请求方式。
因为并不是所有的服务器都支持规定的方法,为了安全有些服务器可能会禁止掉一些方法,例如:DELETE、PUT等。那么OPTIONS就是用来询问服务器支持的方法。
HEAD获得报文首部。
HEAD方法类似GET方法,但是不同的是HEAD方法不要求返回数据。通常用于确认URI的有效性及资源更新时间等。
PUT传输文件。
PUT方法用来传输文件。类似FTP协议,文件内容包含在请求报文的实体中,然后请求保存到URL指定的服务器位置。
DELETE删除文件。
请求服务器删除Request-URI所标识的资源
TRACE追踪路径。
回显服务器收到的请求,主要用于测试或诊断
CONNECT要求用隧道协议连接代理。
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

在我们实际应用中常用的也就是 :GET、POST

区别方式GET请求POST请求
请求参数请求参数在请求行中。
例:/brand/findAll?name=OPPO&status=1
请求参数在请求体中
请求参数长度请求参数长度有限制(浏览器不同限制也不同)请求参数长度没有限制
安全性安全性低。原因:请求参数暴露在浏览器地址栏中。安全性相对高

2.3 HTTP 相应协议

概念…什么的好多,不写了

状态码分类说明
1xx响应中 — 临时状态码。表示请求已经接受,告诉客户端应该继续请求或者如果已经完成则忽略
2xx成功 — 表示请求已经被成功接收,处理已完成
3xx重定向 — 重定向到其它地方,让客户端再发起一个请求以完成整个处理
4xx客户端错误 — 处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等
5xx服务器端错误 — 处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP版本不支持等

常见的响应状态码

状态码英文描述解释
200OK客户端请求成功,即处理成功,这是我们最想看到的状态码
302Found指示所请求的资源已移动到由Location响应头给定的 URL,浏览器会自动重新访问到这个页面
304Not Modified告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向
400Bad Request客户端请求有语法错误,不能被服务器所理解
403Forbidden服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源
404Not Found请求资源不存在,一般是URL输入有误,或者网站资源被删除了
405Method Not Allowed请求方式有误,比如应该用GET请求方式的资源,用了POST
428Precondition Required服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头
429Too Many Requests指示用户在给定时间内发送了太多请求(“限速”),配合 Retry-After(多长时间后可以请求)响应头一起使用
431 Request Header Fields Too Large请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。
500Internal Server Error服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧
503Service Unavailable服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好

状态码大全:https://cloud.tencent.com/developer/chapter/13553

3 WEB服务器-Tomcat

3.1 简介

服务器在网络环境下,根据服务器提供的服务类型不同,可分为:文件服务器,数据库服务器,应用程序服务器,WEB服务器等。

服务器软件:基于ServerSocket编写的程序

  • 服务器软件本质是一个运行在服务器设备上的应用程序
  • 能够接收客户端请求,并根据请求给客户端响应数据

Web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作(不用程序员自己写代码去解析http协议规则),让Web开发更加便捷。主要功能是"提供网上信息浏览服务"。
Web服务器是安装在服务器端的一款软件,将来我们把自己写的Web项目部署到Tomcat服务器软件中,当Web服务器软件启动后,部署在Web服务器软件中的页面就可以直接通过浏览器来访问了。
在这里插入图片描述

3.2Tomcat基本使用

下载
直接从官方网站下载:https://tomcat.apache.org/download-90.cgi

在这里插入图片描述
Tomcat软件类型说明:

  • tar.gz文件,是linux和mac操作系统下的压缩版本
  • zip文件,是window操作系统下压缩版本(我们选择zip文件)

安装与卸载
直接解压就是安装,记得解压到无中文无空格的文件夹
卸载比较简单,可以直接删除目录即可
在这里插入图片描述
bin:目录下有两类文件,一种是以.bat结尾的,是Windows系统的可执行文件,一种是以.sh结尾的,是Linux系统的可执行文件。
webapps:就是以后项目部署的目录

启动Tomcat
双击tomcat解压目录/bin/startup.bat文件即可启动tomcat
在这里插入图片描述
注意: tomcat服务器启动后,黑窗口不会关闭,只要黑窗口不关闭,就证明tomcat服务器正在运行

在这里插入图片描述
Tomcat的默认端口为8080,所以在浏览器的地址栏输入:http://127.0.0.1:8080 即可访问tomcat服务器

127.0.0.1 也可以使用localhost代替。如:http://localhost:8080

在这里插入图片描述

能看到以上图片中Apache Tomcat的内容就说明Tomcat已经启动成功

关闭: 关闭有三种方式

1、强制关闭:直接x掉Tomcat窗口(不建议)
在这里插入图片描述
2、正常关闭:bin\shutdown.bat
在这里插入图片描述

3、正常关闭:在Tomcat启动窗口中按下 Ctrl+C

3.3 常见问题

问题1:Tomcat启动时,窗口一闪而过

  • 检查JAVA_HOME环境变量是否正确配置

问题2:端口号冲突

  • 发生问题的原因:Tomcat使用的端口被占用了。

  • 解决方案:换Tomcat端口号

    • 要想修改Tomcat启动的端口号,需要修改 conf/server.xml文件
      在这里插入图片描述

4 入门程序解析

4.1 Spring官方骨架

在这里插入图片描述

我们可以通过访问https://start.spring.io/ ,进入到官方骨架页面

借用下课件的图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解压缩后,就会得到一个SpringBoot项目工程\

在这里插入图片描述
打开pom.xml文件,我们可以看到springboot项目中引入了web依赖和test依赖
在这里插入图片描述

4.2起步依赖

spring-boot-starter-web和spring-boot-starter-test,在SpringBoot中又称为:起步依赖

而在SpringBoot的项目中,有很多的起步依赖,他们有一个共同的特征:就是以spring-boot-starter-作为开头。在以后大家遇到spring-boot-starter-xxx这类的依赖,都为起步依赖。

起步依赖有什么特殊之处呢,这里我们以入门案例中引入的起步依赖做为讲解:

  • spring-boot-starter-web:包含了web应用开发所需要的常见依赖
  • spring-boot-starter-test:包含了单元测试所需要的常见依赖
    在这里插入图片描述

spring-boot-starter-web内部把关于Web开发所有的依赖都已经导入并且指定了版本,只需引入 spring-boot-starter-web 依赖就可以实现Web开发的需要的功能
在这里插入图片描述

4.3 内嵌Tomcat

问题:为什么我们之前书写的SpringBoot入门程序中,并没有把程序部署到Tomcat的webapps目录下,也可以运行呢?

原因呢,是因为在我们的SpringBoot中,引入了web运行环境(也就是引入spring-boot-starter-web起步依赖),其内部已经集成了内置的Tomcat服务器。

我们可以通过IDEA开发工具右侧的maven面板中,就可以看到当前工程引入的依赖。其中已经将Tomcat的相关依赖传递下来了,也就是说在SpringBoot中可以直接使用Tomcat服务器。

在这里插入图片描述
在这里插入图片描述

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值