SpringMVC如何解析视图
请求处理方法返回值类型
视图解析器类型
完成单一解析逻辑的视图解析器:
InternalResourceViewResolver:内置资源视图解析器
FreeMarkerViewResolver:FreeMarker的视图解析器
BeanNameViewResolver
XmlViewResolver
基于协商的视图解析器
ContentNegotiatingViewResolver
该解析器是Spring3.0新增的,它不负责具体的视图解析,而是作为一个中间人的角色根据请求所要求的MIME类型,从上下文中选择一个适合的视图解析器,再将视图解析工作委托其负责。
基于协商的视图解析器
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"
p:order="0" p:defaultContentType="text/html" p:ignoreAcceptHeader="true"
p:favorPathExtension="false" p:favorParameter="true" p:parameterName="content">
<property name="mediaTypes">
<map>
<entry key="html" value="text/html" />
<entry key="xml" value="application/xml" />
<entry key="json" value="application/json" />
</map>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"
p:renderedAttributes="userList" />
<bean class="org.springframework.web.servlet.view.xml.MarshallingView"
p:modelKey="userList" p:marshaller-ref="xmlMarshaller" />
</list>
</property>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:order="100" p:viewClass="org.springframework.web.servlet.view.JstlView"
p:prefix="/WEB-INF/views/" p:suffix=".jsp" />
示例:
配置视图解析器:InternalResourceViewResolver(内置资源视图解析器)
在springMVC.xml里配置
<!-- 视图解析器 配置好后它会自动给你加上前缀后缀 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 视图前缀 -->
<property name="prefix" value="/"></property>
<!-- 视图后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
/**
* 本来访问result.jsp需要写全
* 但是视图解析器配置了后缀.jsp所以只需访问result即可。如果有路径后缀为.html便访问不了。
* @return
*/
@RequestMapping(value="/resu",method=RequestMethod.GET)
public String result(){
return "lesson04/result";
}