zoukankan      html  css  js  c++  java
  • Spring 梳理

    1. View
      1. View接口表示一个响应给用户的视图,例如jsp文件,pdf文件,html文件等
      2. 该接口只有两个方法定义,分别表明该视图的ContentType和如何被渲染
      3. Spring中提供了丰富的视图支持
    2. ViewResolver
      1. ViewResolver接口定义了如何通过view 名称来解析对应View实例的行为,即:如何把控制器返回的“视图名 字符串” 解析为View实例,并渲染为HTML、PDF后推向浏览器
      2. 同样Spring提供了丰富的ViewResolver实现用来解析不同的View
      3.  创建视图时,Spring会检查视图名,有三种情况redirect视图,forward视图,普通视图,进行了不同处理
    3. 多viewResolver视图解析器解决方案
      1. DispatcherServlet会加载所有的viewResolver到一个list中,并按照优先级进行解析。

        注意:①order中的值越小,优先级越高。

        ②而id为viewResolver的viewResolver的优先级是最低的。

      2. 如果某个解析器没有找到合适的视图,Spring会在上下文中寻找是否配置了其它的解析器。 如果有,它会继续进行解析,否则,Srping会抛出一个Exception
      3. <!-- 定义JSP视图解析器-->  
        <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/"></property>
            <property name="suffix" value=".jsp"></property>
            <property name="order" value="1" />
        </bean>
        
        <bean id="freemarkerViewResolver" class="com.founder.web.commom.springmvc.view.ExtFreeMarkerViewResolver">
            <property name="contentType" value="text/html; charset=UTF-8"/>
            <property name="exposeRequestAttributes" value="false"/>
            <property name="exposeSessionAttributes" value="false"/>
            <property name="exposeSpringMacroHelpers" value="true"/>
            <property name="cacheUnresolved" value="false"/>
            <property name="order" value="0" />
        </bean>
      4. 要记住,当一个视图解析器找不到合适的视图时,它可能 返回null值。 但是,不是每个解析器都这么做。这是因为,在某些情况下,解析器可能无法侦测出符合要求的视图是否存在。 比如,InternalResourceViewResolver在内部调用了RequestDispatcher。 请求分发是检查一个JSP文件是否存在的唯一方法,不幸的是,这个方法只能用一次。 同样的问题在VelocityViewResolver和其它解析器中也有。 当使用这些解析器时,最好仔细阅读它们的Javadoc,看看需要的解析器是否无法发现不存在的视图。 这个问题产生的副作用是,如果InternalResourceViewResolver解析器没有放在链的末端, InternalResourceViewResolver后面的那些解析器根本得不到使用, 因为InternalResourceViewResolver总是返回一个视图!
    4. InternalResourceView
      1. 配置InternalResourceViewResolver时可以指定一个viewClass,prefix,suffix,没错,就是他们,先说prefix,suffix,我们看到了它会分别添加到viewName的前后,组成视图的URL。
      2. 那个viewClass呢就是视图的class对象类型了。会发现在我们没有指定的情况下默认是JstlView哦
  • 相关阅读:
    SQL Server 作业的备份
    SQL Server 非sysadmin调用扩展函数
    SQL Server 性能调优(io)
    What is allocation bottleneck?
    SQL Server 2008 性能调优 optimize for ad hoc workloads
    执行计划的缓存
    sql server 2000 sp3 数据库复制 修改sp_MSget_repl_commands
    Xcode4.5出现时的OC新语法
    NSZombieEnabled ,解决EXC_BAD_ACCESS错误的一种方法
    有关View的几个基础知识点IOS开发
  • 原文地址:https://www.cnblogs.com/jiangtao1218/p/10204861.html
Copyright © 2011-2022 走看看