也可以像下面这样直接调用重定向的方法:
@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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
最新整理面试题
上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题
最新整理电子书
最新整理大厂面试文档
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
最新整理面试题
[外链图片转存中…(img-jYezeXb6-1711995520847)]
上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题
最新整理电子书
[外链图片转存中…(img-JJmsryEW-1711995520848)]
最新整理大厂面试文档
[外链图片转存中…(img-ASC9MXTw-1711995520848)]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。