SpringMVC 方法三种类型返回值总结,你用过几种?

也可以像下面这样直接调用重定向的方法:

@RequestMapping(“/test1”)

@ResponseBody

public void test1(HttpServletResponse resp){

resp.sendRedirect(“/aa/index”);

}

当然,重定向无论你怎么写,都是 Servlet/Jsp 中的知识点,上面两种写法都相当于是重回远古时代。

2.3 服务端跳转


既然可以重定向,当然也可以服务端跳转,像下面这样:

@GetMapping(“/test5”)

public void test5(HttpServletRequest req,HttpServletResponse resp) {

req.getRequestDispatcher(“/WEB-INF/jsp/index.jsp”).forward(req,resp);

}

2.4 返回字符串


当然也可以利用 HttpServletResponse 返回其他字符串数据,包括但不局限于 JSON,像下面这样:

@RequestMapping(“/test2”)

@ResponseBody

public void test2(HttpServletResponse resp) throws IOException {

resp.setContentType(“application/json;charset=utf-8”);

PrintWriter out = resp.getWriter();

List books = new ArrayList<>();

Book b1 = new Book();

b1.setId(1);

b1.setName(“三国演义”);

b1.setAuthor(“罗贯中”);

books.add(b1);

Book b2 = new Book();

b2.setId(2);

b2.setName(“红楼梦”);

b2.setAuthor(“曹雪芹”);

books.add(b2);

String s = new Gson().toJson(books);

out.write(s);

out.flush();

out.close();

}

这是返回值为 void 时候的情况,方法返回值为 void ,不一定就真的不返回了,可能还有其他的方式给前端数据。

3. String

==========

当 SpringMVC 方法的返回值为 String 类型时,也有几种不同情况。

3.1 逻辑视图名


返回 String 最常见的是逻辑视图名,这种时候一般利用默认的参数 Model 来传递数据,像下面这样 :

@RequestMapping(“/hello”)

public String aaa(Model model) {

model.addAttribute(“username”, “张三”);

return “hello”;

}

此时返回的 hello 就是逻辑视图名,需要携带的数据放在 model 中。

3.2 重定向


也可以重定向,事实上,如果在 SpringMVC 中有重定向的需求,一般采用这种方式:

@RequestMapping(“/test4”)

public String test4() {

return “redirect:/aa/index”;

}

3.3 forward 转发


也可以 forward 转发,事实上,如果在 SpringMVC 中有 forward 转发的需求,一般采用这种方式:

@RequestMapping(“/test3”)

public String test3() {

return “forward:/WEB-INF/jsp/order.jsp”;

}

3.4 真的是 String


当然,也有一种情况,就是你真的想返回一个 String ,此时,只要在方法上加上 @ResponseBody 注解即可,或者 Controller 上本身添加的是组合注解 @RestController,像下面这样:

@RestController

public class HelloController {

@GetMapping(“/hello”)

public String hello() {

return “hello provider!”;

}

}

也可以像下面这样 :

@Controller

public class HelloController {

@GetMapping(“/hello”)

@ResponseBody

public String hello() {

return “hello provider!”;

}

}

这是返回值为 String 的几种情况。

JSON

====

返回 JSON 算是最最常见的了,现在前后端分离的趋势下,大部分后端只需要返回 JSON 即可,那么常见的 List 集合、Map,实体类等都可以返回,这些数据由 HttpMessageConverter 自动转为 JSON ,如果大家用了 Jackson 或者  Gson ,不需要额外配置就可以自动返回 JSON 了,因为框架帮我们提供了对应的 HttpMessageConverter ,如果大家使用了 Alibaba 的 Fastjson 的话,则需要自己手动提供一个相应的 HttpMessageConverter 的实例,方法的返回值像下面这样:

@GetMapping(“/user”)

@ResponseBody

public User getUser() {

User user = new User();

List favorites = new ArrayList<>();

favorites.add(“足球”);

favorites.add(“篮球”);

user.setFavorites(favorites);

user.setUsername(“zhagnsan”);

user.setPassword(“123”);

return user;

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。

最新整理面试题
在这里插入图片描述

上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题

最新整理电子书

在这里插入图片描述

最新整理大厂面试文档

在这里插入图片描述

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

最后

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。

最新整理面试题
[外链图片转存中…(img-jYezeXb6-1711995520847)]

上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题

最新整理电子书

[外链图片转存中…(img-JJmsryEW-1711995520848)]

最新整理大厂面试文档

[外链图片转存中…(img-ASC9MXTw-1711995520848)]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值