1. 程式人生 > >springmvc中的檢視模型的返回方式,尤其注意當返回值為空時的預設檢視返回路徑

springmvc中的檢視模型的返回方式,尤其注意當返回值為空時的預設檢視返回路徑

way1:略過;

way2:(神似way1)通過在方法的引數中新增一個Model型別的引數,,該引數由spring自動生成傳入,

然後在方法內部使用addAttribute()方式新增模型資料,

最後使用return返回一個檢視名稱(檢視的路徑),

從而在頁面上可以同時使用模型資料以及得到檢視頁面.

way3:當方法沒有返回值時,此時請求該方法的資源路徑將成為檢視的路徑,

    當時由於是直接從外部訪問,因此該方式無法訪問位於WEB-INF內的資源,同時資源也無法加上字尾名....不爽!!!

    具體如下圖:

    

      way 3中的問題的解決方案:在springmvc的包裡面有一個DispatcherServlet.properties的檔案,其中有

    org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver這一個配置,其為預設的檢視解析

    器,,此時我們需要對其進行自定義的配置,,由該檢視解析器對應的類InternalResourceViewResolver所繼承的父類UrlBasedViewResolver中有兩個前後綴的屬性,,我們在

    ApplicationContext中對此2個前後綴進行重新配置,將字首自定義為WEB-INF,而後綴自定義為.jsp,,這樣在方法中返回的檢視名稱就只需寫中間的部分,即可正常訪問帶後

    綴名的檔案資源了.具體配置如下圖:

    

    具體方法如下:

    

    以上仍然存在缺點:又如何訪問位於web-inf外部的資源,以及如何自定義資源的訪問方式是時轉發(forward)還是重定向(redirect)????

      解決方法:在每個資源檢視名稱前加上forward或redirect字首,即可實現自定義是採用轉發還是重定向的方法方式....

      [注]:此時,後面的檢視名稱必須是一個完整的路徑..

      

      加redirect字首的例項如下:

此時,方法中不用Model型別的物件了,因為是重定向....也只能訪問web-inf外部的資源..