SpringMVC-數據輸出

解決問題     數據輸出:SpringMVC將目標方法處理後數據返回給頁面

 

除了原生的通過Request和Response方法響應頁面數據,SpringMVC還具有以下幾種方法

1>可以在方法處傳入Map、Model、ModelMap給這些參數中保存的所有數據都會放在域中,可以在頁面獲取。

    這些參數保存的數據都會放在Resquest域中,並且Map(其爲JDK中的接口)、Model(爲Spring中的接口)、ModelMap都是BindingAwareModelMap類型

//目標方法的返回類型也可以是一個Map類型參數(也可以是Model,或ModelMap類型)

@RequestMapping("/testMap")
public String testMap(Map<String,Object> map){ 
    System.out.println(map.getClass().getName());

    //org.springframework.validation.support.BindingAwareModelMap
    map.put("names", Arrays.asList("Tom","Jerry","Kite"));
    
    return "success";
}

   2>控制器處理方法的返回值可以爲Model and View(模型和視圖:數據和頁面)

/**
 * 目標方法的返回類型可以是ModelAndView類型
 *                 其中包含視圖信息和模型數據信息
 */
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
   
    System.out.println("testModelAndView");
    String viewName = "success";
    //之前return "success"該返回值稱爲試圖名;視圖名視圖解析器會最終進行拼接形成頁面地址
    ModelAndView mv = new ModelAndView(viewName);
    mv.addObject("time",new Date().toString()); //實質上存放到request域中 
    return mv;
}

3>SpringMVC提供了一種可以臨時給Session域中保存數據的方式:使用註解@SessionAttributes(只能註解在類上)

   例如@SessionAttribute(value="msg"):表示的是,在該類方法中如果存有Map、Model、MapModel時,給這些參數中存msg的信息時,也給session中存“msg”的信息。

@Controller
//@SessionAttributes("user")
@SessionAttributes(value={"user"},types={String.class})
public class SpringMVCController {
/**
 * @SessionAttributes
 *  除了可以通過屬性名指定需要放到會話中的屬性外(實際上是通過value指定key值),
 *  還可以通過模型屬性的對象類型指定哪些模型屬性需要放到會話中(實際上是通過types指定類型)
 *  types={String.class}:只要保存的是這種類型的數據,給Session中也保存一份
 * 注意:只能放在類的上面,不能修飾方法
 */

@RequestMapping("/testSessionAttributes")

public String testSessionAttributes(Map<String,Object> map){

User user = new User("Tom","123","[email protected]",22);                
map.put("user", user);
map.put("school", "atguigu");  

//默認是被存放到request 域,如果設置了@SessionAttribute註解,就同時存放到session域中
return "success";
}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章