溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行SpringMVC中ModelAndView的分析

發(fā)布時(shí)間:2021-12-02 15:21:56 來源:億速云 閱讀:273 作者:柒染 欄目:大數(shù)據(jù)

如何進(jìn)行SpringMVC中ModelAndView的分析,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

當(dāng)控制器處理完請(qǐng)求時(shí),通常會(huì)將包含視圖名稱或視圖對(duì)象以及一些模型屬性的ModelAndView對(duì)象返回到DispatcherServlet。

因此,經(jīng)常需要在控制器中構(gòu)造ModelAndView對(duì)象。ModelAndView類提供了幾個(gè)重載的構(gòu)造器和一些方便的方法,

讓你可以根據(jù)自己的喜好來構(gòu)造ModelAndView對(duì)象。這些構(gòu)造器和方法以類似的方式支持視圖名稱和視圖對(duì)象。

當(dāng)你只有一個(gè)模型屬性要返回時(shí),可以在構(gòu)造器中指定該屬性來構(gòu)造ModelAndView對(duì)象

@Controller
public class Login {
    @RequestMapping(value="login"
    public ModelAndView login(){
        ModelAndView mav = new ModelAndView();
        mav.setViewName("welcome"); //返回的文件名
        mav.addObject("message","hello kitty");
        //List
        List<String> list = new ArrayList<String>();
        list.add("java");
        list.add("c++");
        list.add("oracle");
        mav.addObject("bookList", list);
        //Map
        Map<String,String> map = new HashMap<String,String>();
        map.put("zhangsan", "北京");
        map.put("lisi", "上海");
        map.put("wangwu", "深圳");
        mav.addObject("map",map);
        return mav;
    }
} 
1、使用ModelAndView作為返回值,首先在方法頭中進(jìn)行聲明:

public ModelAndView getNameById(HttpServletRequestrequest,HttpServletResponse response) throws Exception{}

2、然后在方法體中實(shí)例化ModelAndView

  ModelAndViewmv=this.getAutoView().addObject("object",object);

3、最后在方法中的末尾加上returnmv;

  那么mv中的值是什么呢?

ModelAndView: reference to view with name'/officeoa/test/bjqGetNameById.jsp'; model is{bjq=com.hotent.officeoa.model.test.Bjq@1d001c5c[id=10000007960011,name=課本,password=12ab,department=測(cè)試3,departmentID=,leader=22222,leaderID=]}

解析:mv中有一個(gè)view值和一個(gè)model值。

      view是我們條轉(zhuǎn)到的頁面的地址,model則是頁面中會(huì)用到的數(shù)據(jù)

給ModelAndView實(shí)例設(shè)置view的方法有兩個(gè):setViewName(StringviewName) 和 setView(View view)。前者是使用viewName,后者是使用預(yù)先構(gòu)造好的View對(duì)象。其中前者比較常用。事實(shí)上View是一個(gè)接口,而不是一個(gè)可以構(gòu)造的具體類,我們只能通過其他途徑來獲取View的實(shí)例。對(duì)于viewName,它既可以是jsp的名字,也可以是tiles定義的名字,取決于使用的ViewNameResolver,而對(duì)應(yīng)如何給ModelAndView實(shí)例設(shè)置model則比較復(fù)雜。有三個(gè)方法可以使用:
addObject(Object modelObject);

addObject(String modelName, ObjectmodelObject);
addAllObjects(Map modelMap);

ModelAndView對(duì)象有兩個(gè)作用: 
作用一設(shè)置轉(zhuǎn)向地址,如下所示(這也是ModelAndView和ModelMap的主要區(qū)別) 
ModelAndView view = newModelAndView("path:ok"); 

作用二用于傳遞控制方法處理結(jié)果數(shù)據(jù)到結(jié)果頁面,也就是說我們把需要在結(jié)果頁面上需要的數(shù)據(jù)放到ModelAndView對(duì)象中即可,他的作用類似于request對(duì)象的setAttribute方法的作用,用來在一個(gè)請(qǐng)求過程中傳遞處理的數(shù)據(jù)。通過以下方法向頁面?zhèn)鬟f參數(shù): 
addObject(String key,Object value); 

關(guān)于如何進(jìn)行SpringMVC中ModelAndView的分析問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI