首页 > 其他分享 >Spring MVC入门5

Spring MVC入门5

时间:2024-07-15 18:28:47浏览次数:14  
标签:返回 RestController 入门 Spring ResponseBody Controller MVC 注解

你能学到什么

  • 获取header的两种方式
  • 学习Spring MVC的第三部分 “ 响应 ”
    • 返回静态页面
    • 返回HTML代码
    • 返回JSON
    • 设置状态码

正文

获取header

获取Header也是从 HttpServletRequest 中获取
在这里插入图片描述

  • 再举个例子
    在这里插入图片描述
获取header的简洁方法(@RequestHeader)

@RequestHeader注解的参数值为HTTP请求报头中的?Key?
在这里插入图片描述

响应
返回静态页面

Http响应结果可以是数据, 也可以是静态⻚⾯,也可以针对响应设置状态码, Header信息等

我们以响应静态页面为例:

  • 创建前端⻚⾯ index.html(注意路径)
  • 将以下代码粘过去
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Index⻚⾯</title>
</head>
<body>
Hello,Spring MVC,我是Index⻚⾯.
</body>
</html>

然后右键点击index.html,找到Explorer

在这里插入图片描述

点开之后就找到了一个HTML文件,打开,验证你的网页是否能正常显示

在这里插入图片描述

如果是这样,那就是正常的

在这里插入图片描述

此时我们就已经将 要显示的前端页面搞好了。
之后就是后端代码的书写了
在这里插入图片描述
但是,真实的原因却是@RestController的问题

我们需要把 @RestController 改为 @Controller

  • 原因:前⾯使⽤的 @RestController 其实是返回的数据.
    @RestController = @Controller + @ResponseBody
    @Controller : 定义⼀个控制器, Spring 框架启动时加载, 把这个对象交给Spring管理.
    @ResponseBody : 定义返回的数据格式为⾮视图, 返回⼀个 text/html 信息
    所以,假如我们使用了@RestController 此时返回就是数据,不能返回视图或者html信息
    正确的做法是:
    在这里插入图片描述
    我们能先看一下@RestController 的源码:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
@AliasFor(
annotation = Controller.class
)
String value() default "";
}

所以只要把@ResponseBody 去掉就行
我们上⾯讲到, @ResponseBody 表⽰返回数据.那么如果在@Controller下面加上@ResponseBody那么是不是也是返回数据呢?我们试验一下:

在这里插入图片描述

可以看到我们的猜想是正确的,只返回了数据,没有返回页面

@ResponseBody的用法

@ResponseBody 既是类注解, ⼜是⽅法注解
如果作⽤在类上, 表⽰该类的所有⽅法, 返回的都是数据, 如果作⽤在⽅法上, 表⽰该⽅法返回的是数据.
也就是说: 在类上添加 @ResponseBody 就相当于在所有的⽅法上添加了 @ResponseBody 注解.
同样, 如果类上有 @RestController 注解时:表⽰所有的⽅法上添加了 @ResponseBody 注解, 也就是当前类下所有的⽅法返回值做为响应数据
如果⼀个类的⽅法⾥, 既有返回数据的, ⼜有返回⻚⾯的, 就把 @ResponseBody 注解添加到对应的⽅法上即可.

返回HTML代码片段

后端返回数据时, 如果数据中有HTML代码, 也会被浏览器解析
在这里插入图片描述

返回JSON

在这里插入图片描述

设置状态码

通过Spring MVC的内置对象HttpServletResponse 提供的⽅法来进⾏设置
在这里插入图片描述
讲到这,我们的Spring MVC的概念部分就讲完了,后面我们就要上一些简单的案例来加深理解了。

标签:返回,RestController,入门,Spring,ResponseBody,Controller,MVC,注解
From: https://blog.csdn.net/2303_79064370/article/details/140431420

相关文章

  • 基于springboot+vue“智慧食堂”(毕设+实现+源码+数据库)
    摘要随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。网上管理,它将是直接管理“智慧食堂”系统的最新形式。本LW是以构建“智慧食堂”系统为目标,使用java技术制作,由管理员和用户两大部分组成。着重论述了系统设计......
  • Python基础入门(一)
    Python基础入门(一)一、python语言介绍​ python是一种解释型、面向对象、动态数据类型的高级程序设计语言。​ Python由GuidvanRossum于1989年底发明,​ 第一个公开发行版发行于1991年。​ Python源代码遵循GPL(GNUGeneralPublicLicense)协议二、python特点​ ......
  • Python基础入门(二)
    Python基础入门(二)一、学习目标:掌握各种分支结构的使用方法掌握各种循环结构的使用方式掌握分支结构与循环结构的嵌套使用方式二、分支结构介绍根据指定条件是否成立确定是否执行相应的代码块:单分支结构二分支结构多分支结构分支结构嵌套三、单分支结......
  • MVC
    MVCMVC它是一种思想,而SpringMVC它是将这种思想进行了实现,除此之外,SpringMVC还是一种Web框架SpringBoot和SpringMVC的关系SpringBoot只是实现SpringMVC的一种方式,SpringBoot可以添加很多的依赖,借助这些依赖实现不同的功能,SpringBoot就是通过添加SpringWebMVC......
  • Spring MVC 中的拦截器的使用“拦截器基本配置” 和 “拦截器高级配置”
    1.SpringMVC中的拦截器的使用“拦截器基本配置”和“拦截器高级配置”@目录1.SpringMVC中的拦截器的使用“拦截器基本配置”和“拦截器高级配置”2.拦截器3.SpringMVC中的拦截器的创建和基本配置3.1定义拦截3.2拦截器基本配置3.3拦截器的高级配置4.SpringMVC......
  • Spring 方法注入
    方法注入        在大多数的应用场景下,多数的bean都是单例的。当这个单例的bean需要和另一个单例的或者非单例的bean协作使用的时候,开发者只需要配置依赖bean为这个bean的属性即可。但是有时会因为bean具有不同的生命周期而产生问题。假设单例的beanA在每个方法调用......
  • Spring study
    IoC容器初识IoC1.什么是IoC容器?IoC容器是Spring框架的核心组成部分,它负责管理应用程序中对象的创建、配置和生命周期。IoC容器通过依赖注入(DependencyInjection,DI)的方式,自动装配和管理对象之间的依赖关系,从而避免了对象之间硬编码的依赖。2.为什么会有IoC容器?在传统的编程......
  • Spring Boot Vue 毕设系统讲解 11【协同过滤方法教学】
    目录1.基础知识用户基于的协同过滤(User-basedCF)物品基于的协同过滤(Item-basedCF)优缺点实际应用2.项目功能实战1.基础知识协同过滤(CollaborativeFiltering,CF)是一种广泛应用于推荐系统中的算法,它通过分析和利用用户与物品之间的交互信息来发现用户可能感兴趣......
  • SpringBoot实战:轻松实现接口数据脱敏
    引言在现代的互联网应用中,数据安全和隐私保护变得越来越重要。尤其是在接口返回数据时,如何有效地对敏感数据进行脱敏处理,是每个开发者都需要关注的问题。本文将通过一个简单的SpringBoot项目,介绍如何实现接口数据脱敏。一、接口数据脱敏概述1.1接口数据脱敏的定义接口数据脱......
  • AI绘画Stable Diffusion 零基础入门 —AI 绘画原理与工具介绍,万字解析AI绘画的使用教
    大家好,我是设计师阿威想要入门AI绘画,首先需要了解它的原理是什么样的。其实很早就已经有人基于深度学习模型展开了对图像生成的研究了,但在那时,生成的图像分辨率和内容都非常抽象。直到近两年,AI产出的图像内容的质量变高、而且有一定的艺术价值,这时它才算正式拥有了理......