1、視圖和視圖解析器html
-- 請求處理方法執行完成後,最終返回一個 ModelAndView • 對象。對於那些返回 String,View 或 ModeMap 等類型的 處 理方法,Spring MVC 也會在內部將它們裝配成一個 ModelAndView 對象,它包含了邏輯名和模型對象的視圖 java
-- Spring MVC 藉助視圖解析器(ViewResolver)獲得最終• 的視圖對象(View),最終的視圖能夠是 JSP ,也多是 Excel、JFreeChart 等各類表現形式的視圖 web
-- 對於最終究竟採起何種視圖對象對模型數據進行渲染,處• 理器並不關心,處理器工做重點聚焦在生產模型數據的工 做 上, 從而實現 MVC 的充分解耦spring
2、視圖安全
-- 視圖的做用是渲染模型數據,將模型裏的數據以某種形式呈現給客• 戶。ide
-- 爲了實現視圖模型和具體實現技術的解耦,Spring 在 • org.springframework.web.servlet 包中定義了一個高度抽象的 View 接口:spa
-- 視圖對象由視圖解析器負責實例化。因爲視圖是無狀態的,因此他們• 不會有線程安全的問題線程
視圖解析器code
-- SpringMVC 爲邏輯視圖名的解析提供了不一樣的策略,可• 以在 Spring WEB 上下文中配置一種或多種解析策略,並 指定他們之間的前後順序。每一種映射策略對應一個具體 的視圖解析器實現類。htm
-- 視圖解析器的做用比較單一:將邏輯視圖解析爲一個具體• 的視圖對象。
-- 全部的視圖解析器都必須實現ViewResolver 接口
---------------------------------------------分割線--------------------------------------------------------------
自定義視圖:
1.首先自定義個視圖類
@Component //把視圖放到IOC容器裏面 //這裏視圖的名字就是HelloView public HelloView implements View{ @Override public String getContentType(){ return "text/html"; } @Overrider public void render(Map<String,?> model,HttpServletRequest request, HttpServletResponse response){ response.getWriter().print("hello view,time:"+new Date()); } }
2.配置視圖解析器
BeanNameViewResolver 解析器:使用視圖的名字來解析視圖
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"> <property name="order" value="100" /> </bean>
這個視圖解析器,是在InternalResourceViewResolver以前被調用, 經過order屬性來定義視圖的優先級,order值越小優先級越高,InternalResourceViewResolver的order值是inter的最大值,因此通常來講都是最後調用的。