建立一个web项目,具体过程不赘述,

相关配置文件如下:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><!-- 配置 DispatcherServlet --><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 配置 DispatcherServlet 的一个初始化参数: 配置 SpringMVC 配置文件的位置和名称 --><!-- 实际上也可以不通过 contextConfigLocation 来配置 SpringMVC 的配置文件, 而使用默认的.默认的配置文件为: /WEB-INF/<servlet-name>-servlet.xml--><!--  <init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param>--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

dispatcherServlet-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!-- 配置自定扫描的包 --><context:component-scan base-package="com.helius.springmvc"></context:component-scan><!-- 配置视图解析器: 如何把 handler 方法返回值解析为实际的物理视图 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/"></property><property name="suffix" value=".jsp"></property></bean><!-- 在实际开发中通常都需配置 mvc:annotation-driven 标签 --><mvc:annotation-driven></mvc:annotation-driven></beans>

下面的才是重点

一、处理模型数据之ModelAndView

直接上代码:

@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest {private static final String SUCCESS = "success";
/*** 目标方法的返回值可以是 ModelAndView 类型。 * 其中可以包含视图和模型信息* SpringMVC 会把 ModelAndView 的 model 中数据放入到 request 域对象中. * @return*/@RequestMapping("/testModelAndView")public ModelAndView testModelAndView(){String viewName = SUCCESS;ModelAndView modelAndView = new ModelAndView(viewName);//添加模型数据到 ModelAndView 中.modelAndView.addObject("time", new Date());return modelAndView;}
}
<a href="springmvc/testModelAndView">Test ModelAndView</a><br><br>

访问上面的超连接,就会跳转到testModelAndView方法,这个方法根据视图解析器中的配置会跳转到

/WEB-INF/views/success.jsp文件中,

下面是success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><h4>Sucess Page</h4>time: ${requestScope.time }<br><br>
</body>
</html>

其实这个页面呢,获取到后端ModelAndView中传过来的time的值,显示在浏览器中,

就像这样:

小结:

 * 目标方法的返回值可以是 ModelAndView 类型。 * 其中可以包含视图和模型信息* SpringMVC 会把 ModelAndView 的 model 中数据放入到 request 域对象中. 

二、处理模型数据之Map

    /*** 目标方法可以添加 Map 类型(实际上也可以是 Model 类型或 ModelMap 类型)的参数. * @param map* @return*/@RequestMapping("/testMap")public String testMap(Map<String, Object> map){System.out.println(map.getClass().getName()); map.put("names", Arrays.asList("Tom", "Jerry", "Mike"));return SUCCESS;}

访问该方法后,也是跳转到success.jsp,浏览器显示

注意这里,将map放在方法参数处,就不用再初始化了。

三、处理模型数据之@SessionAttributes注解

前面介绍的ModelAndView、Map、Model等都是将数据放在了request请求域中,若希望在多个请求之间共享模型数据,可以在控制器上标注一个@SessionAttributes注解,SpringMVC会将在模型中的属性暂存到HttpSession中。

@SessionAttributes(value={"user"}, types={String.class})
@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest {
/*** @SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外(实际上使用的是 value 属性值),* 还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(实际上使用的是 types 属性值)* * 注意: 该注解只能放在类的上面. 而不能修饰放方法. */@RequestMapping("/testSessionAttributes")public String testSessionAttributes(Map<String, Object> map){User user = new User("Tom", "123456", "tom@atguigu.com", 15);map.put("user", user);map.put("school", "beijingdaxue");return SUCCESS;}
}

这里创建了一个User类对象,User类有4个属性

public class User {private String username;private String password;private String email;private int age;// 省略了setter and getter方法等
}

通过map.put("user", user);我们将user对象放进了Map中,根据前面说的,其实是放在了请求域

关注success.jsp中的

    request user: ${requestScope.user }<br><br>session user: ${sessionScope.user }<br><br>

通过浏览器查看结果:

,要想放在session域中,需要在controller上加注解@SessionAttributes(value={"user"}, types={String.class})。具体见上面的方法

此时再看浏览器的结果:

可以发现此时session域中有值了。

那这个注解是如何知道将哪些值放到session域中呢,

我们看下@SessionAttributes的源码

@Target({ElementType.TYPE}) // 可以放在类上,但不能放在方法上
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface SessionAttributes {String[] value() default {};Class<?>[] types() default {};
}

该注解 有两个值,一个是string类型的值和class类型的值。该注解也就是通过这两个属性的值来匹配需要放到session中的数据,

比如我们的user对象,通过value={"user"},明确指出了这个user这个值,那types={String.class}是说通过类型去匹配,再回过头看

map.put("school", "beijingdaxue");这里的"beijingdaxue"是字符串类型,也会放到session域中。

转载于:https://www.cnblogs.com/heliusKing/p/11329566.html

SpringMVC处理模型数据相关推荐

  1. SpringMVC:学习笔记(4)——处理模型数据

    SpringMVC-处理模型数据 说明 SpringMVC 提供了以下几种途径输出模型数据: – ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添 ...

  2. SpringMVC项目中,jsp文件无法显示从Controller中传递过来的ModelAndView的模型数据

    问题: SpringMVC项目中, jsp文件无法显示从Controller类中传递过来的ModelAndView的模型数据 原因: 并不是所有的jsp页面都支持EL表达式的, 它与web.xml版本 ...

  3. SpringMVC 模型数据

    为什么80%的码农都做不了架构师?>>>    Spring MVC 通过 @RequestMapping 将请求引导到处理方法上,使用合适的方法签名将请求消息绑定到入参中.方法入参 ...

  4. 【SpringMVC】SpringMVC模型数据+视图解析器

    目录 一.模型数据-如何将数据存入request域 二.模型数据-如何将数据存入session域 三.@ModelAttribute 四.视图解析器 相关文章 [SpringMVC]入门篇:带你了解S ...

  5. springmvc十五:数据输出

    数据输出-- 传入Map,Model或者ModelMap package com.atchina;import java.util.Map;import org.springframework.ste ...

  6. springMVC---处理模型数据方法 *

    承接一二章 index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8&quo ...

  7. Spring mvc 中处理模型数据 ModelAndView

    Spring mvc 中处理模型数据  ModelAndView 原文: http://blog.csdn.net/jingyuan_/article/details/9625125 将模型数据暴露给 ...

  8. 模型数据的保存和读取

    1,基本内容 目的是将模型数据以文件的形式保存到本地. 使用神经网络模型进行大数据量和复杂模型训练时,训练时间可能会持续增加,此时为避免训练过程出现不可逆的影响,并验证训练效果,可以考虑分段进行,将训 ...

  9. 附加 集合数据_浩辰3D软件新手教程:三维建模设计中如何重用CAD模型数据?

    在日常三维建模设计过程中,经常会遇到CAD模型数据的重复,那么如何重用CAD模型数据呢?下面小编就来给大家介绍一下在进行三维建模设计的过程中重用CAD模型数据的操作教程吧! 对CAD数据的重用,就如同 ...

最新文章

  1. 当程序员的一个人无聊时,甚至用Python开发出机器人看他们聊天
  2. VS2010下Cannot find or open the PDB file (转)
  3. mysql配置读写分离无效_MySQL数据库的同步配置+MySql 读写分离
  4. goland设置goroot_go环境搭建-goland使用、gopath、go命令
  5. 滴滴Booster移动APP质量优化框架 学习之旅 三
  6. 使用一些我喜欢的东西开始使用ES6
  7. mysql 5.5免安装配置_mysql的参考文档mysql5.5.21免安装版的配置方法
  8. 3.10 SE11创建类型组
  9. mysql cst_一次 JDBC 与 MySQL 因 “CST” 时区协商误解导致时间差了 14 或 13 小时的排错经历...
  10. 配置jdk和maven环境并测试
  11. 编程函数c语言,C语言编程(练习1:函数 )
  12. bzoj4567: [Scoi2016]背单词
  13. (转)300家平台倒闭,BAT纷纷离场,到底什么模式已经全军覆没?
  14. php+compose+使用,docker+compose+nginx+php
  15. latex服务器java_latex入门
  16. 亚马逊关键词应该如何选择?
  17. EL| EL表达式总结
  18. java中BOM是什么_Java-BOM与DOM对象
  19. 在谷歌浏览器上面安装AxueRP插件。
  20. strstr和strcasestr

热门文章

  1. codeforces 521div3(D Cutting Out)java
  2. CentOS 6.6编译安装LAMP(Apache2+PHP+Mysql+PHPmyAdmin)
  3. phpstorm调试php配置,PhpStorm配置Xdebug调试WordPress
  4. 绝了!华为、H3C、锐捷交换机配置命令大全
  5. c语言通讯录文件存储位置,c语言实现通讯录(存入文件)
  6. 面对不可避免的故障,我们造了一个“上帝视角”的控制台
  7. android 活动外的类,Android – 活动外的startActivityForResult?
  8. mysql.zip要什么下载_mysql用zip安装方法是什么
  9. pytorch出现‘DataLoader‘ object is not callable。
  10. 访问数据库_访问数据库