spring boot入门 --javaweb学习笔记

本文介绍了SpringBoot的基础知识,如何通过SpringBoot快速开发Web应用,以及HTTP协议的工作原理。重点讲解了SpringBootWeb快速入门示例,包括创建项目、定义控制器和运行测试,同时涉及了HTTP协议的请求与响应格式和Tomcat作为Web服务器的应用。
摘要由CSDN通过智能技术生成

一、什么是Spring?

Spring是由Rod Johnson创建的一个开源框架

spring官网:Spring | Home

spring简介:Spring makes Java simple、modern、productive、reactive

Spring发展到今天已经形成了一种开发生态圈,Spring提供了若干个子项目,每个项目用于完成特定的功能。而我们在项目开发时,一般会偏向于选择这一套spring家族的技术,来解决对应领域的问题,那我们称这一套技术为spring全家桶

而Spring家族旗下这么多的技术,最基础、最核心的是 SpringFramework。其他的spring家族的技术,都是基于SpringFramework的,SpringFramework中提供很多实用功能,如:依赖注入、事务管理、web开发支持、数据访问、消息服务等等

而如果我们在项目中,直接基于SpringFramework开发,存在两个问题:配置繁琐、入门难度大

所以,spring官方推荐我们从另外一个项目开始学习,那就是目前最火爆的SpringBoot

通过SpringBoot就可以快速的帮我们构建应用程序,SpringBoot最大的特点有两个 :

  • 简化配置

  • 快速开发

Spring Boot 可以帮助我们非常快速的构建应用程序、简化开发、提高效率 

二、SpringBootWeb快速入门

示例:用springboot开发一个web应用,浏览器发起/hello后,给浏览器返回字符串“Hello World!”

1、开发步骤

第1步:创建SpringBoot工程项目

新建项目,选择Spring Initializr

语言选择java,类型选择Maven,基本信息描述完之后,勾选web开发相关依赖

--点击完成--

然后会联网下载资源,等一会就好了

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

在组包下面创建一个子包controller,在controller包下新建一个类:HelloController

package com.zeyu.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

//声明该类为请求处理类
@RestController
public class HelloController {
    @RequestMapping("/hello")   //处理请求地址映射
    public String hello(){
        System.out.println("Hello World!");
        return "Hello World!";
    }
}

第3步:运行测试

运行SpringBoot自动生成的引导类

打开浏览器,输入 http://localhost:8080/hello

--over!--

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的资源

  • 把资源发送给浏览器

网络三要素:

  • IP :网络中计算机的唯一标识

  • 端口 :计算机中运行程序的唯一标识

  • 协议 :网络中计算机之间交互的规则

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

答案:http协议

三、HTTP协议

1、HTTP-概述

介绍

HTTP:Hyper Text Transfer Protocol(超文本传输协议),规定了浏览器与服务器之间数据传输的规则

  • http是互联网上应用最为广泛的一种网络协议

  • http协议要求:浏览器在向服务器发送请求数据时,或是服务器在向浏览器发送响应数据时,都必须按照固定的格式进行数据传输

想知道http协议的数据传输格式有哪些,可以打开浏览器,点击F12打开开发者工具,点击Network来查看

浏览器向服务器进行请求时:

  • 服务器按照固定的格式进行解析

服务器向浏览器进行响应时:

  • 浏览器按照固定的格式进行解析

--学习HTTP主要就是学习请求和响应数据的具体格式内容--

HTTP协议的特点:

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

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

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

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

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

    无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息。

    • 缺点: 多次请求间不能共享数据

    • 优点: 速度快

    请求之间无法共享数据会引发的问题:

    • 如:京东购物。加入购物车和去购物车结算是两次请求

    • 由于HTTP协议的无状态特性,加入购物车请求响应结束后,并未记录加入购物车是何商品

    • 发起去购物车结算的请求后,因为无法获取哪些商品加入了购物车,会导致此次请求无法正确展示数据

    具体使用的时候,我们发现京东是可以正常展示数据的,原因是Java早已考虑到这个问题,并提出了使用会话技术(Cookie、Session)来解决这个问题

2、HTTP-请求协议

浏览器和服务器是按照HTTP协议进行数据通信的

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

  • 请求协议:浏览器将数据以请求格式发送到服务器

    • 包括:请求行请求头请求体

  • 响应协议:服务器将数据以响应格式返回给浏览器

    • 包括:响应行响应头响应体

在HTTP1.1版本中,浏览器访问服务器的几种方式:

请求方式请求说明
GET获取资源。 向特定的资源发出请求
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方式的请求协议:

请求行:第一行数据,包含请求方式、请求资源路径、请求协议等(空格分隔)

例如在这个请求行中,请求方式就是GET,请求资源路径是/hello,请求协议是HTTP/1.1

请求头,第二行开始,图中蓝框部分,格式为key: value形式

  • http是个无状态的协议,所以在请求头设置浏览器的一些自身信息和想要响应的形式。这样服务器在收到信息后,就可以知道是谁,想干什么了

  • 不同浏览器解析HTML和CSS标签的结果会有不一致,所以就会导致相同的代码在不同的浏览器会出现不同的效果

  • 服务端根据客户端请求头中的数据获取到客户端的浏览器类型,就可以根据不同的浏览器设置不同的代码来达到一致的效果(这就是我们常说的浏览器兼容问题)

请求体 :存储请求参数

  • GET请求的请求参数在请求行中,故不需要设置请求体

GET请求和POST请求的区别:

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

3、HTTP-响应协议

与HTTP的请求一样,HTTP响应的数据也分为3部分:响应行响应头响应体

响应行:响应数据的第一行,200表示成功接收

响应头:响应数据的第二行开始。格式为key:value形式

响应体:存储响应数据

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

四、WEB服务器-Tomcat

1、简介

服务器,也称伺服器。是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力

服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高

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

服务器只是一台设备,必须安装服务器软件才能提供相应的服务

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

  • 服务器软件本质是一个运行在服务器设备上的应用程序

  • 能够接收客户端请求,并根据请求给客户端响应数据

Web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作(不用程序员自己写代码去解析http协议规则),让Web开发更加便捷。主要功能是"提供网上信息浏览服务"

Web服务器是安装在服务器端的一款软件,将来我们把自己写的Web项目部署到Tomcat服务器软件中,当Web服务器软件启动后,部署在Web服务器软件中的页面就可以直接通过浏览器来访问了

Tomcat服务器软件是一个免费的开源的web应用服务器。是Apache软件基金会的一个核心项目。由Apache,Sun和其他一些公司及个人共同开发而成

由于Tomcat只支持Servlet/JSP少量JavaEE规范,所以是一个开源免费的轻量级Web服务器

JavaEE规范: JavaEE => Java Enterprise Edition(Java企业版)

avaEE规范就是指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF

因为Tomcat支持Servlet/JSP规范,所以Tomcat也被称为Web容器、Servlet容器。JavaWeb程序需要依赖Tomcat才能运行

Tomcat的官网: Apache Tomcat® - Welcome!

2、基本使用

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

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

当我们运行SpringBoot的引导类时(运行main方法),就会看到命令行输出的日志,其中占用8080端口的就是Tomcat

  • 36
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A泽予

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值