133_Java_SpringMVC_域對象共享數據_視圖
域對象共享數據
原始
1 使用ServletAPI向request域對象共享數據
@Controller public class ScopeController { //使用servletAPI向request域對象共享數據 @RequestMapping("/testRequestByServletAPI") public String testRequestByServletAPI(HttpServletRequest request){ request.setAttribute("testRequestScope", "hello,servletAPI"); return "success"; }
MVC -不管哪種方式,最終數據都會被封裝到 ModelAndView中
2 使用ModelAndView向request域對象共享數據
3 使用Model向request域對象共享數據
4 使用map向request域對象共享數據
5 使用ModelMap向request域對象共享數據
6 ?Model、ModelMap、Map的關系
@RequestMapping("/testModelAndView") public ModelAndView testModelAndView(){ ModelAndView mav = new ModelAndView(); //處理模型數據,即向請求域request共享數據 mav.addObject("testRequestScope", "hello,ModelAndView"); //設置視圖名稱 mav.setViewName("success"); return mav; } // BindingAwareModelMap // Model、ModelMap、Map類型的參數其實本質上都是 BindingAwareModelMap 類型的 @RequestMapping("/testModel") public String testModel(Model model){ model.addAttribute("testRequestScope", "hello,model"); System.out.println(model.getClass().getName()); //BindingAwareModelMap return "success"; } @RequestMapping("/testMap") public String testMap(Map
7 ?向session域共享數據
session 鈍化: 服務器關閉,瀏覽器未關閉 說明會話繼續,存儲在session的數據會序列化到磁盤上
session 活化: 服務器重新開啟 ,將鈍化后session的數據重新讀取到session中 稱為活化
8 ?向application域共享數據
@RequestMapping("/testSession") public String testSession(HttpSession session){ session.setAttribute("testSessionScope", "hello,session"); return "success"; } @RequestMapping("/testApplication") public String testApplication(HttpSession session){ ServletContext context = session.getServletContext(); context.setAttribute("testApplicationScope", "hello,application"); return "success"; }
首頁
通過servletAPI向request域對象共享數據通過ModelAndView向request域對象共享數據
通過Model向request域對象共享數據
通過map向request域對象共享數據
通過ModelMap向request域對象共享數據
通過servletAPI向session域對象共享數據
通過servletAPI向application域對象共享數據
SpringMVC的視圖
SpringMVC中的視圖是View接口,視圖的作用渲染數據,將模型Model中的數據展示給用戶
SpringMVC視圖的種類很多,默認有轉發視圖和重定向視圖
當工程引入jstl的依賴,轉發視圖會自動轉換為JstlView
若使用的視圖技術為Thymeleaf,在SpringMVC的配置文件中配置了Thymeleaf的視圖解析器,由此視圖解析器解析之后所得到的是ThymeleafView
1 ThymeleafView
當控制器方法中所設置的視圖名稱沒有任何前綴時,此時的視圖名稱會被SpringMVC配置文件中所配置的視圖解析器解析,
視圖名稱拼接視圖前綴和視圖后綴所得到的最終路徑,會通過轉發的方式實現跳轉
2 轉發視圖SpringMVC中默認的轉發視圖是InternalResourceView
SpringMVC中創建轉發視圖的情況:
當控制器方法中所設置的視圖名稱以"forward:"為前綴時,
創建InternalResourceView視圖,此時的視圖名稱不會被SpringMVC配置文件中所配置的視圖解析器解析,
而是會將前綴"forward:"去掉,剩余部分作為最終路徑通過轉發的方式實現跳轉
例如"forward:/","forward:/employee"
3 重定向視圖SpringMVC中默認的重定向視圖是RedirectView
當控制器方法中所設置的視圖名稱以"redirect:"為前綴時,創建RedirectView視圖,此時的視圖名稱不會被SpringMVC配置文件中所配置的視圖解析器解析,
而是會將前綴"redirect:"去掉,剩余部分作為最終路徑通過重定向的方式實現跳轉
例如"redirect:/","redirect:/employee"
@Controller public class ViewController { @RequestMapping("/testThymeleafView") public String testThymeleafView(){ return "success"; // 轉發瀏覽器 地址http://localhost:8080/springMVC/testThymeleafView } @RequestMapping("/testForward") public String testForward(){ return "forward:/testThymeleafView"; //http://localhost:8080/springMVC/testForward } @RequestMapping("/testRedirect") public String testRedirect(){ return "redirect:/testThymeleafView"; //http://localhost:8080/springMVC/testThymeleafView } }
測試InternalResourceView
測試RedirectView
4 視圖控制器view-controller
當控制器方法中,僅僅用來實現頁面跳轉,即只需要設置視圖名稱時,可以將處理器方法使用view-controller標簽進行表示
JSP 頁面跳轉
MVC配置
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
首頁
success.jsp@Controller public class JspController { @RequestMapping("/success") public String success(){ return "success"; } }
Java MVC
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。