了解spring mvc中的视图分辨率

时间:2015-01-01 11:32:01

标签: java spring spring-mvc

我试图了解spring 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做的是说我们有三个返回View接口实例的方法。 第一个是

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实例,我们就会调用此方法将标记呈现给客户端。但我不确定它是否真的有效。

一般来说,我的问题是什么方法采用a jsp - 页面并返回要呈现给客户端的View实例。

1 个答案:

答案 0 :(得分:1)

  

一般来说,我的问题是什么方法获取jsp-page并返回View实例以呈现给客户端。

对于UrlBasedViewResolver,这将是createView方法,对于JSP,它将返回InternalResourceView

就视图解析框架而言,ViewResolver接口是入口点,并且有一个方法resolveViewName,它接受​​视图名称(&#34;你好&#34;在你的示例&#34;)并返回View个对象,然后在其上调用render

buildViewcreateViewloadView方法都是UrlBasedViewResolver ViewResolver实施的内部特定内容。