了解 spring mvc 中的视图分辨率
Understanding view resolution in 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 of the resolver does is says that we have three methods that return the instance of the 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 的实例,我们就会调用此方法将标记呈现给客户端。但我不确定它是否真的这样工作。
一般来说,我的问题是什么方法需要将 jsp
页面和 return View
的实例呈现给客户端。
In general, my question is what method takes the a jsp-page and return the instance of View to be rendered to the client.
在 UrlBasedViewResolver
的情况下,这将是 createView
方法,对于 JSP 将 return 和 InternalResourceView
.
就视图解析框架而言,ViewResolver
接口是入口点,并且有一个方法 resolveViewName
获取视图名称("hello" 在你的例子中") 和 returns 一个 View
对象,然后对其调用 render
。
buildView
、createView
和 loadView
方法都是内部特定于 ViewResolver
的 UrlBasedViewResolver
实现。
我正在尝试了解 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 of the resolver does is says that we have three methods that return the instance of the 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 的实例,我们就会调用此方法将标记呈现给客户端。但我不确定它是否真的这样工作。
一般来说,我的问题是什么方法需要将 jsp
页面和 return View
的实例呈现给客户端。
In general, my question is what method takes the a jsp-page and return the instance of View to be rendered to the client.
在 UrlBasedViewResolver
的情况下,这将是 createView
方法,对于 JSP 将 return 和 InternalResourceView
.
就视图解析框架而言,ViewResolver
接口是入口点,并且有一个方法 resolveViewName
获取视图名称("hello" 在你的例子中") 和 returns 一个 View
对象,然后对其调用 render
。
buildView
、createView
和 loadView
方法都是内部特定于 ViewResolver
的 UrlBasedViewResolver
实现。