我试图了解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
实例。
答案 0 :(得分:1)
一般来说,我的问题是什么方法获取jsp-page并返回View实例以呈现给客户端。
对于UrlBasedViewResolver
,这将是createView
方法,对于JSP,它将返回InternalResourceView
。
就视图解析框架而言,ViewResolver
接口是入口点,并且有一个方法resolveViewName
,它接受视图名称(&#34;你好&#34;在你的示例&#34;)并返回View
个对象,然后在其上调用render
。
buildView
,createView
和loadView
方法都是UrlBasedViewResolver
ViewResolver
实施的内部特定内容。