一日三省吾身

博客园 首页 联系 订阅 管理

Spring MVC如何解析视图

 

视图解析器类型

 

完成单一解析逻辑的视图解析器:

  InternalResourceViewResolver
  FreeMarkerViewResolver
  BeanNameViewResolver
  XmlViewResolver
  ...


基于协商的视图解析器:
  ContentNegotiatingViewResolver
  该解析器是Spring 3.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" />

 

静态资源处理

 

配置:

第一步:web.xml让所有请求都由Spring MVC处理
<servlet>
  <servlet-name>springServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  <servlet-name>springServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

第二步:springServlet-servlet.xml让Web应用服务器处理静态资源

  <mvc:default-servlet-handler/>

获取应用服务器的默认Servlet,大多数应用服务器的Servlet的名称都是“default”,如果默认不是“default”则使用

  <mvc:default-servlet-handler

    default-servlet-name=“<defaultServletName>"/>

 

posted on 2016-11-11 15:08  一日三省吾身  阅读(109)  评论(0编辑  收藏  举报