SpringMVC中的Model對象用法說明
模型對象的作用主要是保存數據,可以借助它們將數據帶到前端。
常用的模型對象有以下幾個:
ModelAndView(顧名思義,模型和視圖,既可以攜帶數據信息,也可以攜帶視圖信息,常規(guī)用法如下)
/**
* ModelAndView 綁定數據到視圖 (ModelMap用于傳遞數據 View對象用于跳轉)
* @return
* @throws Exception
*/
@RequestMapping(value="/case2")
public ModelAndView case2() throws Exception {
ModelAndView mav = new ModelAndView();
mav.setViewName("/demo03/model.jsp");
mav.addObject("sex", "boy");
return mav;
}
Map,和modelAndView原理一樣,同樣是將數據一個一個放在requestScope中,前端取數據同樣也是${模型數據}
/**
* 目標方法可以添加 Map 類型(實際上也可以是 Model 類型或 ModelMap 類型)的參數.
* @param map
* @return
*/
@RequestMapping("/case")
public String case1(Map map) throws Exception{
map.put("sex", "獲取成功!!");
return "/demo03/model.jsp";
}
@SessionAttributes(相當于創(chuàng)建session對象,往session對象里放數據,這里用一個注解完美解決)
基本格式如下:
/**
* @SessionAttributes 除了可以通過屬性名指定需要放到會話中的屬性外(實際上使用的是 value 屬性值),
* 還可以通過模型屬性的對象類型指定哪些模型屬性需要放到會話中(實際上使用的是 types 屬性值)
* 注意: 該注解只能放在類的上面. 而不能修飾方法當于在map中和session中 各存放了一個實體類,一個String類的字符串
*/
@SessionAttributes("user")
@Controller
public class SessionController {
@ModelAttribute("user")
public User getUser(){
User user = new User();
return user;
}
/**
* http://localhost:8080/s/s1?id=1
* 請求轉發(fā) forward: 不需要任何處理
* 請求重定向 redirect: 使用SessionAttribute方式 用于在重定向中傳至 將值存儲在session中 【用完記住清除】
* @return
* @throws Exception
*/
@RequestMapping(value="/s1",method=RequestMethod.GET)
public String case1(@ModelAttribute("user") User user) throws Exception{
return "redirect:/s2";
}
@RequestMapping(value="/s2",method=RequestMethod.GET)
public String case2(Map map,HttpServletResponse res,SessionStatus sessionStatus) throws Exception{
User user=(User)map.get("user");
res.getWriter().println(user.getId());
sessionStatus.setComplete();
return null;
}
}
SpringMVC中的Model和ModelAndView的區(qū)別
1.主要區(qū)別
Model是每次請求中都存在的默認參數,利用其addAttribute()方法即可將服務器的值傳遞到jsp頁面中;
ModelAndView包含model和view兩部分,使用時需要自己實例化,利用ModelMap用來傳值,也可以設置view的名稱
2.例子
1)使用Model傳值
@RequestMapping(value="/list-books")
private String getAllBooks(Model model){
logger.error("/list-books");
List<Book> books= bookService.getAllBooks();
model.addAttribute("books", books);
return "BookList";
}
在jsp頁面利${books}即可取出其中的值
2)使用ModelAndView傳遞值有兩種方法,不同方法在jsp頁面的取值方式不同,同時設置了view的名稱
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) {
LibraryException le=null;
if(ex instanceof LibraryException){
le=(LibraryException)ex;
}else{
le=new LibraryException("系統(tǒng)未知異常!");
}
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("exception",le.getMessage());
modelAndView.getModel().put("exception",le.getMessage());
modelAndView.setViewName("error");
return modelAndView;
}
jsp中${requestScope.exception1}可以取出exception1的值;
jsp中${exception2}可以取出exception2的值
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
IDEA2022.1創(chuàng)建maven項目規(guī)避idea2022新建maven項目卡死無反應問題
這篇文章主要介紹了IDEA2022.1創(chuàng)建maven項目規(guī)避idea2022新建maven項目卡死無反應問題,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08
springmvc級聯(lián)屬性處理無法轉換異常問題解決
這篇文章主要介紹了springmvc級聯(lián)屬性處理無法轉換異常問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12
java?ResourceBundle讀取properties文件方式
這篇文章主要介紹了java?ResourceBundle讀取properties文件方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08
SpringBoot?@Transactional事務不生效排查方式
這篇文章主要介紹了SpringBoot?@Transactional事務不生效排查方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01

