Spring MVC后续

news2024/11/15 3:33:00

目录

1 响应

1.1 返回静态页面

1.2 返回数据@ResponseBody

 1.3 返回HTML代码片段

1.4 返回JSON

1.5 设置状态码 

1 响应

1.1 返回静态页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index页面</title>
</head>
<body>
    Spring MVC,index页面.
</body>
</html>
@RequestMapping("/use")
@RestController
public class SpringBoot {
    @RequestMapping("/index")
    public String index() {
        //返回index.html
        return  "/index.html";
    }
}

这时候我们的页面没有正确展示出来 ,http相应吧"/index.html"当做了http响应正文的数据,要想让Spring MVC正确的识别index.html是一个静态页面,并正确返回,我们需要把@RestController改为@Controller

@RequestMapping("/use")
@Controller
public class SpringBoot {
    @RequestMapping("/index")
    public String index() {
        //返回index.html
        return  "/index.html";
    }
}

@RestController和@Controller的区别

在早期的概念中,MVC模式,后端会返回视图,目前项目开发流行"前后端分离"模式,Java主要用来做后端开发,所以就不在处理前端的内容了,MVC的概念页发生了变化,View不在返回视图,而是返回视图所需的数据了

@RestController其实就是返回数据,@RestController=@Controller + @ResponseBody

@Controller:定义一个控制器,Spring框架启动时加载,把这个对象交给Spring管理

@ResponseBody:定义返回的数据格式为非视图,返回一个text/html信息

因此,想返回视图的话,只需要把@ResponseBody去掉就可以了,也就是@Controller

1.2 返回数据@ResponseBody

@RequestMapping("/use")
@Controller
@ResponseBody
public class SpringBoot {
    @RequestMapping("/index")
    public String index() {
        //返回index.html
        return  "/index.html";
    }
}

只需要加上 @ResponseBody注解,该方法就会把"/index.html"当做一个数据返回给前端

 @ResponseBody即是类注解,又是方法注解

如果作用在类上,表示该类的所有方法,返回的都是数据,如果作用在方法上,表示该方法返回的是数据,也就是在类上条件 @ResponseBody就相当于在所有方法上添加 @ResponseBody注解

如果一个类的方法里,即有返回数据,又有返回页面的,就需要把 @ResponseBody注解到对应的方法上

@RequestMapping("/use")
@Controller
public class SpringBoot {
    @RequestMapping("/index")
    public String index() {
        //返回index.html
        return  "/index.html";
    }
    @RequestMapping("/Data")
    @ResponseBody
    public String Data() {
        return "返回数据";
    }
}

写多个注解是,没有先后顺序

@RequestMapping("/use")
@Controller
public class SpringBoot {
    @RequestMapping("/index")
    public String index() {
        return  "/index.html";
    }
    @RequestMapping("/Data")
    public String Data() {
        return "返回数据";
    }
}

如果去掉@ResponseBody注解,程序会报404错误,因为程序认为需要返回的视图,根据内容去查找文件,但是查询不到,路径不存在,报404

 1.3 返回HTML代码片段

@RequestMapping("/use")
@RestController
public class SpringBoot {
    @ResponseBody
    @RequestMapping("/returnHTML")
    public String returnHTML() {
        return "<h1>Spring,HTML</h1>";
    }
}

通过抓包可以看到Content-Type为text/html 

在响应中的Content-Type常见的有以下几种:

text/html:body数据格式是HTML

text/css:body数据格式为CSS

application/javscript:body数据格式为JavaScript

application/json:body数据格式为JSON

1.4 返回JSON

@RequestMapping("/use")
@RestController
public class SpringBoot {
    @ResponseBody
    @RequestMapping("/returnJson")
    public HashMap<String,String> returnJson() {
        HashMap<String,String> map = new HashMap<>();
        map.put("1","1");
        map.put("2","2");
        return map;
    }
}

通过抓包,可以看到响应的格式为json格式 

当接口返回的是String时,Content-Type是text/html

当接口返回的是对象时,Content-Type是application/json

1.5 设置状态码 

@RequestMapping("/use")
@RestController
public class SpringBoot {
    @ResponseBody
    @RequestMapping("/setStatus")
    public String setStatus(HttpServletResponse response) {
        response.setStatus(401);
        return "设置成功";
    }
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1616776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

项目管理中,项目团队如何高效的协作与沟通?

目 录 一、项目团队高效的协作与沟通&#xff0c;可以通过以下几个方面来实现&#xff1a; 二、如何在项目团队中明确和共享愿景以提高协作效率&#xff1f; 三、有效的沟通策略在项目管理中的应用案例有哪些&#xff1f; 四、建立哪些具体的沟通机制可以提升团队协作效率…

创享大会分会场—“职棱起来”《职业生涯画布工作坊》

会议主题&#xff1a;创享大会分会场—“职棱起来”《职业生涯画布工作坊》 会议时间&#xff1a;5月25日&#xff08;周六&#xff09;13:30—16:30 会议地点&#xff1a;北京希尔顿欢朋酒店&#xff08;大红门&#xff09; 特邀嘉宾&#xff1a;姚冬&#xff08;冬哥&…

探秘Meta AI巨无霸:LLaMA大语言模型解析!

目录 福利&#xff1a;文末有chat-gpt纯分享&#xff0c;无魔法&#xff0c;无限制 Abstract Introduction Approach Pre-training Data Tokenizer Architecture Pre-normalization SwiGLU激活函数 Rotary Embeddings Optimizer Main results 总结 Meta的LLaMA大模…

【QML】State组件

State(状态)组件是一组来自默认配置的批处理更改。所有项都有一个默认状态&#xff0c;该状态定义对象和属性值的默认配置。可以通过将State项添加到states属性来定义新的状态&#xff0c;以允许项在不同的配置之间切换。 State组件的基本用法如下&#xff1a; Window {id: …

如何优化必应bing搜索国内广告投放效果?

在当今竞争激烈的数字营销环境中&#xff0c;必应Bing作为全球第二大搜索引擎&#xff0c;在中国市场正逐渐成为企业不可忽视的广告投放平台。其高质量的用户基础与精准的定位能力&#xff0c;为广告主提供了新的增长机遇。然而&#xff0c;如何在必应Bing上实现广告效果的最大…

基于springboot+vue+Mysql的汉服推广网站

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

列车tcn网络mvb主站发送代码流程解析

TCN-列车通信网络概述 机车车辆通信网络&#xff08;TCN-列车通信网络&#xff09;的基本组件是在整个列车单元中提供数据通信的有线列车总线&#xff08;WTB&#xff09;和用于在车辆或固定连接车辆组&#xff08;组成&#xff09;内进行数据交换&#xff08;通信&#xff09…

公钥密码学Public-Key Cryptography

公钥或非对称密码学的发展是整个密码学历史上最伟大的&#xff0c;也许是唯一真正的革命。The development of public-key, or asymmetric, cryptography is the greatest and perhaps the only true revolution in the entire history of cryptography. 公钥算法基于数学函数…

aardio - 【库】图片转字符画

库文件及例程下载&#xff1a;https://aardio.online/thread-261.htm

【linux】Bad owner or permissions on

在root用户下执行scp操作向另外一个节点拷贝文件时发生了如下错误&#xff1a; Bad owner or permissions on /etc/crypto-policies/back-ends/openssh.config 我们查看他的权限时发现它所链接的文件权限为777 解决方法就是&#xff1a; chmod 600 /etc/crypto-policies/back-e…

组装一台FPV穿越机无人机,小白级保姆教程!

穿越机是无人机的一种类型&#xff0c;但与常见的无人机相比&#xff0c;它更倾向于被归类为航模。穿越机通常没有自主巡航能力&#xff0c;并且许多玩家喜欢自己购买配件进行组装。它的最高时速可以达到120km/h至230km/h。 配件清单 DJI O3 天空端&#xff0c;DJI Goggles 2&…

[柏鹭杯 2021]试试大数据分解?

题目&#xff1a;&#xff08;NSSCTF | 在线CTF平台&#xff09; 题目就是如此&#xff0c;我没看到有5个不同的文本&#xff0c;其中最后一个文本以pem后缀&#xff0c;所以我们先来了解一下什么是pem格式。 PEM 格式 PEM格式通常用于数字证书认证机构&#xff08;Certifica…

如何在window系统中安装Mysql

先简单来说说MySQL是什么&#xff1f; MySQL 是最流行的关系型数据库管理系统&#xff0c;在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System&#xff1a;关系数据库管理系统)应用软件之一。 MySQL 由瑞典 MySQL AB 公司开发&#xff0c;目前属于…

关于主流电商数据采集技术:电商API数据采集接口|

引言 随着时代的进步&#xff0c;电商数据采集技术正以前所未有的速度和规模发展&#xff0c;它已经深刻地改变了我们的生活和工作方式。在这个激动人心的时刻&#xff0c;我司也积极跟随时代的步伐&#xff0c;不断探索创新&#xff0c;努力实现与AI技术的融合&#xff0c;以提…

Python自动化系列3

常用数据类型:列表、元祖、字典、集合 1、列表&#xff08;list&#xff09;&#xff1a;[] 1.1、元素可以是任意的数据类型&#xff1a;int float bool str list … list1 [20,3.14,True,“七木”&#xff0c;“荷花鱼”&#xff0c;[1,2,3,4]] #空列表 1.2、收值:素引取值…

【linux】mobaterm如何kill pycharm进程

【linux】mobaterm如何kill pycharm进程 【先赞后看养成习惯】求点赞关注收藏&#x1f600; 使用云服务器时&#xff0c;pycharm在打开状态下&#xff0c;不小心关了mobaxterm&#xff0c;然后再输入pycharm.sh就会打不开pycharm&#xff0c;显示已经打开报错&#xff1a;Com…

Python 全栈体系【四阶】(三十三)

第五章 深度学习 六、PaddlePaddle 图像分类 1. 概述 1.1 什么是图像分类 图像分类就是将不同的图像划分到不同类别&#xff0c;实现最小分类误差、最高精度。手写体识别就是一个经典的图像分类问题&#xff0c;它将输入图像分为 0~9 某个数字中&#xff0c;实际就是将输入图…

《Vid2Seq》论文笔记

原文链接 [2302.14115] Vid2Seq: Large-Scale Pretraining of a Visual Language Model for Dense Video Captioning (arxiv.org) 原文笔记 What&#xff1a; 《Vid2Seq: Large-Scale Pretraining of a Visual Language Model for Dense Video Captioning》 作者提出一种多…

idea连接远程服务器并同步代码

idea连接远程服务器并同步代码 打开我们的idea。 tool -> deployment -> configuration 新建连接 -> sftp host输入你的远程服务器ip&#xff0c;输入用户名、密码、测试连接 连接成功 选择服务器根目录 web链接&#xff08;无需要不用&#xff09; 点击mappin…

【MySQL 数据宝典】【磁盘结构】- 006 bin log 二进制日志的基本模式和参数设置

一、基本概念 binlog是一个二进制格式的文件&#xff0c;用于记录用户对数据库更新的SQL语句信息&#xff0c;例如更改数据库表和更改内容的SQL语句都会记录到binlog里&#xff0c;但是不会记录SELECT和SHOW这类操作。 1.1 特点 binlog在MySQL的Server层实现(引擎共用)binlo…