SpringMVC参数传递方式list,map

本文是基于SpringMVC注解的方式来实现页面与后台之间参数的传递,本文主要侧重于从后台传递到前台view。

内容:

1、后台传递单个对象User到前台;

2、后台传递集合对象到前台(分Map和List两种情形)

下面的内容基于SpringMVC工程配置已经准备好,该工程是用maven搭建的。

一:传递单个对象(以用户对象User为例)

User类:

public class User {
     private Integer userId;
     //用户名
     private String userName;
     //密码
     private String password;
     public Integer getUserId() {
            return userId;
     }
     public void setUserId(Integer userId) {
            this. userId = userId;
     }
     public String getUserName() {
            return userName;
     }
     public void setUserName(String userName) {
            this. userName = userName;
     }
     public String getPassword() {
            return password;
     }
     public void setPassword(String password) {
            this. password = password;
     }
}

Controller类:

@Controller
@RequestMapping(value="/test" )
public class DemoController {
     @RequestMapping(value= "/param")
     public String   testParam(Model model ){
           User u1 = new User();
            u1.setUserId(1);
            u1.setPassword( "123456");
            u1.setUserName( "张三");
            model.addAttribute( "user", u1);
            return "param" ;
     }
}

param.jsp页面:

<%@ page language ="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@taglib prefix ="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
     <body >
    用户名:${user.userName}
    密码:${user.password}
     </body >
</html>

二:传递Map集合对象(以Map<String,User>为例)

User类同上;

Controller类:

@Controller
@RequestMapping(value="/test" )
public class DemoController {
     @RequestMapping(value= "/param")
     public String  testParam(Model model){

            return mapInfo();
     }
     /*
      * ModelAndView:它代表了Spring Web MVC中呈现画面时所使用的Model与View,
      * 由于Java一次只能返回一个物件,所以ModelAndView的作用封装这两个物件,以方便您一次返回Model与View这两个物件。
      * @return
      */
     private ModelAndView mapInfo(){
           Map<String,Object> map = new HashMap<String, Object>();
           User u1 = new User();
            u1.setUserId(1);
            u1.setPassword( "123456");
            u1.setUserName( "张三");

           User u2 = new User();
            u2.setUserId(1);
            u2.setPassword( "123456");
            u2.setUserName( "张四");

            map.put( "user1", u1);
            map.put( "user2", u2);
            /*
            * 1、" param":试图名,即跳转到param.jsp页面
            * 2、"map":传递的对象为map类型
            * 3、map:被传递的对象
            */
            return new ModelAndView( "param", "map", map);
     }
}

param.jsp页面:

<%@ page language ="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@taglib prefix ="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
     <body >
           <c:forEach items ="${requestScope.map}" var= "m">
             ${m.key} : ${m.value.userName} <br />
          </c:forEach >
     </body >
</html>

三:传递List集合对象(以List<User>为例)

User类同上;

Controller类:

@Controller
@RequestMapping(value="/test" )
public class DemoController {
     @RequestMapping(value= "/param")
     public String  testParam(Model model){
            model.addAttribute( listInfo());
            return "param";
     }
     public @ModelAttribute List<User> listInfo(){
           List<User> list = new ArrayList<User>();
           User u1 = new User();
            u1.setUserId(1);
            u1.setPassword( "123456");
            u1.setUserName( "张三");

           User u2 = new User();
            u2.setUserId(1);
            u2.setPassword( "123456");
            u2.setUserName( "张四");

           User u3 = new User();
            u3.setUserId(1);
            u3.setPassword( "123456");
            u3.setUserName( "张五");

            list.add( u3);
            list.add( u2);
            list.add( u1);
            return list;
     }
}

param.jsp页面:

<%@ page language ="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@taglib prefix ="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
     <body >
         <c:forEach items ="${requestScope.userList}" var= "m">
             用户名:${m.userName};密码:${m.password} <br />
         </c:forEach >
      </body >
</html>

时间: 2024-10-10 10:39:26

SpringMVC参数传递方式list,map的相关文章

springmvc 参数解析绑定原理

handlerMethodArgumentResolver:方法参数解析器接口,这个接口是springmvc参数解析绑定的核心接口.不同的参数类型绑定都是通过实行这个接口来实现.也可以通过实现这个接口来自定义参数解析器.这个接口有如下两个方法: public interface HandlerMethodArgumentResolver{ //该解析器是否支持parameter参数的解析 boolean supportsParameter (MethodParameter parameter);

Java和C参数传递方式的比较

java中的形参是复制实参的一份拷贝(对于引用类型则是复制引用的拷贝,在栈中的拷贝),所以在函数中改变形参是无法改变实参的值的,改变引用只是将形参所代表的引用指向另外的新的对象,而实参的引用还指向原来的对象,改变形参引用的成员当然会影响实参引用成员的值,因为他们的引用都指向同一个对象.[Java只有值传递Java只有值传递Java只有值传递,重要的事情说3遍] 示例代码: public class ExchangeValue { public static void main(String[]

【整理】--C++三种参数传递方式

在C++中,共有三种参数传递方式: 按值传递(pass by value) 地址传递(pass by pointer) 引用传递(pass by reference) (1)按值传递的过程为:首先计算出实参表达式的值,接着给对应的形参变量分配一个存储空间,该空间的大小等于该形参类型的,然后把以求出的实参表达式的值一一存入到形参变量分配的存储空间中,成为形参变量的初值,供被调用函数执行时使用.这种传递是把实参表达式的值传送给对应的形参变量,故称这种传递方式为“按值传递”. 使用这种方式,调用函数本

SpringMvc参数绑定出现乱码解决方法

在SpringMvc参数绑定过程中出现乱码的解决方法 1.post参数乱码的解决方法 在web.xml中添加过滤器 <!-- 过滤器 处理post乱码 --> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class

Java函数参数传递方式详解

在阅读本文之前,根据自己的经验和理解,大家可以先思考并选择一下Java函数的参数传递方式: A. 是按值传递的? B. 按引用传递的? C. 部分按值部分按引用? 此处暂不宣布正确答案,我们通过一个简单的例子让大家自己找答案: 1. 先定义一个类型Value Java代码   public static class Value { private String value = "value"; public String getValue() { return value; } pub

C语言函数参数传递方式

C语言中函数的参数传递方式有两种:传值.传地址. 1.传值调用 在被调用函数中开辟出一个临时的内存空间,在主调用函数进入被调用函数前,会将实参进行拷贝,拷贝的数据放在该临时内存空间中,供被调用函数使用.当被调用函数返回时,该临时内存空间即被释放. 1 #include<stdio.h> 2 3 int test_func(char *q) 4 { 5 long lAddr=&q; // 被调用时,光标选中“&q”,显示结果(随机)为:0x002df7ac {0x013058b8

java中参数传递方式话题终结实例

java新手入门面临的一个经典的话题,本文意在终结这个话题,java中有说法:Java里面参数传递都是按值传递,怎么理解这句话?用文字说明恐怕不容易说明白,说明白恐怕也难以想明白. 前提 先明确一下,按值还是按引用的概念,它是来自c++语言,引用不是汉语词典中的一个词,而是c++的概念--"&"这个符号还记得吧? 为什么有这个话题呢?其一,是对按引用传递理解不透彻:其二,诸多java书籍及讨论论点并没有切中要害.?? 一句话概括,按值传参还是按引用传参,既然是参数传递方式,那么

C# 同一应用程序域不同线程之间的参数传递方式

很久没有写博客了,最近的项目不用写代码.今天没事就看看thread之间的参数传递方式,这里主要适用于运行在不同线程的两个方法之间参数传递.直接看代码 1.方法之间直接传递参数 void DemoParam() { Console.WriteLine("DemoParam:" + Thread.CurrentThread.ManagedThreadId); //Thread t = new Thread(new ParameterizedThreadStart(testparam));

产品经理学Python:参数传递方式

这是关于Python的第5篇文章,主要介绍下参数传递方式和如何设计自己的函数. (一) 本篇主要介绍2种参数传递方式. 位置参数 调用函数时,根据函数定义的参数位置来传递参数. 1 def right_triangle_area(a,b): 2 return 1/2*a*b 3 4 print(right_triangle_area(3,4)) 5 # 位置参数传递 求直角三角形面积,a.b分别为两条直角边,这里调用函数时使用的是位置参数传递.在位置参数传递中,参数的顺序是不可改变的. 关键词参