SpringMVC之处理响应

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
SpringMVC之处理响应


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、配置视图解析器
  • 二、处理响应
    • 返回值为void
    • 返回值为void
    • 返回值为ModelAndView
    • request域设置数据
      • 使用原生的HttpServletRequest
      • 使用Model、ModelMap
      • 使用Map集合
    • session域设置数据
    • context域设置数据
    • 请求转发、重定向
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:
在 SpringMVC 框架中,处理响应是 Web 应用程序开发中至关重要的一环。它决定了客户端将收到什么样的信息,无论是成功的结果、错误提示还是其他类型的响应。在这篇博客中,我们将深入探讨 SpringMVC 中处理响应的各种方式。
无论你是 SpringMVC 的新手还是有经验的开发者,这篇博客都将为你提供有用的信息和实际的示例,帮助你更好地理解和应用 SpringMVC 中响应处理的相关知识。让我们开始探索 SpringMVC 的响应世界吧!


提示:以下是本篇文章正文内容,下面案例可供参考

一、配置视图解析器

在 SpringMVC 中,配置视图解析器是为了将控制器处理后的结果与相应的视图进行关联,以便渲染并展示给用户。
视图解析器的主要作用是根据请求的信息和控制器返回的逻辑视图名称,确定实际要渲染的视图资源。它解析逻辑视图名称,并将其转换为实际的视图文件路径或 URL。
通过配置视图解析器,SpringMVC 可以根据不同的请求和逻辑视图名称,选择合适的视图来呈现响应内容。这样可以实现页面的动态渲染,根据用户请求和业务逻辑展示相应的页面或数据。
InternalResourceViewResolver是SpringMVC的默认视图解析器,用来解析JSP视图。在springmvc.xml核心配置文件中添加以下内容

<!-- 视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 视图前缀 --><property name="prefix" value="/" /><!-- 视图后缀 --><property name="suffix" value=".jsp" />
</bean>

二、处理响应

返回值为void

此时会跳转到名字是 前缀+方法路径名+后缀 的jsp页面
例如:

// 路径是helloMVC,方法执行完后会跳转到/helloMVC.jsp
@RequestMapping("/helloMVC")
public void helloMVC(){System.out.println("hello SpringMVC!");
}

路径是helloMVC,方法执行完后会跳转到/helloMVC.jsp

返回值为void

此时会跳转到名字是 前缀+返回值+后缀 的jsp页面
例如:

// 返回值为String
@RequestMapping("/c2/hello1")
public String helloMVC1(){System.out.println("hello SpringMVC!");// 方法执行完后会跳转到/helloMVC.jspreturn "hello";
}

路径是helloMVC,方法执行完后会跳转到/hello.jsp

返回值为ModelAndView

这是SpringMVC提供的对象,该对象可以向request域设置数据并指定跳转的页面。该对象中包含Model对象和View对象。其中,Model对象用于向request域中设置数据。View对象用于指定跳转的页面,例如,如果View里面储存的是index,则跳转的路径为/index.jsp

// 返回值为ModelAndView
@RequestMapping("/c2/hello2")
public ModelAndView useMAV(){System.out.println("返回值类型为ModelAndView");// 1.创建ModelAndView对象ModelAndView modelAndView = new ModelAndView();// 2.获取Model对象,本质是一个MapMap<String, Object> model = modelAndView.getModel();// 3.使用Model对象向request域设置数据model.put("name","百战程序员");// 4.使用View对象设置跳转的路径为/baizhan.jspmodelAndView.setViewName("index");return modelAndView;
}

方法执行完后会跳转到/index.jsp

request域设置数据

使用原生的HttpServletRequest

@RequestMapping("/c2/hello3")
public String setRequestModel(HttpServletRequest request){request.setAttribute("username","张三");return "index";
}

使用Model、ModelMap

SpringMVC提供了Model接口和ModelMap类,控制器方法添加这两个类型的参数,使用该参数设置数据,该数据就会存到request域中。

@RequestMapping("/c2/hello4")
public String setRequestModel2(Model model, ModelMap modelMap){// 使用Model将数据存入request域// model.addAttribute("username","张三");// 使用ModelMap将数据存入request域modelMap.addAttribute("username","张三");return "index";
}

使用Map集合

Model接口底层就是一个Map集合,我们可以给控制器方法设置Map类型的参数,向Map中添加键值对,数据也会存到request域中。

@RequestMapping("/c2/hello5")
public String setRequestModel3(Map map){map.put("username","张三");return "index";
}

session域设置数据

@RequestMapping("/c2/hello6")
public String setSeesionModel(HttpSession session){session.setAttribute("address","北京");return "index";
}

context域设置数据

context作用域表示在整个应用范围都有效。在SpringMVC中对context作用域传值,只能使用ServletContext对象来实现。但是该对象不能直接注入到方法参数中,需要通过HttpSession对象获取。

@RequestMapping("/c2/hello7")
public String setContextModel(HttpSession session){ServletContext servletContext = session.getServletContext();servletContext.setAttribute("age",10);return "index";
}

请求转发、重定向

SpringMVC还提供了一种简单的请求转发和重定向的写法:

@RequestMapping("/c2/hello10")
public String myForward3(HttpServletRequest request){request.setAttribute("name","张三");// 请求转发return "forward:/c2/hello9";// 重定向// return "redirect:/c2/hello9";
}

总结

提示:这里对文章进行总结:

通过学习这篇博客,你应该对 SpringMVC 处理响应的方法有了更深入的理解。希望这对你在开发 SpringMVC 应用程序时有所帮助。如果你有任何问题或需要进一步了解,请随时在评论中提问。

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

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

相关文章

基于Java+SpringBoot+vue+element疫情物资捐赠分配系统设计和实现

基于JavaSpringBootvueelement疫情物资捐赠分配系统设计和实现 &#x1f345; 作者主页 系统定制开发 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; 文章目录 基于JavaSpringBootvueelement疫情物资捐赠…

Blazor 混合开发_MAUI+Vue_WPF+Vue

MAUI&#xff0b;Vue 混合开发 背景混合开发的核心为什么必须使用 wwwroot 文件夹放置 Web 项目文件 创建 MAUI 项目创建 wwwroot 文件夹服务注册创建 _import.razor添加 Main.razor 组件修改 MainPage.xaml 文件 创建 WPF 项目创建 wwwroot 文件夹服务注册创建 _import.razor添…

【算法设计与分析】——动态规划算法

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

mybatisPlus 常见用法

文章目录 mybatisPlus 常见用法一、自动填充1.1 处理类1.2 自动填充抽象类 二、枚举1.1 注解方式1.2 实现接口方式 三、分页3.1 配置 config3.2 定义统一分页接口3.3 实现分页接口3.4 使用 四、读写分离4.1 方式一4.1.1 application.yml4.1.2 pom.xml 4.2 方式二4.2.1 applicat…

【ps】新手 学 PS一本通

第一章 添加图像边框 1. 导入一张图片 2.选择 图像-画布大小 例&#xff1a;原图&#xff1a;720x820 填写画布大小&#xff1a;820x920 可以增加一个100x100的边框。 画布扩展颜色是扩展的颜色。 标尺工具 视图>标尺 或者使用 CTRL R 网格工具 视图-显示-网格 …

Linus命令总结:

ps aux 查看当前运行的所有的进行 解压&#xff1a;unzip FileName.zip 压缩&#xff1a;zip FileName.zip DirName 各种压缩和解压缩命令https://blog.csdn.net/m0_61925586/article/details/127824778 开启一个名为test的终端&#xff1a; screen -S test ②查看所有的scr…

机器视觉系统选型-图像对比度

对于一个视觉系统来说&#xff0c;“黑白分明”的图像才是好图像。 选择适合的灯源&#xff0c; 使图像中待测特征反差最大化。

Pytorch项目,肺癌检测项目之一

项目目的&#xff1a;输入人体躯干的三维CT扫描作为输入数据&#xff0c;如果存在肿瘤&#xff0c;希望输出疑似恶性肿瘤的位置。 项目背景&#xff1a;发现处于早期的肺癌对病人生存率有巨大影响&#xff0c;但很难大规模进行。审查CT数据的工作必须由训练有素的专家进行&…

第22课 SQL入门之高级SQL特性

文章目录 22.1 约束22.1.1 主键22.1.2 外键22.1.3 唯一约束22.1.4 检查约束 22.2 索引22.3 触发器22.4 数据库安全 这一课介绍SQL所涉及的几个高级数据处理特性&#xff1a;约束、索引和触发器。 22.1 约束 SQL已经改进过多个版本&#xff0c;成为非常完善和强大的语言。许多强…

C# NPOI导出dataset----Excel绘制Chart图表

仅限XLSX 2007以后版本&#xff08;2007之前版本不支持&#xff09; 1、判断文件夹是否存在&#xff0c;不存在则创建 //Application.StartupPath当前项目根目录 if (!Directory.Exists(Application.StartupPath "\Excel")) { …

如何解决接口幂等的问题(防止优惠券有人重复刷)

文章目录 解决接口幂等性问题&#xff0c;可以采取以下措施&#xff1a;你怎么防止优惠券有人重复刷 解决接口幂等性问题需要综合考虑多个方面&#xff0c;包括接口设计、参数校验、状态码和返回值设计、乐观锁、分布式锁、数据库事务、缓存一致性、限流和熔断以及幂等性设计原…

点击筛选框动态增加 多条可输入Table列 以及通过操作数组改造数据

点击筛选框动态增加 多条可输入Table列 以及通过操作数组改造数据 <el-col :span"8" class"tab_group"><el-form-item label"动态筛选"><el-select v-model.trim"ruleForm.flowType" placeholder"请选择" …

实战:使用 OpenCV 和 PyTesseract 对文档进行 OCR

随着世界各地的组织都希望将其运营数字化&#xff0c;将物理文档转换为数字格式是非常常见的。这通常通过光学字符识别 (OCR) 完成&#xff0c;其中文本图像&#xff08;扫描的物理文档&#xff09;通过几种成熟的文本识别算法之一转换为机器文本。当在干净的背景下处理打印文本…

麒麟信安日志轮询分割操作说明

1、背景介绍 由于模块上面硬盘容量有限&#xff0c;需要定时清理系统日志。为了方便用户使用&#xff0c;在系统中设定自动日志轮询操作&#xff0c;让日志占用容量由操作系统自动管理&#xff0c;用户无需担心日志太多把硬盘容量占满。 2、操作说明 新建需要分割的日志logr…

【大数据HA】HAProxy实现thrift协议HMS服务的高可用-附Chatgpt协助截图

背景 之前安装了HMS(Hive metastore service)&#xff0c;独立于hive运行&#xff0c;安装部署过程见我下面列出的另一篇文章&#xff0c;需要为它建立HA高可用功能。防止在访问时出现单点故障问题。 【大数据】Docker部署HMS(Hive Metastore Service)并使用Trino访问Minio-C…

学校和老师如何制作自己免费的成绩查询系统

在当今数字化的时代&#xff0c;许多学校都采用信息技术来管理和提高工作效率。其中&#xff0c;成绩查询系统是一个非常实用的工具&#xff0c;它可以让老师和学生们快速、方便地查询成绩。那么&#xff0c;学校和老师如何制作自己免费的成绩查询系统呢&#xff1f;本文将为你…

RK3568开发板,开机后一直不断重启【Bug已解决-鸿蒙】

文章目录 项目场景:原因分析:解决方案:附解决参数详情概览:此Bug解决方案总结项目场景: 在进行鸿蒙应用开发时,自己遇到过这个问题,也看到了网上大佬的解决方案,现在在这篇文章里总结一下解决方案。 问题如下: 【问题描述】 RK3568开发板,开机后一直不断重启,这是啥…

微软官方镜像下载大全(windows iso 官方镜像)

原本只是想下一个Windows Server 2022中文版的镜像&#xff0c;后面发现要么就是慢得一批的某盘&#xff0c;要么就是磁力&#xff0c;我想直接下载简简单单&#xff0c;找了一圈没有找到。官网下载需要注册、登录乱七八糟&#xff0c;最终终于找到下载方法了&#xff0c;适用于…

关于新发现的ThirdEye基于Windows恶意软件窃取敏感数据动态情报

一、基本内容 近期&#xff0c;Fortinet FortiGuard Labs发现了一款名为ThirdEye的先前未记录的基于Windows的信息窃取程序。该恶意软件伪装成PDF文件&#xff0c;其俄语名称为“CMK Правила оформления больничных листов.pdf.exe”&#x…

c语言:输出一个正方形|练习题

一、题目 输入长度num&#xff0c;输出一个边长为num的正方形 二、思路分析 1、输出的正方形分为三部分&#xff0c;包括&#xff1a; 2、第一行、中间的num-2行&#xff0c;以及最后一行 三、代码图片【带注释】 四、源代码【带注释】 #include <stdio.h> //思路&#…