SpringMVC中的Model對(duì)象用法說(shuō)明
模型對(duì)象的作用主要是保存數(shù)據(jù),可以借助它們將數(shù)據(jù)帶到前端。
常用的模型對(duì)象有以下幾個(gè):
ModelAndView(顧名思義,模型和視圖,既可以攜帶數(shù)據(jù)信息,也可以攜帶視圖信息,常規(guī)用法如下)
/**
* ModelAndView 綁定數(shù)據(jù)到視圖 (ModelMap用于傳遞數(shù)據(jù) View對(duì)象用于跳轉(zhuǎn))
* @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原理一樣,同樣是將數(shù)據(jù)一個(gè)一個(gè)放在requestScope中,前端取數(shù)據(jù)同樣也是${模型數(shù)據(jù)}
/**
* 目標(biāo)方法可以添加 Map 類型(實(shí)際上也可以是 Model 類型或 ModelMap 類型)的參數(shù).
* @param map
* @return
*/
@RequestMapping("/case")
public String case1(Map map) throws Exception{
map.put("sex", "獲取成功!!");
return "/demo03/model.jsp";
}
@SessionAttributes(相當(dāng)于創(chuàng)建session對(duì)象,往session對(duì)象里放數(shù)據(jù),這里用一個(gè)注解完美解決)
基本格式如下:
/**
* @SessionAttributes 除了可以通過(guò)屬性名指定需要放到會(huì)話中的屬性外(實(shí)際上使用的是 value 屬性值),
* 還可以通過(guò)模型屬性的對(duì)象類型指定哪些模型屬性需要放到會(huì)話中(實(shí)際上使用的是 types 屬性值)
* 注意: 該注解只能放在類的上面. 而不能修飾方法當(dāng)于在map中和session中 各存放了一個(gè)實(shí)體類,一個(gè)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
* 請(qǐng)求轉(zhuǎn)發(fā) forward: 不需要任何處理
* 請(qǐng)求重定向 redirect: 使用SessionAttribute方式 用于在重定向中傳至 將值存儲(chǔ)在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是每次請(qǐng)求中都存在的默認(rèn)參數(shù),利用其addAttribute()方法即可將服務(wù)器的值傳遞到jsp頁(yè)面中;
ModelAndView包含model和view兩部分,使用時(shí)需要自己實(shí)例化,利用ModelMap用來(lái)傳值,也可以設(shè)置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頁(yè)面利${books}即可取出其中的值
2)使用ModelAndView傳遞值有兩種方法,不同方法在jsp頁(yè)面的取值方式不同,同時(shí)設(shè)置了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的值
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA2022.1創(chuàng)建maven項(xiàng)目規(guī)避idea2022新建maven項(xiàng)目卡死無(wú)反應(yīng)問(wèn)題
這篇文章主要介紹了IDEA2022.1創(chuàng)建maven項(xiàng)目規(guī)避idea2022新建maven項(xiàng)目卡死無(wú)反應(yīng)問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
SpringMVC框架實(shí)現(xiàn)上傳圖片的示例代碼
本篇文章主要介紹了SpringMVC框架實(shí)現(xiàn)上傳圖片的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
Java數(shù)據(jù)結(jié)構(gòu)專題解析之棧和隊(duì)列的實(shí)現(xiàn)
從數(shù)據(jù)結(jié)構(gòu)的定義看,棧和隊(duì)列也是一種線性表。其不同之處在于棧和隊(duì)列的相關(guān)運(yùn)算具有特殊性,只是線性表相關(guān)運(yùn)算的一個(gè)子集。更準(zhǔn)確的說(shuō),一般線性表的插入、刪除運(yùn)算不受限制,而棧和隊(duì)列上的插入刪除運(yùn)算均受某種特殊限制。因此,棧和隊(duì)列也稱作操作受限的線性表2021-10-10
SpringBoot業(yè)務(wù)邏輯異常的處理方法介紹
本篇文章為大家展示了如何在SpringBoot中統(tǒng)一處理邏輯異常,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲2022-09-09
Docker 存儲(chǔ)驅(qū)動(dòng)詳細(xì)介紹
這篇文章主要介紹了Docker 存儲(chǔ)驅(qū)動(dòng)詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-10-10
springmvc級(jí)聯(lián)屬性處理無(wú)法轉(zhuǎn)換異常問(wèn)題解決
這篇文章主要介紹了springmvc級(jí)聯(lián)屬性處理無(wú)法轉(zhuǎn)換異常問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
java?ResourceBundle讀取properties文件方式
這篇文章主要介紹了java?ResourceBundle讀取properties文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
SpringBoot?@Transactional事務(wù)不生效排查方式
這篇文章主要介紹了SpringBoot?@Transactional事務(wù)不生效排查方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Jmeter測(cè)試時(shí)遇到的各種亂碼問(wèn)題及解決
這篇文章主要介紹了Jmeter測(cè)試時(shí)遇到的各種亂碼問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03

