之前章节中已经详细介绍了Controller获取请求参数,Controller中方法的返回值,此章节我们详细介绍一下从Controller向页面传值的方式

Controller向页面传值方式

  • 使用Request对象保存数据
  • 使用Session对象保存数据
  • 使用ModelAndView保存数据
  • 使用Model保存数据
  • 使用ModelMap保存数据
  • 使用HashMap保存数据
  • 使用@ModelAttribute注解
    此案例基于上一章controller方法中的返回值基础上继续做的

案例回顾:

jsp中:

<body>This is demoController!!!<br>获取绑定数据:${msg }
</body>

controller:

@Controller
@RequestMapping("/demo")
public class DemoController {//...
}

1)使用Request对象保存数据

老方法,使用Request进行转发数据的绑定。在controller中编写demo09方法:

@RequestMapping("/demo09.do")
public String demo09(HttpServletRequest request){request.setAttribute("msg", "通过request绑定数据传递给页面");return "jsp/demo";
}

测试:


2)使用Session对象保存数据

也是老方法,在HttpSession对象中保存数据,创建demo10方法

@RequestMapping("/demo10.do")
public String demo10(HttpSession session){session.setAttribute("msg", "通过session绑定数据传递给页面");return "jsp/demo";
}


3)使用ModelAndView保存数据

上一章案例章已经测试过,使用AmodelAndView可以绑定数据以及选中视图:

@RequestMapping("/demo11.do")
public ModelAndView demo11(){ModelAndView modelAnnView=new ModelAndView();//绑定数据modelAnnView.addObject("msg","通过ModelAndView绑定数据传递给页面");//选择视图modelAnnView.setViewName("jsp/demo");return modelAnnView;
}


4)使用Model保存数据

Model是Spring mvc默认支持的数据类型,可以在参数中直接定义:

@RequestMapping("/demo12.do")
public String demo12(Model model){//绑定数据model.addAttribute("msg", "通过Model绑定数据传递给页面");//选择视图return "jsp/demo";
}


5)使用ModelMap保存数据

ModelMap是继承自Model,所以同样可以在参数中定义:

@RequestMapping("/demo13.do")
public String demo13(ModelMap map){//绑定数据map.put("msg", "通过ModelMap绑定数据传递给页面");//选择视图return "jsp/demo";
}


6)使用HashMap保存数据

@RequestMapping("/demo14.do")
public String demo14(HashMap<String, Object> map){//绑定数据map.put("msg", "通过HashMap绑定数据传递给页面");//选择视图return "jsp/demo";
}


7)使用@ModelAttribute注解

@ModelAttribute的可以在方法上使用,也可以在方法参数中使用,且用在方法上时对于返回值不同的方法有不容的含义, 而注解本身也可以定义属性,所以@ModelAttribute有多种用法
此处在方法和方法参数上各举一例
先修改jsp为:

 <body>This is demoController!!!<br>获取绑定数据Demo对象:${demo }</body>

@ModelAttribute用在方法上

被@ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个controller映射多个URL的用法来说,要谨慎使用。
以一个有返回值的方法举例:

@ModelAttribute("demo")
public Demo addDemo(){return new Demo(1, "张三");
}
@RequestMapping("/demo15.do")
public String demo15(){//选择视图return "jsp/demo";
}

此案例在访问/demo15.do之前先执行了addDemo方法,在model中添加了一个属性名为demo的对象。
测试:

@ModelAttribute用在方法参数上注释方法的参数

此处多了一个注解@ModelAttribute(“demo”),它的作用是将该绑定的命令对象以“demo”为名称添加到模型对象中供视图页面展示使用

@RequestMapping("/demo16.do")
public String demo16(@ModelAttribute("demo") Demo demo){//绑定数据demo.setId(2);demo.setName("李四");//选择视图return "jsp/demo";
}

后面有时间在整理一个@ModelAttribute的详解。

spring mvc 从Controller向页面传数据相关推荐

  1. Spring MVC 之@Controller@RequestMapping详解

    一:配置web.xml 1)问题:spring项目中有多个配置文件mvc.xml   dao.xml 2)解决:在web.xml中 <init-param> <param-name& ...

  2. spring mvc在Controller中获取ApplicationContext

    spring mvc在Controller中获取ApplicationContext web.xml中进行正常的beans.xml和spring-mvc.xml的配置: 需要在beans.xml中进行 ...

  3. 微信小程序.原生.Tabbar 颜色变量 像素换算 缓存 给页面传数据

    Tabbar 效果: apps.json中添加tabbar: "tabBar": {"list": [{"pagePath": " ...

  4. Spring MVC前后台交互(前台ajax传递数据,后台controller接收数据返回json对象)

    1.导入jar包 2.JS中用ajax传递用户数据 var data={origin:"register",tel:tel,pwd:pwd};$.ajax({url : " ...

  5. 【Spring学习笔记-MVC-13.2】Spring MVC之多文件上传

    作者:ssslinppp       1. 摘要 前篇文章讲解了单文件上传<[Spring学习笔记-MVC-13]Spring MVC之文件上传>http://www.cnblogs.co ...

  6. spring mvc DispatcherServlet详解之前传---FrameworkServlet

    做项目时碰到Controller不能使用aop进行拦截,从网上搜索得知:使用spring mvc 启动了两个context:applicationContext 和WebapplicationCont ...

  7. spring mvc DispatcherServlet详解之前传---前端控制器架构

    前端控制器是整个MVC框架中最为核心的一块,它主要用来拦截符合要求的外部请求,并把请求分发到不同的控制器去处理,根据控制器处理后的结果,生成相应的响应发送到客户端.前端控制器既可以使用Filter实现 ...

  8. Spring MVC笔记 添加错误页面

    使用Spring MVC的Web项目,可以使用DispatcherServlet来指定异常页面,下面是具体的配置: 在Spring配置文件中配置: 1 2 3 4 5 6 7 8 9 10 11 12 ...

  9. Spring MVC中@Controller和@RequestMapping注解详解

    在<第一个Spring MVC应用>教程中创建了两个传统风格的控制器,它们是实现 Controller 接口的类.传统风格的控制器不仅需要在配置文件中部署映映射,而且只能编写一个处理方法, ...

  10. spring MVC中定义异常页面

    如果我们在使用Spring MVC的过程中,想自定义异常页面的话,我们可以使用DispatcherServlet来指定异常页面,具体的做法很简单: 下面看我曾经的一个项目的spring配置文件: &l ...

最新文章

  1. 分享:给入职新人的IDEA培训教程。
  2. Attention Mechanism
  3. 在leangoo里怎么复制删除列表?
  4. 天胶指数发布 对话国际农民丰收节贸易会海垦集团走出去
  5. jQuery 3教程(三):jQuery集合
  6. spring boot记录操作日志
  7. 解决EditText在ListView Item中,第一次点击无法获取焦点问题
  8. ICMP (互联网控制消息协议 )是什么
  9. 2021中国新流量价值洞察报告
  10. hdu4814 黄金进制转换
  11. MAC下安装NDKR10e
  12. 计算机软件水平考试程序员之程序设计知识点汇总,计算机软件水平考试《程序员》复习知识点(5)...
  13. 静态代理和动态代理的区别
  14. 51单片机驱动继电器模块点灯
  15. 电脑被流氓软件入侵?教你彻底清除
  16. 邓白氏编码申请经验分享
  17. ubuntu22 使用todesk被远程控制时显示黑屏或者白屏
  18. html页面怎么判断未登录,未登录用户.html
  19. php gd图片验证,php笔记之GD库图片创建/简单验证码
  20. 孙悟空为什么可以做CTO

热门文章

  1. RNA_seq(1)植物转录组实战(中)之subread工具进行序列比对和转录组生物学定量
  2. 每日一题/007/级数/设a_n=1-1/2+1/3- ... + (-1)^(n-1)*1/n,求 lim_{n\to\infty}a_n
  3. 使用MurMurHash在Shodan平台上寻找钓鱼网站
  4. Raki的读paper小记:Rational LAMOL: A Rationale-Based Lifelong Learning Framework
  5. Raki的读paper小记:Soft Gazetteers for Low-Resource Named Entity Recognition
  6. 生产者消费者模型(自己上锁与阻塞队列两版本)
  7. android 模仿今日头条ViewPager+TabLayout
  8. 使用ConcurrentDictionary实现轻量缓存
  9. windows2008r2安装笔记
  10. 创建 Agg 静态链接库