• Java之SpringBoot入门(含Spring Mvc)


    1.Spring Boot Helper的安装

    首先我们要装好Spring Boot Helper

    但是由于直接在IDEA中下的是收费版,在学习阶段我们可以去官网下载一些免费版使用

    Spring Boot Helper - IntelliJ IDEs Plugin | Marketplace(点击即可进入官网)

    然后在IDEA中导入即可,这样之后你再创建项目的时候就可以看见Spring Initializr的选项了。

    2.创建Spring Boot项目

    再就是创建项目以后我们需要修改一下pom.xml文件,尤其是把这个版本后面的release去掉

    其他标红的在新建以后右下角会弹出窗口,点击相关选项进行下载,然后等待一段时间即可。

    至此我们就可以开始编写我们的程序呢。

    3.编写第一个Spring Boot程序

    3.1程序编写

    就如同我们刚学编程一样,我们第一个程序就是输出Hello Spring

    其中

    • RequestMapping注解是Spring MVC框架中的一个核心注解,用于将HTTP请求映射到特定的处理方法上。
    • 它通过URL路径、请求方法(如GET、POST)、请求参数等条件来匹配请求,并将匹配的请求转发到相应的方法进行处理。

    所以我们可以理解成一个类方法和成员方法的注释,后续只需要用浏览器进行访问即可。(后续演示)

    @RestController是Spring Framework中的一个注解,它主要用于标识一个类是RESTful服务的控制器(Controller)。具体来说,@RestController注解是@Controller和@ResponseBody注解的组合体,它结合了这两个注解的功能。(了解即可,此处暂时不过多解释)

    3.2运行程序

    直接在浏览器就可以访问了,不过在学习这个之前大家应该需要具备网络的基础知识,例如127.0.0.1是本地环回地址,以及url的含义,如果有疑问可以看之前的文章先进行了解。

    3.学习Spring Mvc

    1.MVC 定义

    MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分 为模型、视图和控制器三个基本部分
    View(视图) 指在应⽤程序中专⻔⽤来与浏览器进⾏交互,展⽰数据的资源.
    Model(模型) 是应⽤程序的主体部分,⽤来处理程序中数据逻辑的部分.
    Controller(控制器)可以理解为⼀个分发器,⽤来决定对于视图发来的请求,需要⽤哪⼀个模型
    来处理,以及处理完后需要跳回到哪⼀个视图。即⽤来连接视图和模型

    2.什么是Spring MVC ?

    MVC 是⼀种架构设计模式, 也⼀种思想, ⽽ Spring MVC 是对 MVC 思想的具体实现. 除此之外, Spring
    MVC还是⼀个Web框架.
    总结来说,Spring MVC 是⼀个实现了 MVC 模式的 Web 框架.
    所以, Spring MVC主要关注有两个点:
    1. MVC
    2. Web框架
    Spring MVC 全称是 Spring Web MVC
    其实, Spring MVC 我们在前⾯已经⽤过了, 在创建 Spring Boot 项⽬时,我们勾选的 Spring Web 框架 其实就是 Spring MVC 框架:
    Spring Boot 只是实现Spring MVC的其中⼀种⽅式⽽已.
    Spring Boot 可以添加很多依赖, 借助这些依赖实现不同的功能. Spring Boot 通过添加Spring Web
    MVC框架, 来实现web功能.

    3.学习Spring Mvc

    既然是 Web 框架, 那么当⽤⼾在浏览器中输⼊了 url 之后,我们的 Spring MVC 项⽬就可以感知到⽤⼾
    的请求, 并给予响应.
    咱们学习Spring MVC, 重点也就是学习如何通过浏览器和⽤⼾程序进⾏交互.
    主要分以下三个⽅⾯:
    1. 建⽴连接:将⽤⼾(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的
    Spring 程序。
    2. 请求: ⽤⼾请求的时候会带⼀些参数,在程序中要想办法获取到参数, 所以请求这块主要是 获取参数
    的功能.
    3. 响应: 执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤⼾, 也就是响应.
    第一个问题@RequestMapping 是 GET 还是 POST 请求?

    GET请求:
    浏览器发送的请求类型都是get, 通过以上案例, 可以看出来 @RequestMapping ⽀持get请求.
    POST 请求:
    我们通过form表单来构造请求:
    创建test.html, html代码:

    既⽀持Get请求, ⼜⽀持Post请求. 同理, 也⽀持其他的请 求⽅式.
    那如何指定GET或者POST类型呢?
    指定GET/POST⽅法类型
    我们可以显⽰的指定@RequestMapping 来接收
    RequestParam
    @RequestParam 是 Spring 框架中用于处理 HTTP 请求参数的注解,它主要用于将请求 URL 中的参数值绑定到控制器方法的参数上。以下是关于  @RequestParam 的详细解释:
    • 绑定参数@RequestParam 可以将请求 URL 中的参数值绑定到控制器方法的参数上,使得开发者可以在方法体内直接使用这些参数值。
    • 参数名指定:通过 value 或 name 属性可以指定请求参数的名称,如果请求参数名和方法参数名一致,则可以省略该属性。
    • 默认值defaultValue 属性允许为参数指定一个默认值,当请求中不包含该参数时,将使用默认值。
    • 必填参数:虽然 required 属性的默认值通常为 false(表示参数不是必需的),但在某些情况下,可以将其设置为 true 以确保请求中必须包含该参数,否则将抛出异常。
    PostMan
    在我们后面的学习过程中还需要使用PostMan
    大家可以先下载下来进行使用( https://www.postman.com/downloads/
    由于PostMan容易上手,此处不过多赘述。
    1.从路径(url)中获取参数@RequestMapping

    使用@RequestMapping即可从路径(url)中读取参数

    2.上传⽂件@RequestPart
    3.获取Cookie和Session
    回顾 Cookie
    HTTP 协议⾃⾝是属于 "⽆状态" 协议.
    "⽆状态" 的含义指的是:
    默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信, 和下次通信之间没有直接的联系.
    但是实际开发中, 我们很多时候是需要知道请求之间的关联关系的.
    例如登陆⽹站成功后, 第⼆次访问的时候服务器就能知道该请求是否是已经登陆过了.
    上述图中的 "令牌" 通常就存储在 Cookie 字段中
    此时在服务器这边就需要记录"令牌"信息, 以及令牌对应的⽤⼾信息, 这个就是 Session 机制所做的⼯ 作.
    理解Session
    我们先来了解⼀下什么是会话.
    会话: 对话的意思
    在计算机领域, 会话是⼀个客⼾与服务器之间的不中断的请求响应. 对客⼾的每个请求,服务器能够识 别出请求来⾃于同⼀个客⼾. 当⼀个未知的客⼾向Web应⽤程序发送第⼀个请求时就开始了⼀个会话. 当客⼾明确结束会话或服务器在⼀个时限内没有接受到客⼾的任何请求时,会话就结束了.
    服务器同⼀时刻收到的请求是很多的. 服务器需要清楚的区分每个请求是从属于哪个⽤⼾, 也就是属于 哪个会话, 就需要在服务器这边记录每个会话以及与⽤⼾的信息的对应关系. Session是服务器为了保存⽤⼾信息⽽创建的⼀个特殊的对象.
    Session的本质就是⼀个 "哈希表", 存储了⼀些键值对结构. Key 就是SessionID, Value 就是⽤⼾信息(⽤ ⼾信息可以根据需求灵活设计).
    Cookie 和 Session 的区别
    Cookie 是客⼾端保存⽤⼾信息的⼀种机制. Session 是服务器端保存⽤⼾信息的⼀种机制.
    Cookie 和 Session之间主要是通过 SessionId 关联起来的, SessionId 是 Cookie 和 Session 之间的桥梁
    Cookie 和 Session 经常会在⼀起配合使⽤. 但是不是必须配合. 完全可以⽤ Cookie 来保存⼀些数据在客⼾端. 这些数据不⼀定是⽤⼾⾝份信息, 也不⼀定是 SessionId
    Session 中的sessionId 也不需要⾮得通过 Cookie/Set-Cookie 传递, ⽐如通过URL传递.
    HttpServletRequest和HttpServletResponse
    HttlServletRequest
    HttpServletRequest和HttpServletResponse是Spring MVC⽅法的内置对象. 需要时直接在⽅法中添加声明即可
    HttpServletRequest 对象代表客⼾端的请求, 当客⼾端通过HTTP协议访问服务器时,HTTP请
    求头中的所有信息都封装在这个对象中,通过这个对象提供的⽅法,可以获得客⼾端请求的所有信
    息.
    HttpServletResponse 对象代表服务器的响应. HTTP响应的信息都在这个对象中, ⽐如向客⼾
    端发送的数据, 响应头, 状态码等. 通过这个对象提供的⽅法, 可以获得服务器响应的所有内容
    Spring MVC在这两个对象的基础上进⾏了封装, 给我们提供更加简单的使⽤⽅法.
    获取Cookie
    下面演示如何获取Cookie
    也可以单独获取指定cookie
    获取Session
    根据sessionid设置和获取session对象
    同样可以用@sessionAttribute进行指定
    获取header

    使用如下

    HttpServletResponse
    1.返回静态页面

    注意

    1.要把@RestController换成@Controller

    2./的省略问题

    1. 返回值处理

    • RestController:这个注解结合了@Controller和@ResponseBody的功能。它默认将所有处理请求的方法的返回值直接作为响应体内容返回,主要用于构建RESTful API。返回的数据格式通常是JSON或XML,这取决于请求中的Accept头部或配置的消息转换器。
    • Controller:这个注解的返回值通常会经过视图解析器解析,然后返回给用户一个渲染后的HTML页面。如果需要在Controller中返回JSON或XML数据,需要在方法上额外添加@ResponseBody注解。

    2. 用途和场景

    • RestController:主要用于构建RESTful Web服务,它简化了开发RESTful风格的控制器的代码,使得开发者能够更加专注于业务逻辑的实现,而无需关注底层的请求-响应处理细节。它支持get、post、put、delete等HTTP方法,适用于前后端分离的架构。
    • Controller:更多地与视图渲染和页面跳转相关,适用于传统的MVC(Model-View-Controller)架构。通过页面模板引擎(如JSP、Thymeleaf等)将数据渲染成HTML页面返回给用户。
    2.设置状态码

    3.设置ContentType

    4.设置其他Header

    void setHeader(String name, String value) 设置⼀个带有给定的名称和值的 header. 如果 name
    已经存在, 则覆盖旧的值

    至此我们Spring Mvc入门暂时结束,我们之后的博客再见,感谢观看!

  • 相关阅读:
    BUUCTF [BJDCTF2020]just_a_rar 1
    【无标题】
    Spring boot 启动流程及外部化配置
    论文阅读笔记——A deep tree-based model for software defect prediction
    数据结构题目收录(二十二)
    关于linux多线程fork的理解和学习
    VUE+TS使用elementUI的el-checkbox双重v-for循环做勾选
    vue3+ts项目04-国际化
    Java.lang.Class类 getCanonicalName方法有什么功能呢?
    面试题-8
  • 原文地址:https://blog.csdn.net/qq_35639854/article/details/140943071