Spring MVC3在controller和视图之间传递参数的方法:

 
一, 从controller往视图传递值, controller---->视图
 
1)简单类型,如int, String,直接写在controller方法的参数里,是无法传递到视图页面上的(经测试)。
 
(而用@RequestParam("name")注解,可以从视图上,通过url的方式?name=***传递到controller方法里)
 
2)可以用Map<String, Object>,其键值可以在页面上用EL表达式${键值名}得到,
 
3)也可以用Model类对象来传递,有addAttribute(key, value)方法,其键值可以在页面上用EL表达式${键值名}得到,
 
如果用addAttribute(value)这个方法,会将类型名的首字母改成小写后,作为键值名传递过去,例如"ok"在页面上用${string}得到,而一个复合类对象,如User类对象,页面上用${user}得到该对象,用${user.propertyName}得到其属性,这是用Model的一大优势。
例如,model.addAttribute(new User("my姓名","我的爱好有游泳打球"));
这样页面上就能用${user.name}和${user.hobby}打印对应属性
  1. @RequestMapping(value={"/","/hello"})
  2. public String hello(int id,Map<String,Object> map) {
  3. System.out.println(id);
  4. System.out.println("hello");
  5. map.put("hello", "world");
  6. return "hello";
  7. }
  1. @RequestMapping(value="/say")
  2. public String say(@RequestParam int id,Model model) {
  3. System.out.println("say");
  4. model.addAttribute("hello", "value");
  5. //使用Object的类型作为key,String-->string
  6. model.addAttribute("ok");
  7. return "hello";
  8. }
 
二,从视图向controller传递值,  controller <--- 视图
 
1)简单类型,如int, String, 应在变量名前加@RequestParam注解,
例如:
  1. @RequestMapping("hello3")
  2. public String hello3( @RequestParam("name" ) String name,
  3. @RequestParam("hobby" ) String hobby){
  4. System. out.println("name=" +name);
  5. System. out.println("hobby=" +hobby);
  6. return "hello" ;
  7. }
但这样就要求输入里面必须有这两个参数了,可以用required=false来取消,例如:
@RequestParam(value="name",required=false) String name
但经测试也可以完全不写这些注解,即方法的参数写String name,效果与上面相同。
 
2)对象类型:
  1. @RequestMapping("/hello4" )
  2. public String hello4(User user){
  3. System.out.println("user.getName()=" +user.getName());
  4. System.out.println("user.getHobby()=" +user.getHobby());
  5. return "hello";
  6. }
Spring MVC会按: “HTTP请求参数名 =  命令/表单对象的属性名”的规则自动绑定请求数据,支持“级联属性名”,自动进行基本类型数据转换。
即有一个User类,如下
  1. public class User {
  2. private String name ;
  3. private String hobby ;
  4. public User(){
  5.  
  6. }
  7. public User(String name, String hobby) {
  8. this.name = name;
  9. this.hobby = hobby;
  10. }
  11. //...get/set方法略

则页面上可以用

  1. <form name="form1" action="hello4" method="post">
  2. <input type="text" name="name"/>
  3. <input type="text" name="hobby"/>
  4. ...

提交后,把值直接绑定到user对象上。

此外,还可以限定提交方法为POST,即修改方法的@RequestMapping注解为
@RequestMapping(value="/hello4",method=RequestMethod.POST)
最后,注意,如果这里提交过来的字符出现乱码,应该在web.xml里加入如下filter:
  1. <filter>
  2. <filter-name>encodingFilter</filter-name>
  3. <filter-class>org.springframework.web.filter.CharacterEncodingFilter </filter-class>
  4. <init-param>
  5. <param-name>encoding</param-name>
  6. <param-value>utf8</param-value>
  7. </init-param>
  8. </filter>
  9.  
  10. <filter-mapping>
  11. <filter-name>encodingFilter</filter-name >
  12. <url-pattern>/*</url-pattern>
  13. </filter-mapping>

内容转载自:http://blog.csdn.net/yanqlv/article/details/7655645

[转]SpringMVC Controller&View数据传递的更多相关文章

  1. Controller与View数据传递 多Model传递

    1)ViewBag变量方式 使用4个ViewBag变量进行数据传递,Data1.Data2.Data3.Data4的数据直接从数据库里调. Control中伪代码如下所示: 1 public Acti ...

  2. springMVC:将controller中数据传递到jsp页面

    1> 将方法的返回值该为ModelAndView在返回时,将数据存储在ModelAndView对象中如: newModelAndView("/WEBINF/jsp/showData.j ...

  3. ASP.NET controller TO view 数据传递

    https://stackify.com/viewbag/ In the case of ASP.NET MVC, you have three ways to pass data from the ...

  4. SpringMVC之json数据传递

    json是一种常见的传递格式,是一种键值对应的格式.并且数据大小会比较小,方便传递.所以在开发中经常会用到json. 首先看一下json的格式: {key1:value1,key2:value2} 每 ...

  5. springmvc中的数据传递

    import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; impo ...

  6. SpringMVC Controller 接收页面传递的中文参数出现乱码

    在Controller中接收到的POST参数如果是中文的话,显示为乱码.已知客户端传过来时编码为UTF-8. 问题产生分析: spring MVC中默认的编码格式为“ISO-8859-1”,因此造成乱 ...

  7. ASP.NET MVC3中Controller与View之间的数据传递总结

    一.  Controller向View传递数据 1.       使用ViewData传递数据 我们在Controller中定义如下: ViewData["Message_ViewData& ...

  8. ASP.NET MVC3中Controller与View之间的数据传递

    在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一.  Controller向Vie ...

  9. Asp.net MVC中 Controller 与 View之间的数据传递

    在ASP.NET MVC中,经常会在Controller与View之间传递数据 1.Controller向View中传递数据 (1)使用ViewData["user"] (2)使用 ...

随机推荐

  1. 白条VS花呗,快餐式消费金融成巨头新战场

    在这一次的国庆假期前,90后网红密子君吃空麦当劳事件引发了网友们的热议.短短半个小时,这位90后网红就吃光了25包薯条,随后又吃下两杯麦旋风,其疯狂举动引得四周食客纷纷围观拍照.那么,是什么刺激这位9 ...

  2. 从委托、匿名方法到Lambda

    前面讲过委托的知识,本次由委托过渡到Lambda表达式,更易于理解. class Program { static void Main(string[] args) { , , , }; ProcAr ...

  3. INNO安装卸载自动结束进程插件使用

    [Code] //安装前判断是否有进程正在运行,istask.dll文件与打包的exe文件一起function RunTask(FileName: string; bFullpath: Boolean ...

  4. iptables防火墙原理详解

    1. netfilter与iptables Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤.数 ...

  5. solr详解,开发必备

    1.基础知识 创建索引的过程如下: (1).建立索引器IndexWriter,这相当于一本书的框架 (2).建立文档对象Document,这相当于一篇文章 (3).建立信息字段对象Field,这相当于 ...

  6. PuppetOpenstack Newton Design Summit见闻

    PS:技术博客已经好久没有来耕耘了,倒不是懒惰,而是最近一直在忙着写一本关于Openstack自动化部署的书籍,我觉得可能会比单独零散的技术文章更有价值一些. 作为重度拖延症患者,又把本来奥斯汀峰会期 ...

  7. 无线局域网络 WIFI/WAPI/WLAN区别浅析

    WIFI和WAPI的区别 既然WIFI和WAPI都是WLAN的传输协议,那么两者究竟都有怎样的区别? 首先第一点区别在于,两者的缔造者不一样.WIFI是又国外制定的一个协议,而WAPI是由中国制定的, ...

  8. Java的自动装箱和拆箱的简单讲解

     装箱就是把基础类型封装成一个类.比如把int封装成Integer,这时你就不能把他当成一个数了,而是一个类了,对他的操作就需要用它的方法了. 拆箱就是把类转换成基础类型.比如你算个加法什么的是不能用 ...

  9. Open vSwitch实践——VLAN

    # virt-clone --original=centos65 --name=vm2 --file=vm2.qcow2 正在克隆 centos65.qcow2                     ...

  10. Aapache status / apache2ctl status 总是403

    默认apache2ctl status访问的是http://localhost:80/server_status 所以得搞定default这个站点,放歌html就可以了. 在default的配置里加入 ...