【JavaEE】springMVC返回Http响应

【JavaEE】springMVC返回Http响应

目录

一、返回页面

步骤如下:

我们先要在static目录下创建我们的HTML文件。

HTML源码:

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Index</title></head><body> Hello,Spring MVC,我是Index⻚⾯. </body></html>
  1. 在源码的类注解前面要使用@Controller注解,返回的页面名要与创建的文件名一致,并且加上后缀,且必须加上反斜杠 /

源码:

@RequestMapping("/response")@ControllerpublicclassResponseController{@RequestMapping("/r1")publicStringr1(){return"/index.html";}}

浏览器访问结果:

二、@Controller和@ResponseBody与RestController区别

SpringBoot默认扫描路径是启动类所在路径(包),和子目录。

@RestController的作用就是告诉Spring这个类需要扫描。
@RestController = @ResponseBody+@Controller

在早期编程,前后端不分离时@Controller就是负责返回视图的, @ResponseBody就是负责返回数据的。

  1. 当一个类中既要返回页面,又要返回数据的时候,就在类上加上@Controller,在类中返回数据的方法上加@ResponseBody。
  2. 当一个类全部返回数据的时候,就在类上加上@Controller + @ResponseBody,或者@RestController。
  3. 当一个页面只返回页面时,在类上加@Controller。

三、返回HTML代码⽚段

直接跟写HTML代码一样,写就行了,注意这种算返回数据。
代码:

@RequestMapping("/r2")publicStringr2(){return"<h2>我是二级标题</h2>";}

访问结果:

如果这就是一个文本,只需要在@RequestMapping的products中注明类型即可。

@RequestMapping(value ="/r2", produces ="text/pain")publicStringr2(){return"<h2>我是二级标题</h2>";}

四、返回JSON

后端⽅法返回结果为对象直接就是返回的JSON。

源码:

@RequestMapping("/r3")publicPersonr3(){Person person =newPerson(); person.setId(1); person.setName("zhangsan"); person.setPassword("123");return person;}

结果:

五、HttpServletResponse设置状态码

Spring MVC会根据我们⽅法的返回结果⾃动设置响应状态码, 程序员也可以⼿动指定状态码。
通过类HttpServletResponse下的setStatue来设置。

源码:

@RequestMapping("/r4")publicStringr4(HttpServletResponse response){ response.setStatus(404);return"设置状态码成功";}

结果:

六、设置Header

6.1 HttpServletResponse设置

通过类HttpServletResponse下的setHeader来设置。
在方法中前一个参数是header的参数名,后一个是值。

源码:

@RequestMapping("/r5")publicStringr5(HttpServletResponse response){ response.setHeader("myHeader","444");return"设置Header成功";}

结果:

6.2 @RequestMapping设置

@RequestMapping的组成如下:

我们通过设置 produces属性的值, 设置响应的报头Content-Type。
源码:

@RequestMapping(value ="/r6",produces ="application/json")publicStringr6(){return"{\"success\":true}";}

结果:

Read more

Flutter for OpenHarmony:Flutter 三方库 refena — 新一代响应式状态管理框架在鸿蒙的应用(适配鸿蒙 HarmonyOS Next ohos)

Flutter for OpenHarmony:Flutter 三方库 refena — 新一代响应式状态管理框架在鸿蒙的应用(适配鸿蒙 HarmonyOS Next ohos)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net。 Flutter for OpenHarmony:Flutter 三方库 refena — 新一代响应式状态管理框架在鸿蒙的应用(适配鸿蒙 HarmonyOS Next ohos) 状态管理一直是 Flutter 开发中讨论最激烈的话题。从 Provider 的简洁、Bloc 的严谨到 Riverpod 的优雅,每一种方案都在试图解决逻辑复用与状态追踪的问题。而在 Flutter for OpenHarmony 生态中,为了追求更极致的性能与代码可读性,Refena 作为一个轻量级、功能完备且具有响应式原生属性的框架,正在受到越来越多资深开发者的关注。 本文将带您领略 refena 的独特魅力,并探讨如何利用它来构建一个健壮的鸿蒙应用架构。 一、为什么在鸿蒙上选择 Refena? 1.1 精准的重绘控制 refena 内部采用高效的图逻辑来跟踪依赖关系,仅在状态真正发生变化时才通知监听的组件,

By Ne0inhk
Flutter 三方库 smart_arb_translator 的鸿蒙化适配指南 - 实现自动化的 ARB 国际化资源翻译、支持 Google Translate API 集成与一键式多语言同步

Flutter 三方库 smart_arb_translator 的鸿蒙化适配指南 - 实现自动化的 ARB 国际化资源翻译、支持 Google Translate API 集成与一键式多语言同步

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 smart_arb_translator 的鸿蒙化适配指南 - 实现自动化的 ARB 国际化资源翻译、支持 Google Translate API 集成与一键式多语言同步 前言 在进行 Flutter for OpenHarmony 的全球化应用开发时,维护多达数十种语言的 Intl 资源文件(ARB 格式)是一项极其枯燥的工作。通过人工翻译不仅效率低下,还容易在复制粘贴过程中出错。smart_arb_translator 是一个智能化的命令行工具,它通过调用翻译引擎 API,自动扫描并补全 ARB 文件中缺失的翻译项。本文将探讨如何利用该工具加速鸿蒙应用的国际化进程。 一、原理解析 / 概念介绍 1.1 基础原理

By Ne0inhk

【AI】ubuntu搭建claude code开发环境

📋 环境搭建与配置全流程 你可以参考下面的流程图,对整个搭建和使用过程有一个整体的认识: 步骤 1:环境准备 在开始之前,请打开终端,确保你的系统满足以下条件: 安装 Git(可选但强烈推荐): Claude Code 能更好地理解 Git 历史记录和进行版本控制操作。 sudoaptinstall -y git 安装 Node.js(推荐 18.19.0 或更高版本): Claude Code 可以通过 npm 安装,所以 Node.js 是必需的。 # 使用 NodeSource 仓库安装 Node.js 20.x LTS 版本curl -fsSL https://deb.nodesource.

By Ne0inhk
【Linux系统编程】(三十五)揭秘 Linux 信号产生:从终端到内核全解析

【Linux系统编程】(三十五)揭秘 Linux 信号产生:从终端到内核全解析

前言         在 Linux 系统中,信号是进程间异步通信的 “信使”,而 “信号产生” 则是这个通信过程的起点。无论是我们熟悉的Ctrl+C终止进程,还是程序运行中出现的段错误、定时器超时,本质上都是信号被触发产生的过程。很多开发者只知道 “信号能终止进程”,却不清楚信号到底是怎么来的 —— 是用户操作触发的?还是系统自动产生的?不同场景下信号的产生机制有何不同?         本文将基于 Linux 内核原理,结合 5 种核心信号产生场景(终端按键、系统命令、函数调用、软件条件、硬件异常),用通俗的语言,带你全方位揭秘信号产生的底层逻辑,让你不仅 “知其然”,更 “知其所以然”。下面就让我们正式开始吧! 一、信号产生的核心本质:谁在 “发送” 信号?         在深入具体场景之前,我们先明确一个核心问题:信号是由谁产生并发送的?答案是操作系统(OS)。         无论信号的触发源头是用户按键、函数调用还是硬件异常,

By Ne0inhk