当前位置: 首页 > 编程日记 > 正文

springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序

spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void。下面将对具体的一一进行说明:
ModelAndView

Java代码  收藏代码
  1.    
  2. @RequestMapping("/show1"
  3. public ModelAndView show1(HttpServletRequest request, 
  4.            HttpServletResponse response) throws Exception { 
  5.        ModelAndView mav = new ModelAndView("/demo2/show"); 
  6.        mav.addObject("account""account -1"); 
  7.        return mav; 
  8.    } 


通过ModelAndView构造方法可以指定返回的页面名称,也可以通过setViewName()方法跳转到指定的页面 ,
使用addObject()设置需要返回的值,addObject()有几个不同参数的方法,可以默认和指定返回对象的名字。
调用addObject()方法将值设置到一个名为ModelMap的类属性,ModelMap是LinkedHashMap的子类,
具体请看类。

Model 是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类。

Map  

Java代码  收藏代码
  1. @RequestMapping("/demo2/show"
  2.     public Map<String, String> getMap() { 
  3.         Map<String, String> map = new HashMap<String, String>(); 
  4.         map.put("key1""value-1"); 
  5.         map.put("key2""value-2"); 
  6.         return map; 
  7.     } 


在jsp页面中可直通过${key1}获得到值, map.put()相当于request.setAttribute方法。
写例子时发现,key值包括 - . 时会有问题.

View 可以返回pdf excel等,暂时没详细了解。

String 指定返回的视图页面名称,结合设置的返回地址路径加上页面名称后缀即可访问到。
注意:如果方法声明了注解@ResponseBody ,则会直接将返回值输出到页面。
例如:

Java代码  收藏代码
  1. @RequestMapping(value = "/something", method = RequestMethod.GET) 
  2. @ResponseBody 
  3. public String helloWorld()  { 
  4. return "Hello World"


上面的结果会将文本"Hello World "直接写到http响应流。

Java代码  收藏代码
  1. @RequestMapping("/welcome"
  2. public String welcomeHandler() { 
  3.   return "center"


对应的逻辑视图名为“center”,URL= prefix前缀+视图名称 +suffix后缀组成。

void  如果返回值为空,则响应的视图页面对应为访问地址

Java代码  收藏代码
  1. @RequestMapping("/welcome"
  2. public void welcomeHandler() {} 


此例对应的逻辑视图名为"welcome"。

小结:
1.使用 String 作为请求处理方法的返回值类型是比较通用的方法,这样返回的逻辑视图名不会和请求 URL 绑定,具有很大的灵活性,而模型数据又可以通过 ModelMap 控制。
2.使用void,map,Model 时,返回对应的逻辑视图名称真实url为:prefix前缀+视图名称 +suffix后缀组成。
3.使用String,ModelAndView返回视图名称可以不受请求的url绑定,ModelAndView可以设置返回的视图名称。

Model model,HttpServletRequest request, ModelMap map声明变量

request.getSession().setAttribute("test", "haiwei2Session");
request.setAttribute("test", "haiwei1request"); 
map.addAttribute("test", "haiweiModelMap");
model.addAttribute("test", "haiweiModel");

我通过${test}这个方式取值,优先取Model和ModelMap的,Model和ModelMap是同一个东西,谁最后赋值的就取谁的,然后是request,最后是从session中获取


相关文章:

[文摘20070930]人际关系,你有五十五招

第1招 认清人生的意义以及毕生所全力以赴的目标 为什么要这么拼命&#xff1f;因为你必须对得起自己的良知。 想要成为一个人际关系高手&#xff0c;第一步就必须先确认你的价值观&#xff1b;若是你连这个都摸不清楚&#xff0c;就很难去看透人生的意义&#xff0c;更不用说…

数据库抽取,生成CSV文件导出,CSVUtils工具类

2019独角兽企业重金招聘Python工程师标准>>> 开发背景&#xff1a; 最近一直在忙一个任务调度系统&#xff0c;需求一直没定下来&#xff0c;需求一直变更&#xff0c;调度一直改&#xff0c;往往复复。。。 等这波忙完了可以写一下关于BI这边调度任务的相关问题&am…

Matlab与线性代数 -- Pascal矩阵

本文主要介绍利用Matlab实现pascal矩阵的相关知识。

java加密算法

java加密算法 本篇内容简要介绍BASE64、MD5、SHA、HMAC几种加密算法。 BASE64编码算法不算是真正的加密算法。 MD5、SHA、HMAC这三种加密算法&#xff0c;可谓是非可逆加密&#xff0c;就是不可解密的加密方法&#xff0c;我们称之为单向加密算法。我们通常只把他们作为加密的基…

在多台FMS服务器之间共享流

FMS有一个非常重要的功能,那就是可以在多台服务器之间共享流. 利用这一功能,我们可以把源服务器上的流分发到其它的服务器,这些获得流的服务器同样可以作为新的源服务器使用.这个功能有点象FMS集群. 我们都知道,利用WMP插件可以获取网上的流媒体地址制作网络电视台,其实利用Fla…

linux实现nat转发和内部端口映射

路由机 eth0:114.114.114.114(公网ip) eth1:192.168.1.1(内网ip) pc1 eth0:192.168.1.2(内网ip) eth1(拨号ip) pc2 eth0:192.168.1.3(内网ip) eth1(拨号ip) 1.配置路由机网卡信息 vim /etc/sysconfig/network-scripts/ifcfg-eth1 TYPEEthernet BOOTPROTOstati…

15级团队学习成果汇报 -- 利用C#语言实现展览厅

本图文主要是15级团队学习成果的汇报“ 利用C#语言实现展览厅”。

我所理解的Spring AOP的基本概念

Spring AOP中的概念晦涩难懂&#xff0c;读官方文档更是像读天书&#xff0c;看了很多例子后&#xff0c;写一些自己理解的一些spring的概念。要理解面向切面编程&#xff0c;要首先理解代理模式和动态代理模式。 假设一个OA系统中的一个功能是查看考勤信息&#xff0c;那么我…

你需要的大概不是 enumerated

作者&#xff1a;KHANLOU&#xff0c;原文链接&#xff0c;原文日期&#xff1a;2017-03-28译者&#xff1a;四娘&#xff1b;校对&#xff1a;Cwift&#xff1b;定稿&#xff1a;CMBSwift 标准库里最容易被滥用的就是 Sequence 的 enumerated() 函数。这个函数会返回一个新的序…

Matlab与线性代数 -- 正态分布的随机矩阵

本图文介绍了如何利用Matlab实现正态分布的随机矩阵。

修改maven本地仓库的位置及疑惑

maven的默认仓库在~/.m2/repository下&#xff0c;这个是在c盘下&#xff0c;很多系统程序都在c盘&#xff0c;而且c盘的空间有时候不够大&#xff0c;所以经常要修改本地repository的位置&#xff0c;我做的修改如下&#xff1a; 在D盘建立一个repository&#xff1a;D:\mave…

值得FS去的英雄副本

1) 奥金尼地穴腰带 18耐23智19精 22法爆28法伤2) 塞泰克大厅法杖 40耐42智 37法爆168法伤3) 暗影迷宫腰带 31耐27智 17法爆34法伤4) 奴隶围栏饰品 37法伤一定几率使施法加速320,持续6秒5) 盘牙洞穴魔杖 10智 11法爆20法伤转载于:https://www.cnblogs.com/Evanescence/archive/2…

利用C#语言实现小闹钟

本图文主要是15级团队学习成果的汇报“ 利用C#语言实现小闹钟”。

Windows和linux双系统——改动默认启动顺序

电脑上装了Windows 7和Ubantu双系统&#xff0c;因为Linux系统用的次数比較少而且还是默认的启动项对此非常不能容忍&#xff0c;因此得改动Windows为默认的启动项。 因为电脑上的系统引导程序是GRUB&#xff0c;因此改动当然也就落到Linux系统上啦。改动/boot/grub/grub.cfg该…

ThreadLocal的使用方法

ThreadLocal的含义是Thread Local Variable&#xff0c;它可以声明一个字段&#xff0c;使得不同的线程访问这个字段时&#xff0c;获取的都是不同的副本&#xff0c;互不影响。 ThreadLocal的作用和在每个Thread类声明一个字段相同&#xff0c;那么什么时候使用它呢&#xff1…

如何实现对象交互

在本篇随笔中&#xff0c;我们学习下什么是对象选择&#xff0c;投影和反投影是如何工作的&#xff0c;怎样使用Three.js构建可使用鼠标和对象交互的应用。例如当鼠标移到对象&#xff0c;对象变成红色&#xff0c;鼠标移走&#xff0c;对象又恢复原来的颜色。 本篇随笔的源代码…

Matlab与线性代数 -- 矩阵的大小

本图文介绍了如何利用Matlab求矩阵的大小。

最近做了一个小小的系统,收获挺大的....我想总结一下

首先我要感谢老许,是他给了我这次机会.以后我会把我的经验一点一点总结出来....为那些在编程之路上的迷茫者找到方向活着让人兴奋...总觉的应该去做点什么做工程开发吧----我的老师阿温说过一句话让我记忆尤新:"坚持成就传奇".我想用他去勉力每一个在人生路上奋斗的人…

Hibernate和iBATIS 优缺点比较

选择Hibernate还是iBATIS都有它的道理&#xff1a;Hibernate的特点&#xff1a;Hibernate功能强大&#xff0c;数据库无关性好&#xff0c;O/R映射能力强&#xff0c;如果你对Hibernate相当精通&#xff0c;而且对Hibernate进行了适当的封装&#xff0c;那么你的项目整个持久层…

Matlab与线性代数 -- 矩阵的秩

本图文详细介绍了利用Matlab求矩阵秩的方法。

iOS开发 最近开发了蓝牙模块,在此记录总结一下

为什么80%的码农都做不了架构师&#xff1f;>>> 1.基本概念 <1>中心者模式&#xff1a;常用的&#xff08;其实99.99%&#xff09;就是使用中心者模式作为开发&#xff0c;就是我们手机作为主机&#xff0c;连接蓝牙外设。由于开发只用到了中心者模式&#x…

asp.net实现在网页上自动显示超链接以及Email地址

人们总喜欢在帖子中加上各种有用的URL链接或Email地址。而笔者当初设计时没有考虑到这一点&#xff0c;使得这些URL链接或Email地址只能以文字的形式而并不是以超链接的形式显示&#xff0c;其它浏览帖子的人还必须把这些URL链接拷贝到浏览器中或把Email地址拷贝到Outlook中才能…

用开放地址法中的线性探查法解决冲突实现哈希表的运算

为了更深的理解哈希算法&#xff0c;自己写了用开放地址法中的线性探查法解决冲突实现哈希表的运算。 /*** Created by lirui on 14-8-13.* 用开放地址法中的线性探查法解决冲突实现哈希表的运算。*/ public class MyHashSearch {public static final int SIZE 10;public sta…

Re: 求助:5道算法题

http://www.newsmth.net/frames.html发信人: cutepig (cutepig), 信区: Algorithm标 题: 求助&#xff1a;5道算法题发信站: 水木社区 (Sat Nov 10 18:25:06 2007), 站内1)given a integer, output its previous and next neighbor number which has the same number of bit 1…

Linux下des对称性加密

最近对接公安审计一些经历 对方的需求&#xff1a; 打成zip包对zip包进行des-cbc对称性加密&#xff0c;使用约定好的 -K和-iv值比如 -K "abcd$#!" -iv "efgh$#!"加密后做base64编码起初是想尝试用 php 去做&#xff0c;经过一阵折腾之后发现&#xff0c;p…

在软件中常用的“撤销”操作,其本质是“栈”!

本文介绍了栈的定义与操作并利用顺序表和链表实现了栈这种常用的数据结构。

用拉链法实现哈希算法的运算

package lirui.find;import java.util.LinkedList;/*** Created by lirui on 14-8-13.* 用拉链法实现哈希算法的运算*/ public class MyHashSearch2 {public static final int SIZE 10;public static MyHashElement[] hashtable new MyHashElement[SIZE];// 记录hash表中的数…

C#图片处理常见方法性能比较

在.NET编程中&#xff0c;由于GDI的出现&#xff0c;使得对于图像的处理功能大大增强。在文通过一个简单黑白处理实例介绍在.NET中常见的图片处理方法和原理并比较各种方法的性能。 黑白处理原理&#xff1a;彩色图像处理成黑白效果通常有3种算法&#xff1b; (1).最大值法: 使…

软件中常用的“发送邮件”、“打印文档”,其本质是“队列”!

本图文详细介绍了顺序队列、循环队列、链队列的实现过程。

二分查找的循环实现和递归实现

自己实现了二分查找的循环实现和递归实现 说明&#xff1a;二分查找适用于顺序存储结构&#xff0c;不适于链式存储结构&#xff0c;是一个高效的查找方法。虽然折半查找效率高&#xff0c;但是要排序&#xff0c;排序本身是一种很费时的运算。要求传入的表是有序的。二分查找的…