SpringMVC中的Model对象用法说明

模型对象的作用主要是保存数据,可以借助它们将数据带到前端。

常用的模型对象有以下几个:

ModelAndView(顾名思义,模型和视图,既可以携带数据信息,也可以携带视图信息,常规用法如下)

    /**
     * ModelAndView 绑定数据到视图 (ModelMap用于传递数据 View对象用于跳转)
     * @return
     * @throws Exception
     */
    @RequestMapping(value="/case2")
    public ModelAndView case2() throws Exception {
        ModelAndView mav = new ModelAndView();
        mav.setViewName("/demo03/model.jsp");
        mav.addObject("sex", "boy");
        return mav;
    }

Map,和modelAndView原理一样,同样是将数据一个一个放在requestScope中,前端取数据同样也是${模型数据}

    /**
     * 目标方法可以添加 Map 类型(实际上也可以是 Model 类型或 ModelMap 类型)的参数.
     * @param map
     * @return
     */
    @RequestMapping("/case")
    public String case1(Map map) throws Exception{
        map.put("sex", "获取成功!!");
        return "/demo03/model.jsp";
    }

@SessionAttributes(相当于创建session对象,往session对象里放数据,这里用一个注解完美解决)

基本格式如下:

/**
 * @SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外(实际上使用的是 value 属性值),
 * 还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(实际上使用的是 types 属性值)
 * 注意: 该注解只能放在类的上面. 而不能修饰方法当于在map中和session中 各存放了一个实体类,一个String类的字符串
 */
@SessionAttributes("user")
@Controller
public class SessionController {
 @ModelAttribute("user")
 public User getUser(){
  User user = new User();
  return user;
 }
 /**
  * http://localhost:8080/s/s1?id=1
  * 请求转发 forward: 不需要任何处理
  * 请求重定向 redirect: 使用SessionAttribute方式 用于在重定向中传至  将值存储在session中 【用完记住清除】
  * @return
  * @throws Exception
  */
 @RequestMapping(value="/s1",method=RequestMethod.GET)
 public String case1(@ModelAttribute("user") User user) throws Exception{
  return "redirect:/s2";
 }

 @RequestMapping(value="/s2",method=RequestMethod.GET)
 public String case2(Map map,HttpServletResponse res,SessionStatus sessionStatus) throws Exception{
  User user=(User)map.get("user");
  res.getWriter().println(user.getId());
  sessionStatus.setComplete();
  return null;
 }
}

SpringMVC中的Model和ModelAndView的区别

1.主要区别

Model是每次请求中都存在的默认参数,利用其addAttribute()方法即可将服务器的值传递到jsp页面中;

ModelAndView包含modelview两部分,使用时需要自己实例化,利用ModelMap用来传值,也可以设置view的名称

2.例子

1)使用Model传值

@RequestMapping(value="/list-books")
 private String getAllBooks(Model model){
  logger.error("/list-books");
  List<Book> books= bookService.getAllBooks();
  model.addAttribute("books", books);
  return "BookList";
 }

jsp页面利${books}即可取出其中的值

2)使用ModelAndView传递值有两种方法,不同方法在jsp页面的取值方式不同,同时设置了view的名称

public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response,
        Object handler, Exception ex) {
        LibraryException le=null;
        if(ex instanceof LibraryException){
            le=(LibraryException)ex;
        }else{
            le=new LibraryException("系统未知异常!");
        }

        ModelAndView modelAndView=new ModelAndView();
        modelAndView.addObject("exception",le.getMessage());
        modelAndView.getModel().put("exception",le.getMessage());
        modelAndView.setViewName("error");
        return modelAndView;
    }

jsp${requestScope.exception1}可以取出exception1的值;

jsp${exception2}可以取出exception2的值

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • springmvc后台基于@ModelAttribute获取表单提交的数据

    1.通过注解ModelAttribute直接映射表单中的参数到POJO.在from中的action写提交的路径,在input的name写参数的名称. POJO package com.demo.model; public class user { private String username; private String password; private int nsex; public String getUsername() { return username; } public vo

  • SpringMVC中Model和ModelAndView的EL表达式取值方法

    model和modelMap(spring 封装),Java.util.Map ModelMap(视图) ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("name", "xxx"); modelAndView.setViewName("/user/index"); return modelAndView; //对于ModelAndView构造函数可以指

  • SpringMVC的ModelAndView传值方法

    SpringMVC提供的ModelAndView可以很方便的将后台的值传到前台,前台页面直接使用EL表达式进行获取,获取方式: 1. @RequestMapping(value = "/home") public ModelAndView home(HttpServletRequest request, HttpServletResponse response){ List<String> list=new ArrayList<String>(); list.a

  • SpringMVC通过模型视图ModelAndView渲染视图的实现

    SpringMVC通过模型视图ModelAndView渲染视图大致流程 代码样例 1.准备工作 A.因为文中用到jsp,所以需要引入jsp标准标签库standard.jar和jstl.jar 官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ 本地下载地址:lib_jb51.rar B.添加Tomcat依赖如下: <dependency> <groupId>org.springframew

  • springmvc处理模型数据ModelAndView过程详解

    这篇文章主要介绍了springmvc处理模型数据ModelAndView过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 springmvc提供了以下几种途径来输出模型数据: (1)ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据. (2)Map及Model:入参为org.springframework.ui.Model.org.springframework.ui.ModelMa

  • Springmvc ModelAndView原理及用法详解

    ModelAndView以org.springframework.ui.ModelMap的形式来保持模型数据,通过构造方bai法传入的或者通过实例方法添加的模型数据都将添加到这个ModelMap中.至于ModelMap中保持的模型数据将会在视图渲染阶段,由具体的View实现类来获取并使用. 我们需要为添加到ModelAndView的一组或者多组模型数据提供相应的键(Key),以便具体的View实现类可以根据这些键获取具体的模型数据,然后公开给视图模板.通常,模型中的数据对应的键需要与视图模板中的

  • SpringMVC ModelAndView的用法使用详解

    (一)使用ModelAndView类用来存储处理完后的结果数据,以及显示该数据的视图.从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用.业务处理器调用模型层处理完用户请求后,把结果数据存储在该类的model属性中,把要返回的视图信息存储在该类的view属性中,然后让该ModelAndView返回该Spring MVC框架.框架通过调用配置文件中定义的视图解析器,对该对象进行解析,最后把结果数据显示在指定的页面上. 具体作用: 1.返回指

  • springMVC如何将controller中Model数据传递到jsp页面

    在action中存放数据,代码如下: @Controller // 加入到IOC容器 //@RequestMapping(value="/topic") public class TopicAction { @Resource(name = "topicServiceImpl") private TopicService topicService; /** * 首页显示 */ @RequestMapping(value="/index") pub

  • SpringMVC中的Model对象用法说明

    模型对象的作用主要是保存数据,可以借助它们将数据带到前端. 常用的模型对象有以下几个: ModelAndView(顾名思义,模型和视图,既可以携带数据信息,也可以携带视图信息,常规用法如下) /** * ModelAndView 绑定数据到视图 (ModelMap用于传递数据 View对象用于跳转) * @return * @throws Exception */ @RequestMapping(value="/case2") public ModelAndView case2() t

  • SpringMVC中的handlerMappings对象用法

    目录 一.handlerMappings集合内部的元素是什么,有什么作用? 对于RequestMappingHandlerMapping 对于SimpleUrlHandlerMapping 二.handlerMappings集合是怎么初始化的? 总结 三.handlerMappings有什么扩展? localhost:9090/jsp/1.jsp访问时会报如下404错误 从SpringMVC源码解析所用的例子,一个http://localhost:9090/web/hi?name=yang请求调

  • keras中的History对象用法

    keras中的fit_generator和fit函数均返回History对象,那么History怎么用呢?事实上History对象已经记录了运行输出.在了解之前,我们甚至自己定义回调函数记录损失和准确率等. 相关keras源码位于网址: class History(Callback): """Callback that records events into a `History` object. This callback is automatically applied

  • ASP.NET中Application全局对象用法实例浅析

    本文实例讲述了ASP.NET中Application全局对象用法.分享给大家供大家参考.具体如下: Application是应用全局对象,被全体共享.无论通过哪个页面操作Application,另一个页面都可以读取Application信息. 由于Application是共享的,操作之前先Lock,操作完成后UnLock. 在一个页面设置数据: Application.Lock(); Application.Set("address", "上海"); Applica

  • Java中Map集合中的Entry对象用法

    Entry: 键值对 对象. 在Map类设计是,提供了一个嵌套接口(static修饰的接口):Entry.Entry将键值对的对应关系封装成了对象,即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值. Entry为什么是静态的? Entry是Map接口中提供的一个静态内部嵌套接口,修饰为静态可以通过类名调用. Map集合遍历键值对的方式: Set<Map.Entry<K,V>> entrySet(); //返回此映射中包含的映射

  • 深入理解springMVC中的Model和Session属性

    目录 springMVC的范围 spring的@MODELATTRIBUTE spring Model和Request后边的原因 Spring的@SESSIONATTRIBUTE 控制对话属性 作为一个javaweb应用的开发者,你快速学习了request(HttpRequest)和Session(HttpSession)的范围,理解这些范围并且在这些范围内数据和对象是如何是进出的对设计和构建web应用是非常关键的. springMVC的范围 当我用springMVC写web应用的时候,我发现s

  • C++中Semaphore内核对象用法实例

    本文实例讲述了C++中Semaphore内核对象的用法,分享给大家供大家参考.具体方法如下: 复制代码 代码如下: // Semaphore.cpp : 定义控制台应用程序的入口点.  //    #include "stdafx.h"  #include <Windows.h>  #include <process.h>     HANDLE g_hSemaphore;  DWORD g_nConut1 = 0;  DWORD g_nConut2 = 0; 

  • SpringMVC中重定向model值的获取方式

    目录 SpringMVC重定向model值的获取 1.步骤一:在控制器中编写 2.编写对应跳转 3.测试:在浏览器访问自己项目下的对应控制器 4.然后浏览器跳转 SpringMVC中model的理解 1.首先将数据添加到Model中 2.然后再将其在页面上展示出来 SpringMVC重定向model值的获取 1.步骤一:在控制器中编写 /*重定向测试*/ @RequestMapping("/m1/t2") public String test1(Model model, String

  • Spring IOC中的Bean对象用法

    目录 Spring IOC中的Bean对象 一.Bean是什么 二.Bean对象的三种构造方式 三.依赖注入 四.Bean的生命周期 Ioc中Bean的作用域 bean的作用范围和生命周期 Spring IOC中的Bean对象 一.Bean是什么 突然发现提到了好多次Bean,居然忘记了讲Bean是什么.没事,现在讲也不晚.Java中的Bean是一种规范,是一种特殊的java类.所以我们先来看看Bean的规范. Bean必须生成public class类. 所有属性必须封装,Bean类的属性都为

  • 浅谈SpringMVC中的session用法及细节记录

    前言 初学SpringMVC,最近在给公司做的系统做登录方面,需要用到session. 在网上找了不少资料,大致提了2点session保存方式: 1.javaWeb工程通用的HttpSession 2.SpringMVC特有的@SessionAttributes 我个人比较关注@SessionAttributes的用法,毕竟现在是在用SpringMVC嘛.但是我看网上那些文章,基本都是只说明了基础用法,详细的使用和细节却基本没有,我想这是不够的,所以我自己做了一些测试,然后整理了下代码做了个de

随机推荐