SpringMVC学习记录(三)之响应数据

SpringMVC学习记录(三)之响应数据

  • 一、页面跳转控制
    • 1、快速返回模板视图
    • 2、转发和重定向
  • 二、返回JSON数据
    • 1、前置准备
    • 2、@ResponseBody
  • 三、返回静态资源
    • 1、静态资源概念
    • 2、访问静态资源

/*** TODO: 一个controller的方法是控制层的一个处理器,我们称为handler* TODO: handler需要使用@RequestMapping/@GetMapping系列,声明路径,在HandlerMapping中注册,供DS查找!* TODO: handler作用总结:*       1.接收请求参数(param,json,pathVariable,共享域等) *       2.调用业务逻辑 *       3.响应前端数据(页面(不讲解模版页面跳转),json,转发和重定向等)* TODO: handler如何处理呢*       1.接收参数: handler(形参列表: 主要的作用就是用来接收参数)*       2.调用业务: { 方法体  可以向后调用业务方法 service.xx() }*       3.响应数据: return 返回结果,可以快速响应前端数据*/
@GetMapping
public Object handler(简化请求参数接收){调用业务方法返回的结果 (页面跳转,返回数据(json))return 简化响应前端数据;
}

请求数据接收,是通过handler的形参列表接收的。前端数据响应,是通过handler的return关键字快速处理!

springmvc简化了参数接收和响应!

一、页面跳转控制

1、快速返回模板视图

  1. 准备jsp页面和依赖
<!-- jsp需要依赖! jstl-->
<dependency><groupId>jakarta.servlet.jsp.jstl</groupId><artifactId>jakarta.servlet.jsp.jstl-api</artifactId><version>3.0.0</version>
</dependency>
  1. jsp页面创建
    建议位置:/WEB-INF/下,避免外部直接访问!
    位置:/WEB-INF/views/home.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>Title</title></head><body><!-- 可以获取共享域的数据,动态展示! jsp== 后台vue -->${msg}</body>
</html>
  1. 配置jsp视图解析器
@EnableWebMvc  //json数据处理,必须使用此注解,因为他会加入json处理器
@Configuration
@ComponentScan(basePackages = "com.atguigu.controller") //TODO: 进行controller扫描//WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法! 前期可以实现
public class SpringMvcConfig implements WebMvcConfigurer {//配置jsp对应的视图解析器@Overridepublic void configureViewResolvers(ViewResolverRegistry registry) {//快速配置jsp模板语言对应的registry.jsp("/WEB-INF/views/",".jsp");}
}
  1. handler返回视图

跳转到提交文件页面 /save/jump

/***  跳转到提交文件页面  /save/jump*  *  如果要返回jsp页面!*     1.方法返回值改成字符串类型*     2.返回逻辑视图名即可    *         <property name="prefix" value="/WEB-INF/views/"/>*            + 逻辑视图名 +*         <property name="suffix" value=".jsp"/>*/
@GetMapping("jump")
public String jumpJsp(Model model){System.out.println("FileController.jumpJsp");model.addAttribute("msg","request data!!");  //将数据保存到数据共享作用域中return "home";
}

2、转发和重定向

在 Spring MVC 中,Handler 方法返回值来实现快速转发,可以使用 redirect 或者 forward 关键字来实现重定向。

@RequestMapping("/redirect-demo")
public String redirectDemo() {// 重定向到 /demo 路径 return "redirect:/demo";
}@RequestMapping("/forward-demo")
public String forwardDemo() {// 转发到 /demo 路径return "forward:/demo";
}//注意: 转发和重定向到项目下资源路径都是相同,都不需要添加项目根路径!填写项目下路径即可!

总结:

  • 将方法的返回值,设置String类型
  • 转发使用forward关键字,重定向使用redirect关键字
  • 关键字: /路径
  • 注意:如果是项目下的资源,转发和重定向都一样都是项目下路径!都不需要添加项目根路径!

二、返回JSON数据

1、前置准备

导入jackson依赖

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.15.0</version>
</dependency>

添加json数据转化器 @EnableWebMvc

//TODO: SpringMVC对应组件的配置类 [声明SpringMVC需要的组件信息]//TODO: 导入handlerMapping和handlerAdapter的三种方式//1.自动导入handlerMapping和handlerAdapter [推荐]//2.可以不添加,springmvc会检查是否配置handlerMapping和handlerAdapter,没有配置默认加载//3.使用@Bean方式配置handlerMapper和handlerAdapter
@EnableWebMvc  //json数据处理,必须使用此注解,因为他会加入json处理器
@Configuration
@ComponentScan(basePackages = "com.atguigu.controller") //TODO: 进行controller扫描//WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法! 前期可以实现
public class SpringMvcConfig implements WebMvcConfigurer {}

2、@ResponseBody

可以在方法上使用 @ResponseBody注解,用于将方法返回的对象序列化为 JSON 或 XML 格式的数据,并发送给客户端。在前后端分离的项目中使用!
(注意区分@ResponseBody@RequestBody

@GetMapping("/accounts/{id}")
@ResponseBody
public Object handle() {// ...return obj;
}

具体来说,@ResponseBody 注解可以用来标识方法或者方法返回值,表示方法的返回值是要直接返回给客户端的数据,而不是由视图解析器来解析并渲染生成响应体(viewResolver没用)。

@RequestMapping(value = "/user/detail", method = RequestMethod.POST)
@ResponseBody
public User getUser(@RequestBody User userParam) {System.out.println("userParam = " + userParam);User user = new User();user.setAge(18);user.setName("John");//返回的对象,会使用jackson的序列化工具,转成json返回给前端!return user;
}

如果类中每个方法上都标记了 @ResponseBody 注解,那么这些注解就可以提取到类上。

@ResponseBody  //responseBody可以添加到类上,代表默认类中的所有方法都生效!
@Controller
@RequestMapping("param")
public class ParamController {
}

类上的 @ResponseBody 注解可以和 @Controller 注解合并为 @RestController 注解。

//@ResponseBody  
//@Controller
@RestController //  @ResponseBody @Controller 合二为一
@RequestMapping("param")
public class ParamController {
}

三、返回静态资源

1、静态资源概念

资源本身已经是可以直接拿到浏览器上使用的程度了,不需要在服务器端做任何运算、处理。典型的静态资源包括:

  • 纯HTML文件
  • 图片
  • CSS文件
  • JavaScript文件
  • ……

web应用加入静态资源
在这里插入图片描述

2、访问静态资源

在这里插入图片描述

  • 问题分析

    • DispatcherServlet 的 url-pattern 配置的是“/”
    • url-pattern 配置“/”表示整个 Web 应用范围内所有请求都由 SpringMVC 来处理
    • 对 SpringMVC 来说,必须有对应的 @RequestMapping 才能找到处理请求的方法
    • 现在 images/mi.jpg 请求没有对应的 @RequestMapping 所以返回 404
  • 问题解决

    • 在 SpringMVC 配置配置类:
@EnableWebMvc  //json数据处理,必须使用此注解,因为他会加入json处理器
@Configuration
@ComponentScan(basePackages = "com.atguigu.controller") //TODO: 进行controller扫描
//WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法! 前期可以实现
public class SpringMvcConfig implements WebMvcConfigurer {//配置jsp对应的视图解析器@Overridepublic void configureViewResolvers(ViewResolverRegistry registry) {//快速配置jsp模板语言对应的registry.jsp("/WEB-INF/views/",".jsp");}//开启静态资源处理 <mvc:default-servlet-handler/>@Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();}
}

现在,我们的静态图片就可以正常访问了。

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

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

相关文章

药品进销存表格制作 佳易王药店药品入库出库台账库存管理系统操作教程

一、概述 【软件试用版资源文件下载可以点文章最后官网卡片】 药品进销存表格制作 药店药品入库出库台账库存管理系统操作教程 ‌核心功能全面‌&#xff1a;涵盖药品进货、销售、库存管理&#xff0c;以及数据分析与报表生成。 ‌药品进货管理‌&#xff1a;记录供应商信息和…

网页版五子棋——用户模块(服务器开发)

前一篇文章&#xff1a;网页版五子棋—— WebSocket 协议-CSDN博客 目录 前言 一、编写数据库代码 1.数据库设计 2.配置 MyBatis 3.创建实体类 4.创建 UserMapper 二、前后端交互接口 1.登录接口 2.注册接口 3.获取用户信息 三、服务器开发 1.代码编写 2.测试后端…

A day a tweet(seventeen)——Visualize Convolution Neural Network!

a.形象化地CNNs visually explained! . .CNN(Convolution Neural Network) 卷积神经网络 a.不可思议的,难以置信的 v.使形象化CNN explainer is an incredible interactive tool to visualize the internal workings of a CNN. n.解释器;讲解员 …

将vscode的终端改为cygwin terminal

现在终端是默认的power shell&#xff0c;没有显示cygwin 接下来选择默认配置文件 找到cygwin的选项即可 然后提示可能不安全什么的&#xff0c;点是&#xff0c;就有了

大语言模型训练的全过程:预训练、微调、RLHF

一、 大语言模型的训练过程 预训练阶段&#xff1a;PT&#xff08;Pre training&#xff09;。使用公开数据经过预训练得到预训练模型&#xff0c;预训练模型具备语言的初步理解&#xff1b;训练周期比较长&#xff1b;微调阶段1&#xff1a;SFT&#xff08;指令微调/有监督微调…

《AI在企业战略中的关键地位:以微软和阿里为例》

内容概要 在当今商业环境中&#xff0c;人工智能&#xff08;AI&#xff09;的影响力如滔滔洪水&#xff0c;愈演愈烈。文章将揭示AI在企业战略中的崛起&#xff0c;尤其以微软和阿里巴巴为代表的企业&#xff0c;这两家科技巨头通过不同方式&#xff0c;将智能技术融入其核心…

aspose如何获取PPT放映页“切换”的“持续时间”值

文章目录 项目场景问题描述问题1&#xff1a;从官方文档和资料查阅发现并没有对切换的持续时间进行处理的方法问题2&#xff1a;aspose的依赖包中&#xff0c;所有的关键对象都进行了混淆处理 解决方案1、找到ppt切换的持续时间对应的混淆对象中的字段2、获取ppt切换的持续时间…

Linux挖矿病毒(kswapd0进程使cpu爆满)

一、摘要 事情起因:有台测试服务器很久没用了&#xff0c;突然监控到CPU飙到了95以上&#xff0c;并且阿里云服务器厂商还发送了通知消息&#xff0c;【阿里云】尊敬的xxh: 经检测您的阿里云服务&#xff08;ECS实例&#xff09;i-xxx存在挖矿活动。因此很明确服务器中挖矿病毒…

线性代数:Matrix2x2和Matrix3x3

今天整理自己的框架代码&#xff0c;将Matrix2x2和Matrix3x3给扩展了一下&#xff0c;发现网上unity数学计算相关挺少的&#xff0c;所以记录一下。 首先扩展Matrix2x2&#xff1a; using System.Collections; using System.Collections.Generic; using Unity.Mathemati…

CLIP论文CLIP 改进工作串讲

文章目录 CLIPViLTCLIP 改进工作串讲Lseg&#xff08;Language -driven semantic segmentation)Group ViT&#xff08;Semantic Segmentation Emerges from Text Supervision&#xff09;ViLDGLIP_V1/V2&#xff08;Ground Language-Image Pre-train&#xff09;CLIP PassoCLIP…

C++builder中的人工智能(9)如何在C++中创建AI二进制/Heaviside步进函数

什么是二进制步进函数&#xff1f;我们应该使用二进制步进函数还是Heaviside步进函数&#xff1f;二进制步进函数和Heaviside步进函数是同一回事吗&#xff1f;什么是单位步进函数&#xff1f;通过学习如何在C中创建AI二进制/Heaviside步进函数&#xff0c;它将帮助你使用C IDE…

数据结构-数组(稀疏矩阵转置)和广义表

目录 1、数组定义 1&#xff09;数组存储地址计算示例①行优先②列优先 2&#xff09;稀疏矩阵的转置三元组顺序表结构定义 ①普通矩阵转置②三元组顺序表转置稀疏矩阵③稀疏矩阵的快速转置 3&#xff09;十字链表结构定义 2、广义表定义 1&#xff09;基本操作①GetHead②GetT…

云集电商:如何通过 OceanBase 实现降本 87.5%|OceanBase案例

云集电商&#xff0c;一家聚焦于社交电商的电商公司&#xff0c;专注于‘精选’理念&#xff0c;致力于为会员提供超高性价比的全品类精选商品&#xff0c;以“批发价”让亿万消费者买到质量可靠的商品。面对近年来外部环境的变化&#xff0c;公司对成本控制提出了更高要求&…

【React.js】AntDesignPro左侧菜单栏栏目名称不显示的解决方案

作者&#xff1a;CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境&#xff1a;WebStorm 目录 问题概述 原因 解决方案 解决方法 潜在问题修改 最终效果呈现 额外内容 管理员界面路由配置 WebStorm背景更换 法一&#xff1a; 法二&#xff1a; 问题概…

一文透彻了解电容

文章目录 一、电容的作用二、电容的选择三、电容的分类四、多层陶瓷电容五、钽电容替代电解电容的误区六、旁路电容的应用问题七、电容的等效串联电阻 ESR八、电解电容的电参数九、电容器参数的基本公式十、电源输入端的 X,Y 安全电容 一、电容的作用 作为无源元件之一的电容&…

Python OpenCV 傅里叶变换

傅里叶变换 傅里叶变换比较难和不容易理解&#xff0c;有错的地方请见谅 傅里叶原理表明&#xff1a;任何连续测量的时序或信号&#xff0c;都可以表示为不同频率的正弦波信号的无限叠加。也就是说&#xff0c;傅里叶变换是一种特殊的积分变换&#xff0c;它能将满足一定条件的…

如何调整pdf的页面尺寸

用福昕阅读器打开pdf&#xff0c;进入打印页面&#xff0c;选择“属性”&#xff0c;在弹出的页面选择“高级” 选择你想调成的纸张尺寸&#xff0c;然后打印&#xff0c;打印出来的pdf就是调整尺寸后的pdf

WPF中如何简单的使用CommunityToolkit.Mvvm创建一个项目并进行 增删改查

目录 开始前准备的数据库dbblog如下&#xff1a; 第一步&#xff1a;创建项目后下载四个NuGet程序包 第二步&#xff1a;删除原本的MainWindow.XAML文件 并创建如下的目录结构 然后在View文件夹下面创建Login.XAML和Main.XAML 并且在App.XAML中将启动项改为Login.X…

基于python多准则决策分析的汽车推荐算法设计与实现

摘要 随着汽车市场的快速发展和消费者需求的多样化&#xff0c;汽车选择变得愈加复杂。为了帮助消费者在众多汽车选项中做出明智的决策&#xff0c;基于多准则决策分析&#xff08;MCDA&#xff09;的汽车推荐算法应运而生。本研究旨在设计和实现一种基于 Python 的汽车推荐系…

xftp连接中不成功 + sudo vim 修改sshd_config不成功的解决方法

我们使用sudo vim不成功&#xff0c;但是我们使用sudo su就可以 了&#xff01; root用户权利更大&#xff01; 喵的&#xff0c;终于成功了&#xff0c;一个xftp连接半天不成功。&#xff08;添加上面的内容就可以连接成功了↑&#xff09;