当前位置: 首页 > news >正文

Spring-MVC响应

在 SpringMVC 开发中,控制器 (Controller) 处理完请求后需要向客户端返回响应结果,常见的响应方式有多种。本文基于实际代码案例,总结 SpringMVC 中常用的响应处理方式

一、通过 ModelAndView 响应

ModelAndView 是 SpringMVC 提供的一个模型视图对象,既能携带数据,又能指定视图名称。

@RequestMapping("/save")
public ModelAndView save(){// 创建ModelAndView对象ModelAndView mv = new ModelAndView();// 添加数据到模型(相当于request.setAttribute())mv.addObject("msg","save success");// 设置视图名称(会根据视图解析器规则查找对应的视图)mv.setViewName("suc");return mv;
}

特点:

  • 可以同时携带数据和视图信息
  • 适用于需要返回页面并展示数据的场景
  • 数据会被存放到 request 域中

二、通过 Servlet API 响应

SpringMVC 支持直接使用 HttpServletRequest 和 HttpServletResponse 对象进行响应处理,这是对 Servlet 原生方式的兼容。

1. 直接输出响应内容

@RequestMapping("test1")
public void test1(HttpServletRequest request, HttpServletResponse response) throws IOException {// 设置响应内容类型和编码response.setContentType("text/json;charset=utf-8");// 直接输出JSON字符串String json = "{\"id\":\"1\"}";response.getWriter().write(json);
}

2. 请求转发

@RequestMapping("test2")
public void test2(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {// 向request域中添加数据request.setAttribute("password","123123");// 转发到其他请求request.getRequestDispatcher("/dept/test3").forward(request,response);// 也可以转发到静态资源// request.getRequestDispatcher("/html/suc.html").forward(request,response);
}

3. 重定向

@RequestMapping("/test4")
public void test4(HttpServletRequest request, HttpServletResponse response) throws IOException {// 重定向到其他请求response.sendRedirect("/MVC/dept/test5");// 也可以重定向到静态资源// response.sendRedirect("/MVC/html/suc.html");
}

特点:

  • 完全兼容 Servlet 原生 API
  • 适合熟悉 Servlet 开发的开发者
  • 请求转发和重定向需要手动处理路径问题

三、通过返回字符串实现转发和重定向

SpringMVC 提供了更简洁的方式实现请求转发和重定向,通过返回特定格式的字符串即可。

1. 直接返回视图路径

@RequestMapping("/test6")
public String test6(){// 直接返回视图路径,默认是请求转发return "/html/suc.html";
}

2. 显式请求转发

@RequestMapping("/test7")
public String test7(){// 使用forward:前缀表示请求转发return "forward:/html/suc.html";
}

3. 显式重定向

@RequestMapping("/test8")
public String test8(){// 使用redirect:前缀表示重定向return "redirect:/html/suc.html";
}

特点:

  • 代码更简洁,无需直接操作 Servlet API
  • 通过特定前缀 (forward:/redirect:) 明确指定跳转方式
  • 路径处理更方便,无需手动拼接上下文路径

四、返回 JSON 数据

在前后端分离架构中,后端通常需要返回 JSON 格式的数据,SpringMVC 提供了 @ResponseBody 注解实现这一功能。

1. 手动返回 JSON 字符串

@RequestMapping("/test9")
@ResponseBody  // 表示返回的字符串是响应体内容,而非视图名称
public String test9(){String json = "{\"id\":1,\"name\":\"test1\"}";return json;
}

2. 自动转换对象为 JSON

@RequestMapping("/test10")
@ResponseBody   // 需要引入jackson相关依赖
public User test10(){User user = new User();user.setName("test10");user.setPassword("123456");// SpringMVC会自动将对象转换为JSON格式return user;
}

所需依赖(pom.xml 中配置):

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

特点:

  • @ResponseBody 注解用于标识方法返回值作为响应体
  • 结合 Jackson 依赖可实现 Java 对象到 JSON 的自动转换
  • 适用于 Ajax 请求和前后端分离场景

    总结

    SpringMVC 提供了多种灵活的响应方式,可根据实际业务场景选择:

  • ModelAndView:适合需要返回视图并携带数据的场景
  • Servlet API:适合需要直接操作请求响应对象的场景
  • 字符串返回值:简洁实现页面跳转(转发 / 重定向)
  • @ResponseBody:适合返回 JSON 数据,满足前后端分离需求
http://www.dtcms.com/a/398630.html

相关文章:

  • 正确看待和使用TDD测试驱动开发
  • 红外热成像与数字图像相关(DIC)技术耦合在金属热变形分析中的应用
  • 做拍卖网站有哪些教做宝宝辅食的网站
  • 第一章:Go语言的起源-云原生时代的C位语言​​
  • Auto_CVE - 自动化漏洞挖掘系统
  • python+springboot+vue的旅游门票信息系统web
  • 上网行为安全(3)
  • 晨控CK-FR08-E00与三菱QJ71E71-100模块配置MODBUSTCP通讯连接手册
  • 免费网站建站平台网络服务器配置与管理学习报告
  • 利用 Odoo 18 安全交付周期优化交付计划
  • 受欢迎的企业网站建设做网页要钱吗
  • 软考系统架构设计师知识点-系统架构设计
  • 可以用tomcat.做网站吗张家界简单的网站建设
  • 中国古建筑网站网站访问量大
  • OC-初识NSArray的底层逻辑
  • AI技术:变革未来社会的关键驱动力,第878章
  • Kubernetes 证书监控--x509-certificate-exporter
  • MMD动画(六)Ray渲染--打光
  • 检察院网站建设方案erp系统是什么系统
  • a做爰网站o2o
  • 非关系型数据库-Redis
  • 从不确定性到确定性,“动态安全+AI”成网络安全破题密码
  • python+django/flask二手物品交易系统 二手商品发布 分类浏览 在线沟通与订单管理系统java+nodejs
  • 找事做的网站网站开发需要什么步骤
  • Go 语言切片和 Map 操作常用库指南
  • 旧项目适配Android15
  • DIC技术在极端条件下的应用及解决方案
  • nginx限制国外ip访问
  • OpenLayers地图交互 -- 章节十:拖拽平移交互详解
  • 北京壹零零壹网站建设网页设计教程视屏