SSM笔记-SpringMVC的处理模型数据

1、模型数据的ModelAndView ①返回值和返回类型是ModelAndView及对象,如果返回的是String的话,request域对象会拿不到ModelAndView的model的数据 ②ModelAndView中可以包含视图和模型信息 ③SpringMVC会把ModelAndView的model数据放到request域对象中 ④注意:初始化Mode...
摘要由CSDN通过智能技术生成

1、模型数据的ModelAndView
①返回值和返回类型是ModelAndView及对象,如果返回的是String的话,request域对象会拿不到ModelAndView的model的数据
②ModelAndView中可以包含视图和模型信息
③SpringMVC会把ModelAndView的model数据放到request域对象中
④注意:初始化ModelAndView的时候需要把name写上(即需要返回的页面名字) 如:ModelAndView modelAndView = new ModelAndView(name);
⑤SpringMVC支持为目标方法添加Map类型参数(可以是Model类型或者ModelMap类型)

2、模型数据的SessionAttributes
①可以通过属性名指定需要放到回话中的属性(SessionAttributes的value参数的属性值)
②可以通过模型属性的对象类型指定那些模型属性需要放到回话中(SessionAttributes的types参数的属性值)
③注意:@SessionAttributes注解只能放到类上面,只能修饰类
④添加@SessionAttributes注解之后,当程序为域对象赋值的时候会同时会为Session赋值

3、@ModelAttribute
运行顺序
①执行@ModelAttribute修饰的方法,把初始的或者数据库取出的对象放到Map中)
②SpringMVC从Map中取出数据,并把表单请求参数赋值给该对象对应值
③SpringMVC把上面的对象传入目标方法的参数中
④@ModelAttribute修饰的方法中,放入到Map时的键,如果没有特别使用@ModelAttribute修的的话,会和目标方法入参类型的小写首字母的字符串一致
⑤使用@SessionAttributes的时候,要不需要有@ModelAttribute修饰的方法,要不就需要在目标方法的入参里面用@ModelAttribute修饰入参,让隐含的模型对象中存在@SessionAttributes需要的key
⑥调用逻辑顺序

1、Spring MVC 在调用处理方法之前,在请求线程中自动的创建一个隐含的模型对象
2、判断隐含的模型对象是否已经有 @ModelAttribute的属性值

①如果有:将 @ModelAttribute的属性值赋值到入参(定义的dao对象属性)的相应属性,并返回
②如果没有:不进行后面的步骤
3、判断调用的方法所在的标注了@Controller类中,有没有@SessionAttributes修饰
①如果有:查看Session中是否存在@SessionAttributes的属性值,并且把该属性值添加到隐含的模型对象中,如果该属性值已经存在于隐含的模型对象中,则原来的属性值会被覆盖,如果不存在该属性值,则抛出异常 HttpSessionRequiredException
②如果没有:继续下一步
3-1、通过反射创建POJO类型的参数,并将其赋值给入参(定义的dao对象属性),并将用户的请求消息 赋值给入参的相应属性
4、把key和value存入隐含的模型对象,在保存到request中
5、SpringMVC调用每个方法前,都会调用@ModelAttribute标记的方法

4、再次提醒 注意事项:
①当handler方法使用ModelAndView对象时,返回值是String的时候,request域对象会拿不到ModelAndView的model的数据
②初始化ModelAndView的时候需要把name写上
③SpringMVC支持为目标方法添加Map类型参数
④@SessionAttributes注解只能放到类上面,只能修饰类
⑤添加@SessionAttributes注解之后,当程序为域对象赋值的时候会同时会Session赋值
⑥@ModelAttribute修饰的方法中,放入到Map时的键,如果没有特别使用@ModelAttribute修的的话,会和目标方法入参类型的小写首字母的字符串一致
⑦使用@SessionAttributes的时候,要不需要有@ModelAttribute修饰的方法,要不就需要在目标方法的入参里面用@ModelAttribute修饰入参,让隐含的模型对象中存在@SessionAttributes需要的key

5、web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
  <display-name>SpringMVC_5_Model</display-name>
  <servlet>
    <servlet-name>springDispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <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>springDispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

6、springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值