springMVC教程(五)将controller中数据传递到jsp页面

来源:互联网 发布:linux常用命令cd 编辑:程序博客网 时间:2024/06/05 11:05

将controller中数据传递到jsp页面

1、可以在controller中获取request对象,然后将数据设置为request对象的属性,然后使用转发的方式进入jsp即可。这一点不赘述。

2、将方法的返回值该为ModelAndView在返回时,将数据存储在ModelAndView对象中如:

   newModelAndView("/WEB-INF/jsp/showData.jsp","message",message)

   其中第一个参数为url,第二个参数为要传递的数据的key,第三个参数为数据对象。

   在这里要注意的是   数据是默认被存放在request中的。

程序示例:

   //使用modelAndView对象将数据传递到前台。

   @RequestMapping(value="/mad/showData_1.do")

   public ModelAndView showData_1(){

      String message ="这个是要传递的数据";

      //其中第一个参数为url,第二个参数为要传递的数据的key,第三个参数为数据对象。

      //在这里要注意的是  数据是默认被存放在request中的。

      returnnew ModelAndView("/WEB-INF/jsp/showData.jsp","message",message);

   }

前台页面获取方式:            

request:${requestScope.message}<br/>

   2.1、可以在类的前面添加注解@SessionAttributes({"message","user"})

      这个注解可以设置对应的model中参数也会在session中存储一份。该注解中的参数为一个集合,可以写多个,如上面的例子,其中message和user都是存储的数据的key.

示例程序:

@SessionAttributes({"message","user"})  //modelAndView的对应的数据也会在session中存储一份

页面获取:

session:${sessionScope.message}<br/>

 

3、数据modelAndView返回一个集合

   该处理方式和上面的处理方式一直,因为modelAndView接受的数据类型是Object的,集合也是一样的处理方式

//使用modelAndView对象将数据传递到前台。

   //传递多个参数(不同类型的)

   @RequestMapping(value="/mad/showData_2.do")

   public ModelAndView showData_2(){

      System.out.println("showData_2");

      String message ="这个是要传递的数据";

      User user =new User("张三", 12,new Date());

      List<User> us=new ArrayList<User>();

      us.add(new User("张三", 12, new Date()));

      us.add(new User("张四", 13, new Date()));

      us.add(new User("张五", 14, new Date()));

      ModelAndView mad =new ModelAndView("/WEB-INF/jsp/showData.jsp");

      //将数据存入modelMap

      mad.addObject("message", message);

      mad.addObject(user);//默认为类名的首字母小写

      mad.addObject("users", us);

      return mad;

   }

前台页面获取方式:            

request:${requestScope.message}<br/>

<c:forEachitems="${requestScope.users }"var="u">

      ${u.name }-${u.age }-${u.birth }<br/>

   </c:forEach>

 

4、使用modelAndView传递多个参数。

   可以通过ModelAndView的mad.addObject("message",message);方法设置参数。

   该方法中第一个参数为数据的key,第二个参数为数据对象。

   也可以使用mad.addObject(user);方法

   该方法中数据的参数为数据对象,数据的key为该对象的类的类名(其中首字母小写)。

5、使用ModelMap传递多个数据到jsp中。

   在方法的参数列表中添加形参 ModelMap map,spring 会自动创建ModelMap对象。

   然后调用map的put(key,value)或者addAttribute(key,value)将数据放入map中,spring会自动将数据存入request。

示例程序:

//使用modelMap对象将数据传递到前台。

   //传递多个参数(不同类型的)

   @RequestMapping(value="/mad/showData_3.do")

   public String showData_3(ModelMap map){

      System.out.println("showData_3");

      String message ="这个是要传递的数据";

      User user =new User("张三", 12,new Date());

      List<User> us=new ArrayList<User>();

      us.add(new User("张三", 12, new Date()));

      us.add(new User("张四", 13, new Date()));

      us.add(new User("张五", 14, new Date()));

      //将数据存入modelMap

      map.put("message", message);

      map.addAttribute("user", user);

      map.put("users", us);

      return"/WEB-INF/jsp/showData.jsp";

   }

页面调用:

request:${requestScope.message}<br/>

    session:${sessionScope.message }<br/>

   application:${applicationScope.message}<br/>

   <hr/>

   <h1>ModelMap中的数据</h1>

   ${requestScope.message}<br/>

   ${requestScope.user.name}<br/>

   <p>列表</p>

   <c:forEachitems="${requestScope.users}"var="u">

      ${u.name }-${u.age }-${u.birth }<br/>

   </c:forEach>


0 0
原创粉丝点击