2015-01-01 53 views
0

我想了解spring mvc如何生成標記。例如,考慮簡單的控制器:在春天理解視圖分辨率mvc

@Controller 
public class HelloController{ 

    @RequestMapping("/hello") 
    public String hello(){ 
     return "hello"; 
    } 
} 

說,我們正在申請在dispatcher-servlet.xml作爲UrlBasedViewResolver定義如下:

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="prefix" value="/WEB-INF/views/"> 
    <property name="suffix" value="jsp"> 
</bean> 

什麼解析器的the javadoc確實是說,我們有三個方法返回接口的實例。 第一個是

protected AbstractUrlBasedView buildView(String viewName)

第二是

protected View createView(String viewName, Locale locale)

第三是

protected View loadView(String viewName, Locale locale)

只要View接口有方法render(Map<String,?> model, HttpServletRequest request, HttpServletResponse response)我假設一旦View的實例已經創建,我們調用這個方法來將標記渲染到客戶端。但我不確定它是否真的以這種方式工作。

一般來說,我的問題是什麼方法需要一個jsp-頁並返回View的實例呈現給客戶端。

回答

1

一般來說,我的問題是什麼方法需要一個jsp頁面並返回View的實例呈現給客戶端。

UrlBasedViewResolver的情況下,這將是createView方法,這對於一個JSP將返回InternalResourceView

至於視圖分辨率框架而言,ViewResolver接口爲切入點,有一個方法resolveViewName這需要視圖名稱(「你好」在你的例子「),並返回一個View對象,然後調用render上。

buildViewcreateViewloadView方法都是內部特定於UrlBasedViewResolver實施ViewResolver