【JavaEE进阶】——Spring Web MVC (响应)

目录

🚩学习Spring MVC

🎈返回静态网页

🎈返回数据@ResponseBody

🎈返回html代码片段

🎈返回JSON

🎈设置状态码

 🎈设置Header


🚩学习Spring MVC

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

⽐如⽤⼾去银⾏存款
  • 1. 建⽴连接: 去柜台
  • 2. 请求: 带着银⾏卡, ⾝份证去存款
  • 3. 响应: 银⾏返回⼀张存折.
对于 Spring MVC 来说,掌握了以上 3 个功能就相当于掌握了 Spring MVC

上一章我们学了用spring mvc进行从客户端发出的请求中获取参数的功能。

  • 1.传递数组  同一个请求参数有多个时,会自动封装成数组
  • 2.传递集合  @RequestParam
  • 3.传递JSON  @RequestBody  (最重要,将json语句转成对象)
  • 4.上传文件  @RequestPart 
  • 5.Cookie & Session & Header 

   <1>结合传统的获取方式

   <2>简洁获取方式(注解获取) 

          @CookieValue

          @SessionAttribute

          @RequestHeader

cookie和Session的区别,两者都是会话机制,会话就相当于对话,cookie是客户端机制,session是服务器机制,它们之间是由sessionId作为桥梁进行关联的。在Cookie中保存Session ID,然后服务器根据这个ID来管理和存取Session数据,从而平衡安全性和性能。


这一章通过学习spring MVC如何返回响应给客户端。


🎈返回静态网页

创建前端页面index.html,注意路径,路径是在src/main/resources/static路径下。

html前端代码:

后端代码:

@RequestMapping("/return2")
@Controller
public class ReturnController2 {@RequestMapping("/index")public String returnIndex(){return "/index.html";}
}

返回的是index.html的视图

我们如何返回index.html中的数据呢?

我们就需要用到注解@RestController。

@RestController包含了@Controller和@ResponseBody,如果我们想返回视图就加上@Controller,如果我们想返回视图我们需要在@Controller的基础上加上@ResponseBody注解,因为@RestController是包含了@Controller和@ResponseBody注解,只有@RestController才能返回数据信息

单有@ResponseBody返回数据是不行的,我们需要@Controller告诉spring帮我们管理这个,后续我们要访问这段代码的时候,才能访问到。@Controller是类注解,能让spring管理着这个类,需要访问的时候,我们就可以访问。

综上所述:返回数据【@Controller+@ResponseBody】或者【@RestController】

                  返回视图   @Controller                                                                           

  • @Controller : 定义⼀个控制器, Spring 框架启动时加载, 把这个对象交给Spring管理.
  • @ResponseBody : 定义返回的数据格式为⾮视图, 返回⼀个 text/html 信息
   @Target

@Target ({ElementType.TYPE})表示类类型(修饰的是对象)

@Retention(RetentionPolicy.RUNTIME)表示生命周期

@RestController

@Controller+@ResponseBody


🎈返回数据@ResponseBody

@ResponseBody可以修饰类也可以修饰方法。

  • 修饰类的时候,表示这个类下的所有方法,返回的均为数据

如果一个类中的所有方法返回的都是数据,我们就把这个注解加在类上。

  • 修饰方法时,表示该方法返回的是数据


🎈返回html代码片段

   @ResponseBody@RequestMapping("/returnHtml")public String returnHtml(){return "<h1>返回HTML代码片段<h1>";}


🎈返回JSON

  • 当我们接口返回的是String时,content-Type是text/html
  @ResponseBody@RequestMapping("/returnDate")public String returnIndex2(){return "查看视图需要的数据";}


  • 当我们的接口返回的是对象时,content-Type自动设置成application/json
    //返回JSON@ResponseBody@RequestMapping("/returnJson1")public Person returnJson(){Person person=new Person();person.setAge(20);person.setName("张老师");person.setId(1);return person;}


   @ResponseBody@RequestMapping("/returnJson2")public Map<Integer,String> returnJson2(){Map<Integer,String>map=new HashMap<>();map.put(1,"张三");map.put(2,"李四");map.put(3,"王五");return map;}


🎈设置状态码

  @ResponseBody@RequestMapping("/setStatus")public String setStatus(HttpServletResponse response){response.setStatus(401);return "设置状态码";}


 🎈设置Header

 @ResponseBody@RequestMapping(value = "/setHeader",produces = "application/json;charset=utf-8")public String setHeader(HttpServletResponse response){return "{\"ok\",1}";}

 


不生气,不吃醋,就开开心心的就好了。

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

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

相关文章

剪画小程序:自媒体创作的第一步:如何将视频中的文案提取出来?

自媒体创作第一步&#xff0c;文案提取无疑是至关重要的一环。 做自媒体之所以要进行文案提取&#xff0c;有以下重要原因&#xff1a; 首先&#xff0c;提高效率。通过文案提取&#xff0c;可以快速获取关键信息&#xff0c;避免在无关紧要的内容上浪费时间&#xff0c;从而…

Flutter 中的 YearPicker 小部件:全面指南

Flutter 中的 YearPicker 小部件&#xff1a;全面指南 在 Flutter 应用开发中&#xff0c;为用户提供日期和时间选择功能是常见的需求。YearPicker 是一个允许用户选择年份的小部件&#xff0c;它通常用于实现日期选择器或表单中年份字段的输入。虽然 Flutter 的标准库中没有直…

YOLOV10阅读总结

GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection YOLOv10 - Ultralytics YOLO Docs https://arxiv.org/pdf/2405.14458 论文地址 最近yolo又出了个yolov10了&#xff0c;不得不感慨CV是真卷&#xff0c;毕竟yolov9也才没多久。记录一下阅读笔记。…

第一站挺进巴中,茅仙酒带来“1+1”模式新玩法

执笔 | 尼 奥 编辑 | 扬 灵 今年春糖期间&#xff0c;以“盛世华章何以鉴 酱酒经典品茅仙”为主题的茅仙酒新品发布会给白酒行业留下深刻印象。这瓶传承历史、恪守匠心、创美奋进的佳酿在“茅台家族、集团出品”的品牌加持下&#xff0c;开启了全国化征程的新步伐。 近日&…

突破空间限制,这些远程控制软件为父母送上“手把手”的教导,解决异地办公难题,出差无忧

在现代社会&#xff0c;科技的飞速发展带来了诸多便利&#xff0c;但同时也给一些年长的父母们带来了困扰。 当父母们面对智能手机电脑等高科技产品时&#xff0c;他们往往感到无所适从&#xff0c;而子女们忙于工作、学习或其他原因&#xff0c;常常无法时刻陪伴在父母身边&a…

Qt6 QSslSocket 客户端设计踩坑

QSslSocket 默认自动搜索代理设置&#xff0c;当系统中存在代理时&#xff0c;执行 connectToHostEncrypted 会导致 socket error: UnsupportedSocketOperationError&#xff0c;具体错误是 connect error is "The proxy type is invalid for this operation"&#…

门限签名技术

私钥永远不存在 (t, n) 门限签名方案 (TSS) 是一种密码协议&#xff0c;允许一组 n 个参与者共同签署文档或交易&#xff0c;其中 t 1 个或更多参与者的任何子集都可以产生有效签名&#xff0c;但 t 的子集 或更少的人不能。 该方案旨在通过确保没有任何一方可以单方面生成签名…

QCC30XX如何查找本地地址码

查找本地地址段/********************************************************************** Copyright (c) 2016 - 2017 Qualcomm Technologies International, Ltd. FILE NAME sink_private_data.c DESCRIPTION This module works as a container for all private and common…

企业内部聊天软件Riot部署

ubuntu docker 简介 Riot(原Vector)是使用Matrix React SDK构建的Matrix网络聊天客户端,开源免费,功能丰富,支持私人对话,团队对话,语言视频对话,上传文件,社区互动。支持在聊天界面添加各种有趣的插件,比如RSS等各种机器人、虚拟币实时监控等。并且所有通过Riot传…

注意力机制篇 | YOLOv8改进之引入用于目标检测的混合局部通道注意力MLCA

前言:Hello大家好,我是小哥谈。注意力机制是可以帮助神经网络突出重要元素,抑制无关元素。然而,绝大多数通道注意力机制只包含通道特征信息,忽略了空间特征信息,导致模型表示效果或目标检测性能较差,且空间注意模块往往较为复杂。为了在性能和复杂性之间取得平衡,本文提…

2024年刚刚翻新前端vue面试题

1、vue中常用的指令及作用? v-text指令:用于更新标签包含的文本,它的作用跟双大括号效果是一样的v-html指令:绑定一些包含html代码的数据在视图上v-show指令:指令的取值为true/false,分别对应着显示/隐藏,改变的是元素css样式的display属性v-if指令:取值为true/false,…

【自动化运营】PlugLink 1.0开源版发布

什么是PlugLink&#xff1f; PlugLink&#xff0c;顾名思义&#xff0c;就是插件的链接。它旨在帮助个人和小微企业实现运营自动化&#xff0c;通过链接脚本、API、AI大模型等&#xff0c;实现全自动工作流程。你可以把PlugLink看作一个巨大的拼装积木&#xff0c;每一个插件都…

3.每日LeetCode-数组类,爬楼梯(Go,Java,Python)

目录 题目 解法 Go Java Python 代码地址&#xff1a;leetcode: 每日leetcode刷题 题目 题号70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff…

【数据结构和算法】-动态规划爬楼梯

动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是运筹学的一个分支&#xff0c;主要用于解决包含重叠子问题和最优子结构性质的问题。它的核心思想是将一个复杂的问题分解为若干个子问题&#xff0c;并保存子问题的解&#xff0c;以便在需要时直接利用&am…

【稳定检索】2024年核能科学与材料、物理应用国际会议(NESMPA 2024)

2024年核能科学与材料、物理应用国际会议 2024 International Conference on Nuclear Energy Science and Materials, Physical Applications 【1】会议简介 2024年核能科学与材料、物理应用国际会议即将拉开帷幕&#xff0c;这是一场汇聚全球核能科学、材料研究及物理应用领域…

软RAID部署

目录 资源列表 基础环境 关闭防火墙 关闭内核安全机制 一、安装mdadm工具 二、磁盘分区 三、创建RAID 本文记录了软RAID的部署流程&#xff0c;希望能够帮到大家。 资源列表 操作系统配置主机名IP备注CentOS7.3.16112C4Gnode1192.168.207.131需要添加2块磁盘 基础环境…

文件上传漏洞简介

目录 漏洞原理 漏洞危害 利用场景 检测方法 防御方法 绕过手段 前端JS绕过 构造可解析后缀 修改Content-Type&#xff08;MIME&#xff09; 大小写绕过 文件头绕过 图片马 截断与特殊文件名 其他绕过 尝试绕过的步骤 漏洞原理 原理 攻击者构造恶意文件进行上传…

Springboot 开发 -- Redis 集成及配置

一、引言 Redis 是一个开源的&#xff0c;内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中介。在现今的高并发、大数据量的互联网应用中&#xff0c;Redis 的作用愈发重要。Spring Boot 提供了对 Redis 的集成支持&#xff0c;使得开发者可以更加便捷地在…

低调收藏,这份MobaXterm使用指南很全面

中午好&#xff0c;我的网工朋友。 MobaXterm&#xff0c;这个名字对于我们这些经常需要在Windows环境下与Linux服务器打交道的人来说&#xff0c;应该并不陌生。它不仅仅是一个SSH客户端&#xff0c;更是一个功能强大的终端工具箱&#xff0c;集成了X服务器和Unix命令集&…

hivesql如何在数据量超大时避免join操作

hivesql如何在数据量超大时避免join操作 当在hive中对超大的表进行查询时&#xff0c;在这种情况下不能进行mapjoin&#xff0c;也选择不进行skewjoin或是smbjoin 。此时&#xff0c;针对特定的应用场景&#xff0c;可以设计特殊的sql避免join操作。下面给出一个典型案例&…