Spring MVC处理方法返回值过程解析
作者:流氓大队长 发布时间:2022-11-05 23:47:14
这篇文章主要介绍了Spring MVC处理方法返回值过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
对于Spring MVC处理方法支持支持一系列的返回方式:
(1)ModelAndView
(2)Model
(3)ModelMap
(4)Map
(5)View
(6)String
(7)Void
(8)Object
一,ModelAndView
@RequestMapping("/threadRequest*")
public ModelAndView threadRequest(){
ModelAndView mv=new ModelAndView();
mv.setViewName("index");
mv.addObject("user","王五");
return mv;
}
通过ModelAndView构造方法可以指定返回的页面名称,也可以通过setViewName()方法跳转到指定的页面 ,
使用addObject()设置需要返回的值,addObject()有几个不同参数的方法,可以默认和指定返回对象的名字。
调用addObject()方法将值设置到一个名为ModelMap的类属性,ModelMap是LinkedHashMap的子类,
二,Model
Model是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类。
model.addAttribute("pojo", pojo);
三,ModelMap
Model 是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类。
四,Map
@RequestMapping("/show")
public Map<String, String> getMap() {
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "value-1");
map.put("key2", "value-2");
return map;
}
五,View
可以返回pdf excel
六,String
@RequestMapping("/RequestMethod")
public String index(Model model) {
String retVal = "user/index";
List<User> users = userService.getUsers();
model.addAttribute("users", users);
return retVal;
}
1、如果返回值为null,那么以请求名作为视图名进行跳转
2、如果指定返回值,那么按照指定返回值作为视图名进行跳转,可以通过model,modeMap携带数据。
3、如果返回值带有forward或者redirect前缀,那么将会进行相应的请求或重定向,不过不能通过mvc的数据模型携带数据,可以通过ServletApi携带数据。
七,Void
@RequestMapping("/index")
public void firstRequest(HttpServletRequest request, HttpServletResponse response,HttpSession session) throws ServletException, IOException {
UserInfo info=new UserInfo();
info.setUser_id(1);
info.setUser_name("张三");
/**
* Json格式传递
*/
response.setCharacterEncoding("UTF-8");
String value=JSON.toJSONString(info);
response.getWriter().write(value);
}
八,Object
@RequestMapping("/fourthRequest")
@ResponseBody //响应体返回数据时,除了手动装换JSON格式字符串以外可以使用jackson
public Object fourthRequest(){
List<UserInfo> userList=new ArrayList<>();
UserInfo info=new UserInfo();
info.setUser_id(1);
info.setUser_name("张三");
UserInfo info2=new UserInfo();
info2.setUser_id(2);
info2.setUser_name("李四");
userList.add(info);
userList.add(info2);
return userList;
}
1.当方法返回值为Null时,默认将请求路径当做视图 /jsp/thread/secondRequest.jsp 如果说没有试图解析器,如果返回值为Null携带数据只能用JSON
2.当方法返回值为String类型字符串时,就是视图的逻辑名称
3.当返回对象或者集合数据时,要使用Json格式字符串,可选fastJson手动转换,也可以使用jackson自动转换
小结:
1.使用 String 作为请求处理方法的返回值类型是比较通用的方法,这样返回的逻辑视图名不会和请求 URL 绑定,具有很大的灵活性,而模型数据又可以通过 ModelMap 控制。
2.使用void,map,Model 时,返回对应的逻辑视图名称真实url为:prefix前缀+视图名称 +suffix后缀组成。
3.使用String,ModelAndView返回视图名称可以不受请求的url绑定,ModelAndView可以设置返回的视图名称
来源:https://www.cnblogs.com/lowerma/p/11828168.html


猜你喜欢
- 1、xml代码:<?xml version="1.0" encoding="utf-8"?&g
- C#写入xml文件1、XmlDocument1。我认为是最原始,最基本的一种:利用XmlDocument向一个XML文件里写节点,然后再利用
- 什么是RestTemplate传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。不过
- 引言用过Spring Cloud的同学都知道在使用动态配置刷新的我们要配置一个 @RefreshScope,在类上才可以实现对象属性的的动态
- 前言标签(Label)控件是最常用的控件,在任何Windows应用程序中都可以中都可以看到标签控件。标签控件用于显示用户不能编辑的文件或图像
- 本文实例讲述了Android编程实现下载图片及在手机中展示的方法。分享给大家供大家参考,具体如下:在项目开发中从互联网上下载图片是经常用到的
- 声明:下面的实例全部在linux下尝试,window下未尝试。有兴趣者可以试一下。文章针c初学者。c语言的强符号和弱符号是c初学者经常容易犯
- 零、业务逻辑Controller-->service接口-->serviceImpl-->dao接口-->daoIm
- 在微服务架构下,我们在完成一个订单流程时经常遇到下面的场景:一个订单创建接口,第一次调用超时了,然后调用方重试了一次在订单创建时,我们需要去
- java 单例模式的实例详解概念: java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三
- //测试StringBuilder的运行效率 publi
- 一、获取当前文件的路径1. System.Diagnostics.Process.GetCurrentProcess().MainModul
- 目录1. List1.1 List 的常见方法1.2 代码示例2. ArrayList2.1 介绍2.2 ArrayList 的构造方法2.
- 一.概述先给大家看一下效果图:点击中间的显示弹框按钮,从底部弹出来一个对话框,用户可以点击拍照或者从相册选择进行相应的操作,下面看看怎么实现
- launch我们经常用,今天来看看它是什么原理。建议: 食用本篇文章之前记得先食用Kotlin协程之createCoroutine和star
- 概述从之前的配置里面我们可以看到我们的 URL 都是写死的,这不符合我们微服务的要求,我们微服务是只要知道服务的名字,根据名字去找,而直接写
- 通常用java来打包文件生成压缩文件后,有如下两个地方会出现乱码 :1、内容的中文乱码问题,这个问题网上很多人给出了解决方法,主要有两种方法
- 在上篇中,我解析了前 10 道题目,本篇我将尝试解析后面剩下的所有题目。姐妹篇:解析“60k”大佬的19道C#面试题(上)这些题目确实不怎么
- 单例模式是23种设计模式之一,是比较简单的一种设计模式,它的目的是无论调用多少次,都返回同一个对象,它的特点是构造器私有化。它分为两种结构,
- if (textBox1.InvokeRequired) {