SpringMVC學習(六)之處理數據模型

一、ModelAndView

在控制器的目標方法中返回 ModelAndView

/**
     * 目標方法的返回值可以是 ModelAndView 類型
     * 其中可以包含視圖和模型信息
     * SpringMVC 會吧 ModelAndView 的 model 中的數據放入到 request 域對象中
     */
    @RequestMapping("/testModelAndView")
    private ModelAndView testModelAndView(){
        String viewName = SUCCESS;
        ModelAndView mv = new ModelAndView(viewName);

        //添加模型數據到 ModelAndView 中,
        mv.addObject("time", new Date());

        return mv;
    }

在跳轉頁面上從請求域獲取數據模型信息

time: ${requestScope.time }

URL請求:

<a href="springmvc/testModelAndView">testModelAndView</a>   
    <br><br>

二、Map

開控制器的目標方法中可以添加Map類型的參數,數據將存儲到請求域

@RequestMapping("/testMap")
    private String testMap(Map<String, Object> map){
        System.out.println(map.getClass().getName());
        map.put("names", Arrays.asList("Tom", "Jake", "Mari"));
        return SUCCESS;
    }

在成功跳轉頁面顯示Map的值:

names:${requestScope.names }

URL請求:

<a href="springmvc/testMap">testMap</a> 
    <br><br>

三、SessionAttributes註解

在前兩個處理模型方法中,都是將數據存儲到請求域中,而使用@SessionAttributes註解能夠將數據存儲到 Session 域和request域中

@SessionAttributes(value={"user"}, types={String.class})
@Controller
@RequestMapping("/springmvc")
public class SpringMVCTest {

    private static final String SUCCESS = "success";

    /**
     * @SessionAttributes 除了可以通過屬性名指定需要放到會話中的屬性外(實際上是使用 value 屬性值),
     * 還可以通過模型屬性的對象類型指定哪些模型屬性需要放到會話中(實際上是使用 types 屬性值)
     * 
     * 注意:該註解只能放在類的上面,而不能修飾方法
     */
    @RequestMapping("/testSessionAttributes")
    private String testSessionAttribures(Map<String, Object> map){
        User user = new User("aaa", 20);
        map.put("user", user);
        map.put("str", "aaaaaaaaa");
        return SUCCESS;
    }
}   

在跳轉頁面顯示存儲在session中的數據:

    request: ${requestScope.user }<br>
    session: ${sessionScope.user }

    <br><br>
    request: ${requestScope.str}<br>
    session: ${sessionScope.str}

URL請求:

<a href="springmvc/testSessionAttributes">testSessionAttributes</a> 
    <br><br>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章