【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

我用Go只花了13天开发出可自我演进的AI助手

在OpenClaw刚发布的当天我就疯狂地玩了一段时间,开始我还真是被它给惊艳到了。觉得它很聪明貌似好多的活会自动在后台完成至少不需要我与它反复沟通,而且还可以与飞书通信,我老婆还说我像个拿到了心爱玩具的孩子。那当然了,从业27年了已经很久没有因为某项技术而让我如此兴奋了!我感觉它能做的很多事情,很多以前想做而又分身乏术做不了的事。 但我不幸的是我发现它用得越久就变得越来越“蠢”似乎思维速度在持续地退化,而且很多对话都是直接不回复,最严重的一次是发现QWen Chat上token好像都耗光了,当时看TUI的统计是Token用量为680% / 100%! 然后,就没有然后了,直接罢工,虽然OpenClaw的更新很快,我还是从源码安装每天都去pull新的内容,但这几天“教”它的所有东西都没用了。 这两天下来的感觉是兴奋属于高开低走,它的实际智能还比不上AI开发工具,可能我是没能用上Opus吧,据说只要付得起钱一天烧个100~200刀用Opus可以玩得很爽,我无法验证这点,但从实际运行来看,OpenClaw的理念虽好,但是个烧钱怪!而且根本不是给中国人设计的,整个技能生态度极度不友好,我们

By Ne0inhk
【MySQL基础】MySQL表操作全面指南:从创建到管理的深度解析

【MySQL基础】MySQL表操作全面指南:从创建到管理的深度解析

MySQL学习: https://blog.ZEEKLOG.net/2301_80220607/category_12971838.html?spm=1001.2014.3001.5482 前言: 在上一篇我们学习了库的创建和使用,表是其存储数据的核心结构。本文将全面讲解MySQL中关于表的各项操作,包括创建、修改、删除等,并深入探讨相关知识点和注意事项。 表的基本概念 在MySQL中,表是存储数据的主要对象,由行和列组成。理解表的基本结构对数据库设计至关重要。 表的主要组成部分 组成部分描述表名表的唯一标识符,遵循命名规则列(字段)表的垂直结构,定义数据的类型和约束行(记录)表的水平结构,实际存储的数据主键唯一标识表中每一行的列或列组合索引提高查询性能的数据结构约束 保证数据完整性的规则 创建表 基本语法 CREATE TABLE [IF NOT EXISTS] table_name ( column1 datatype [constraints]

By Ne0inhk
zoxide 开源鸿蒙 PC 生态适配实战:Rust 交叉编译与 HNP 打包完整指南

zoxide 开源鸿蒙 PC 生态适配实战:Rust 交叉编译与 HNP 打包完整指南

zoxide 开源鸿蒙 PC 生态适配实战:Rust 交叉编译与 HNP 打包完整指南 前言:为什么要把 zoxide 引入开源鸿蒙 PC 生态? 作为 Linux 终端下广受欢迎的智能目录跳转工具,zoxide 凭借关键词模糊匹配 + 访问频率排序的核心优势,彻底解决了传统 cd 命令需记忆冗长路径、逐级跳转的痛点,成为开发者与运维人员提升终端效率的必备工具。随着鸿蒙PC生态的快速发展,终端命令行工具的丰富度成为提升用户体验的关键环节。为让开源鸿蒙 PC 用户也能享受到 zoxide 的高效便捷。 本文基于 Rust 交叉编译技术与开源鸿蒙 HNP 规范,详细拆解 zoxide 从源码拉取、构建脚本配置、交叉编译打包,到设备端安装验证的完整适配流程。文中不仅提供可直接复用的配置文件与命令代码,还汇总了适配过程中常见的 Rust 编译、链接器兼容等问题及解决方案,为开发者提供一套低成本、高可复用的开源鸿蒙

By Ne0inhk
KingbaseES数据库:用 ksql 实现本地库创建 / 查看 / 切换 / 删除(附避坑技巧)

KingbaseES数据库:用 ksql 实现本地库创建 / 查看 / 切换 / 删除(附避坑技巧)

KingbaseES数据库:用 ksql 实现本地库创建 / 查看 / 切换 / 删除(附避坑技巧) 本文围绕本地 KingbaseES 数据库的全生命周期操作展开,先明确操作前的关键前提 —— 根据不同兼容模式确认 “权限库”(普通模式连任意已存库,SQLServer 兼容模式需连 master 库),并通过 \du 命令核查用户是否具备 CREATEDB 权限。核心讲解两种创建方式:推荐用 CREATE DATABASE 语句自定义编码、表空间等配置,也可通过 createdb 工具在系统终端快速创建。后续依次介绍 \l 查看所有库列表、\l + 查单库详情、\c 切换库的方法,强调切换前需提交事务避免数据回滚。删除操作重点提醒需先切换至其他库,建议加 IF EXISTS 选项,并做好数据备份以防丢失。最后针对权限不足、数据库被占用等高频报错,给出具体排查解决步骤,

By Ne0inhk