前面幾篇文章重點說明了一下怎么從前臺傳遞參數到目標方法,還沒有說怎么把結果返回給前臺。本篇來講述一下spring mvc怎么返回結果數據。
從使用形式上看,有以下幾種方式:ModelAndView、Map、Model,這幾種方式都可以返回數據到前臺,本質上來看都是通過map的形式返回數據的。本系列文章著重于使用,深層次的原因,感興趣的同志可以去調適源代碼,這里只是結合使用方式,做簡單的樣例和分析。
1、ModelAndView的使用
/**
* 方法的返回值可以是ModelAndView類型,它可以包含視圖和模型信息
* spring mvc會把模型信息放入到request域對象中,可以跟蹤源碼調試
* 這個類org.springframework.web.servlet.view.AbstractView
* 這個方法exposeModelAsRequestAttributes
* @return
*/
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView() {
ModelAndView modelAndView = new ModelAndView("success");
modelAndView.addObject("name", "Jack use ModelAndView");
return modelAndView;
}2、Map的使用
/**
* 使用map返回數據,實際上是實例化了一個
* org.springframework.validation.support.BindingAwareModelMap
* @param map
* @return
*/
@RequestMapping("/testMap")
public String testMap(Map<String, Object> map) {
System.out.println(map.getClass().getName());
map.put("name", "Jack use Map");
return "success";
}3、Model的使用,本質上與map一樣
/**
* 使用model和使用map一樣,都是實例化了一個
* org.springframework.validation.support.BindingAwareModelMap
* @param model
* @return
*/
@RequestMapping("/testModel")
public String testModel(Model model) {
System.out.println(model.getClass().getName());
model.addAttribute("name", "Jack use Model");
return "success";
}4、SessionAttributes的使用,可以把數據存放到session域中去,有兩個屬性,value和types,value執行需要放到會話中的屬性的屬性名,types指定需要放到會話中的屬性的類型。
在類上添加注解:
@SessionAttributes(value = {"user"}, types = {String.class})目標方法的定義
/**
* 注解SessionAttribute可以通過屬性名指定需要放到會話中的屬性,實際上通過value屬性
* 還可以通過types指定哪些類型的屬性需要放到會話中去
* 但是該注解只能用于類上
* @param map
* @return
*/
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes(Map<String, Object> map) {
User user = new User();
user.setAge(15);
user.setUserName("lxy");
map.put("user", user);
map.put("name", "jack in sessionAttribute");
return "success";
}項目源代碼:
https://git.oschina.net/acesdream/spring-mvc
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。