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外部的資源..