精华内容
下载资源
问答
  • 在这种情况下,共需要配置三个视图解析器,这里我选择了两个freemarkerViewResolver,一个internalResourceViewResolver,原因是internalRrsourceViewResolver只能选择一个,该视图解析器不会返回空,会返回...
    需求是项目中同时使用html,jsp,freemarker,即freemarker可以生成html,也可以直接渲染页面返回视图。
    在这种情况下,共需要配置三个视图解析器,这里我选择了两个freemarkerViewResolver,一个internalResourceViewResolver,原因是internalRrsourceViewResolver只能选择一个,该视图解析器不会返回空,会返回一个默认值,也就是说在找不到视图的情况下,会直接报404而不是进入下一级视图解析器,所以针对该视图解析器我们直接配置Ordered.LOWEST_PRECEDENCE即可。
    下面是下我的demo:
    @Bean
    public FreeMarkerConfigurer freeMarkerConfigurer(){
        FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer();
        //freeMarkerConfigurer.setTemplateLoaderPath("WEB-INF/ftl");
        freeMarkerConfigurer.setDefaultEncoding("UTF-8");
        freeMarkerConfigurer.setFreemarkerVariables(Collections.singletonMap("xml_escape",xmlEscape()));
        //这里需要设为空,前缀分别在html和freemarker视图解析器中设置即可,不需要在这里设置
        freeMarkerConfigurer.setTemplateLoaderPath("");
        Properties properties = new Properties();
        properties.setProperty("locale","zh_CN");
        properties.setProperty("datetime_format","yyyy-MM-dd HH:mm:SS");
        properties.setProperty("date_format","yyyy-MM-dd");
        properties.setProperty("number_format","#.##");
        //设置模板刷新时间,为0时不从缓存读取
        properties.setProperty("template_update_delay","30000");
        freeMarkerConfigurer.setFreemarkerSettings(properties);
        return freeMarkerConfigurer;
    }
    
    /**
     * 转义字符支持
     * @return 转义字符支持类
     */
    private XmlEscape xmlEscape(){
        return new XmlEscape();
    }
    
    /**
     * html视图解析器
     * @return InternalResourceViewResolver
     */
    @Bean
    public FreeMarkerViewResolver htmlViewResolver(){
        FreeMarkerViewResolver htmlViewResolver = new FreeMarkerViewResolver();
        htmlViewResolver.setPrefix("WEB-INF/views/html/");
        htmlViewResolver.setSuffix(".html");
        htmlViewResolver.setOrder(Ordered.HIGHEST_PRECEDENCE);
        htmlViewResolver.setContentType("text/html;charset=UTF-8");
        return htmlViewResolver;
    }
    
    /**
     * freemarker视图解析器
     * @return FreeMarkerViewResolver
     */
    @Bean
    public FreeMarkerViewResolver freeMarkerViewResolver(){
        FreeMarkerViewResolver freeMarkerViewResolver = new FreeMarkerViewResolver();
        freeMarkerViewResolver.setPrefix("WEB-INF/views/ftl/");
        freeMarkerViewResolver.setSuffix(".ftl");
        freeMarkerViewResolver.setCache(true);
        freeMarkerViewResolver.setContentType("text/html;charset=UTF-8");
        freeMarkerViewResolver.setOrder(2);
        return freeMarkerViewResolver;
    }
    
    /**
     * jsp视图解析器
     * @return InternalResourceViewResolver
     */
    @Bean
    public InternalResourceViewResolver jspViewResolver(){
        InternalResourceViewResolver jspViewResolver = new InternalResourceViewResolver();
        jspViewResolver.setViewClass(JstlView.class);
        jspViewResolver.setPrefix("WEB-INF/views/jsp/");
        jspViewResolver.setSuffix(".jsp");
        jspViewResolver.setOrder(Ordered.LOWEST_PRECEDENCE);
        return jspViewResolver;
    }
    **重点是freeMarkerConfigurer.setTemplateLoaderPath("");**
    如果不写这项配置则html和freemarker视图解析器匹配一定会失败,一定要设置路径,这里设置为空,前缀在html和freemarker视图解析器中配置即可。
    
    展开全文
  • springboot视图解析器配置

    千次阅读 2020-03-24 16:28:46
    Springboot视图解析器配置 #spring.thymeleaf.cache = true #启用模板缓存。 #spring.thymeleaf.check-template = true #在呈现模板之前检查模板是否存在。 #spring.thymeleaf.check-template-location = true #...

    Springboot视图解析器配置
    #spring.thymeleaf.cache = true #启用模板缓存。
    #spring.thymeleaf.check-template = true #在呈现模板之前检查模板是否存在。
    #spring.thymeleaf.check-template-location = true #检查模板位置是否存在。
    #spring.thymeleaf.content-type = text / html #Content-Type值。
    #spring.thymeleaf.enabled = true #启用MVC Thymeleaf视图分辨率。
    #spring.thymeleaf.encoding = UTF-8 #模板编码。
    #spring.thymeleaf.excluded-view-names = #应该从解决方案中排除的视图名称的逗号分隔列表。
    #spring.thymeleaf.mode = HTML5 #应用于模板的模板模式。另请参见StandardTemplateModeHandlers。
    #spring.thymeleaf.prefix = classpath:/ templates / #在构建URL时预先查看名称的前缀。
    #spring.thymeleaf.suffix = .html #构建URL时附加到查看名称的后缀。
    #spring.thymeleaf.template-resolver-order = #链中模板解析器的顺序。
    #spring.thymeleaf.view-names = #可以解析的视图名称的逗号分隔列表。/ templates / #在构建URL时先查看名称的前缀。
    #spring.thymeleaf.suffix = .html #构建URL时附加到查看名称的后缀。
    #spring.thymeleaf.template-resolver-order = #链中模板解析器的顺序。
    #spring.thymeleaf.view-names = #可以解析的视图名称的逗号分隔列表。/ templates / #在构建URL时先查看名称的前缀。
    #spring.thymeleaf.suffix = .html #构建URL时附加到查看名称的后缀。
    #spring.thymeleaf.template-resolver-order = #链中模板解析器的顺序。
    #spring.thymeleaf.view-names = #可以解析的视图名称的逗号分隔列表。

    展开全文
  • Spring MVC 多个视图解析器配置

    万次阅读 2016-04-14 09:34:59
    背景: 在web开发中,我们在前端通常使用视图来...在Spring MVC应用程序中,常用的视图解析器有InternalResourceViewResolver、ResourceBundleViewResolver和XmlViewResolver等。 问题一: 那么,在程序中怎么配置JSP、XM

    背景:

    在web开发中,我们在前端通常使用视图来展示我的数据模型,常用的视图有JSP、XML、JSON、velocity、FreeMarker等。在Spring MVC应用程序中,常用的视图解析器有InternalResourceViewResolver、ResourceBundleViewResolver和XmlViewResolver等。

    问题一:

    那么,在程序中怎么配置JSP、XML、JSON、velocity、FreeMarker他们的解析器呢?

    解决方法:

    <!-- jsp视图解析器 -->  
    <!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/jsp/" p:suffix=".jsp" /> -->
    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>  
        <property name="prefix" value="/jsp/"/>  
        <property name="suffix" value=".jsp"/>  
    </bean>          
    
    <!-- velocity视图解析器 -->  
    <bean id="velocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">  
        <property name="cache" value="true"/>  
        <property name="prefix" value="/velocity/"/>  
        <property name="suffix" value=".vm"/>  
    </bean>  
    
    <!-- velocity环境配置 -->  
    <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">  
        <!-- velocity配置文件路径 -->  
        <property name="configLocation" value="/WEB-INF/velocity.properties"/>  
        <!-- velocity模板路径 -->  
        <property name="resourceLoaderPath" value="/WEB-INF/velocity/"/>  
    </bean>  
    
    <!-- FreeMarker环境配置 -->  
    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">  
        <!-- freemarker模板位置 -->  
        <property name="templateLoaderPath" value="/WEB-INF/freemarker/"/>  
    </bean>  
    
    <!-- FreeMarker视图解析 -->  
    <bean id="freeMarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">  
        <property name="cache" value="true"/>  
        <property name="prefix" value="/freemaker/"/>  
        <property name="suffix" value=".ftl"/>  
    </bean>  
    
    <!-- Json视图解析 -->  
    <bean name="jsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
        <property name="encoding">
            <value type="org.codehaus.jackson.JsonEncoding">UTF8</value>
        </property>
        <property name="extractValueFromSingleKeyModel" value="true"></property>
        <property name="contentType" value="application/json;charset=UTF-8" />
    </bean>
    
    <!-- xml jaxb视图解析 -->  
    <bean id="xmlViewer" class="org.springframework.web.servlet.view.xml.MarshallingView">
        <constructor-arg>
          <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
            <property name="classesToBeBound">
                <list>
                </list>
            </property>
          </bean>
        </constructor-arg>
        <property name="contentType" value="application/xml;charset=UTF-8" />
    </bean>
    
    <!-- xml Xstream视图解析 -->  
    <bean id="xmlViewer" class="org.springframework.web.servlet.view.xml.MarshallingView">
        <property name="xStreamMarshaller">
            <bean class="org.springframework.oxm.xstream.XStreamMarshaller">
            <!-- 启用annotation -->
            <property name="autodetectAnnotations" value="true" />
            <!-- 支持在dto列表 -->
            <property name="supportedClasses"><array></array></property>
        </property>
    </bean>
    
    <!-- 文件上传 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--1024**1024*5即5M-->
        <property name="maxUploadSize" value="5242880"/>
    </bean>
    

    问题二:

    如果想用多个视图解析器,那么又怎么配置呢?

    解决方法一:

    在问题一解决方法的配置中,通过“order”属性来声明优先级,order值越低,则优先级越高。例如:

    <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
        <property name="basename">
            <value>spring-views</value>
        </property>
        <property name="order" value="0" />
    </bean>
    
    <bean class="org.springframework.web.servlet.view.XmlViewResolver">
        <property name="location">
            <value>/WEB-INF/spring-views.xml</value>
        </property>
        <property name="order" value="1" />
    </bean>
    
    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
        <property name="prefix">
            <value>/WEB-INF/pages/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
        <property name="order" value="2" />
    </bean>

    注意:InternalResourceViewResolver必须总是赋予最低的优先级(最大的order值),因为不管返回什么视图名称,它都将解析视图。如果它的优先级高于其它解析器的优先级的话,它将使得其它具有较低优先级的解析器没有机会解析视图。

    解决方法二: 使用org.springframework.web.servlet.view.ContentNegotiatingViewResolver进行配置,如下:

     <!-- 多视图解析 .json .xml -->
    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <property name="order" value="1" />
        <!-- 用于开启 /userinfo/123?format=json 的支持 默认是true -->
        <property name="favorParameter" value="false" />
        <!-- 用于关闭 /userinfo/123.json 的支持 默认是true -->
        <property name="favorPathExtension" value="true" />
        <!-- 设置为true以忽略对Accept Header的支持 -->
        <property name="ignoreAcceptHeader" value="true" />
        <!-- 在没有扩展名时即: "/user/1" 时的默认展现形式 -->
        <property name="defaultContentType" value="text/html" />
        <!-- 扩展名至mimeType的映射,即 /user.json => application/json -->
        <property name="mediaTypes">
            <map>
                <entry key="json" value="application/json" />
                <entry key="xml" value="application/xml" />
            </map>
        </property>
        <property name="defaultViews">
            <list>
              <ref bean="jsonView" />
              <ref bean="xmlViewer" />
            </list>
        </property>
    </bean>
    
    <!-- json 视图 -->
    <bean name="jsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
        <property name="encoding">
            <value type="org.codehaus.jackson.JsonEncoding">UTF8</value>
        </property>
        <property name="extractValueFromSingleKeyModel" value="true"></property>
        <property name="contentType" value="application/json;charset=UTF-8" />
    </bean>
    
    <!-- xml 视图 -->
    <bean id="xmlViewer" class="org.springframework.web.servlet.view.xml.MarshallingView">
        <constructor-arg>
          <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
            <property name="classesToBeBound">
                <list>
                </list>
            </property>
          </bean>
        </constructor-arg>
        <property name="contentType" value="application/xml;charset=UTF-8" />
    </bean>
    展开全文
  • 在Spring MVC应用程序中,我们经常需要应用一些视图解析器策略来解析视图名称。例如,联合使用三个视图解析器:InternalResourceViewResolver、ResourceBundleViewResolver和XmlViewResolver。 但是,如果返回了...

    在Spring MVC应用程序中,我们经常需要应用一些视图解析器策略来解析视图名称。例如,联合使用三个视图解析器:InternalResourceViewResolver、ResourceBundleViewResolver和XmlViewResolver。

    但是,如果返回了一个视图的名称,那么,使用哪一个视图解析器策略?

    解决方法

    如果应用了多个视图解析器策略,那么就必须通过“order”属性来声明优先级,order值越低,则优先级越高。例如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <?xml version= "1.0"  encoding= "UTF-8"  ?>
            xmlns:context= "http://www.springframework.org/schema/context"
            xmlns:mvc= "http://www.springframework.org/schema/mvc"
            xsi:schemaLocation="http: //www.springframework.org/schema/beans
            http: //www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http: //www.springframework.org/schema/context
            http: //www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
     
         <!-- 扫描web包,应用Spring的注解 -->
         <context:component-scan base- package = "com.xxx.training" />
     
     
         <bean  class = "org.springframework.web.servlet.view.ResourceBundleViewResolver" >
             <property name= "basename" >
                 <value>spring-views</value>
             </property>
             <property name= "order"  value= "0"  />
         </bean>
     
         <bean  class = "org.springframework.web.servlet.view.XmlViewResolver" >
             <property name= "location" >
                 <value>/WEB-INF/spring-views.xml</value>
             </property>
             <property name= "order"  value= "1"  />
         </bean>
     
         <bean id= "viewResolver"
               class = "org.springframework.web.servlet.view.InternalResourceViewResolver"  >
             <property name= "prefix" >
                 <value>/WEB-INF/pages/</value>
             </property>
             <property name= "suffix" >
                 <value>.jsp</value>
             </property>
             <property name= "order"  value= "2"  />
         </bean>
     
    </beans>

      注意:InternalResourceViewResolver必须总是赋予最低的优先级(最大的order值),因为不管返回什么视图名称,它都将解析视图。如果它的优先级高于其它解析器的优先级的话,它将使得其它具有较低优先级的解析器没有机会解析视图。

    转载:http://www.cnblogs.com/rollenholt/archive/2012/12/27/2836035.html

    展开全文
  • SpringMVC 多视图解析器配置

    千次阅读 2018-08-07 16:55:23
    SpringMVC模式可以通过如下配置来支持多视图解析:   在spring 中,常用的ViewResolver 有如下几种: InternalResourceViewResolver 将逻辑视图名字解析为一个路径 BeanNameViewResolver 将逻辑视图名字...
  • springmvc同时配置html和jsp视图解析器

    千次阅读 2019-01-04 08:52:15
    首先说一下环境:jdk1.8+tomcatt8.5.35+mysql5.7.24+springmvc5.1.3 方式一: 使用freemaker作为html视图解析器,InternalResourcceViewResolver作为jsp的视图解析...另外配置freemaker的html视图解析器之前需...
  • spring mvc配置视图解析器跳转html

    千次阅读 2019-08-07 19:46:00
    spring mvc配置视图解析器跳转html跳转jsp跳转html 跳转jsp 跳转jsp的视图解析器非常简单,在spring mvc的xml文件中加入: <!-- 视图页面配置 --> <bean class="org.springframework.web.servlet.view....
  • springmvc html视图解析器配置参考

    千次阅读 2018-02-08 17:49:52
    http://www.cnblogs.com/porcoGT/p/4537064.html?utm_source=tuicool&utm_medium=referral
  • SpringMVC 多视图解析器配置以及问题

    千次阅读 2016-12-22 09:49:44
    在SpringMVC模式当中可以通过如下配置来支持多视图解析
  • FreeMarker视图解析器配置

    千次阅读 2015-02-26 11:18:40
    <!-- 配置Freemarker屬性文件路徑 --> <!-- 配置freeMarker模板加載地址...-- 配置freeMarker視圖解析器 --> <property name="contentType" value="text/html; charset=UTF-8"/>
  • 配置springmvc的时候,由于视图解析器prefix 路径配置前少加了一个斜杠“/” , 导致jsp请求寻找资源的时候前面多出现了一层路径即: 我请求的路径是spring/login.do本应该到 views目录下寻找login.jsp, 但由于...
  • pom.xml添加的依赖applicationContext-spring.xml中配置freemarkerConfigspringmvc-servlet.xml中配置视图解析器注意 为什么现在不流行jsp页面,而流行纯html页面? 首先,前端开发人员将开发好的html模板交给后端...
  • springMVC配置视图解析器

    千次阅读 2017-08-22 10:53:47
    视图解析器
  • 一、Spring MVC视图解析器 视图解析器的工作流程大致是这样的:Controller的某个方法执行完成以后,返回一个视图(比如:listUser),视图解析器要做的工作就是找到某个对象 来完成视图的渲染,或者跳转到其他的...
  • 一、从freemarker谈起 Freemarker使用模板技术进行视图的渲染。自从看了Struts标签、Freemarker、...只需要配置一个针对Freemarker的视图解析器即可。   二、Spring MVC视图解析器 视图解析器的工作流程大
  • springBoot配置视图解析器

    千次阅读 2020-03-17 15:57:29
    1.直接写一个配置类继承WebMvcConfigurerAdapter即可 具体代码如下: package com.boot.zhiyi.config; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; ...
  • 在SpringMVC模式当中可以通过如下配置来支持多视图解析 首先可以使用order属性进行设置 系统首先按解析器的order值进
  • 通过入门程序理解springmvc前端控制器、处理器映射器、处理器适配器、视图解析器用法。 前端控制器配置: 第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析 第二种:/,所以访问的地址都由...
  • SpringMvc同时配置jsp和html视图解析器

    千次阅读 热门讨论 2018-12-20 14:53:48
    SpringMvc同时配置jsp和html视图解析器 1、首先引入freemarker的jar包。 &amp;amp;amp;amp;lt;dependency&amp;amp;amp;amp;gt; &amp;amp;amp;amp;lt;groupId&amp;amp;amp;amp;gt;org....
  • 视图解析器

    千次阅读 2018-08-20 10:13:23
    ·SpringMVC 使用ViewResource 进行视图解析,在浏览器中渲染模型  ·ViewResolver 能够解析JSP、Velocity 模版和XSLT 等多种视图 ·处理视图最重要的两个接口:  ·ViewResolver接口在视图...常见的视图解析器...
  • 配置jsp视图解析器<!-- spring-mvc jsp视图解析器 --> class="org.springframework.web.servlet.view.InternalResourceViewResolver"> valu
  • Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。...通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如
  • 视图解析器是MVC 的V(视图)环节。这个环节在Spring 中的最主要体现在与如何将模型数据与视图进行绑定渲染? 切入点追踪Controller 首先我们从最简单的控制器开始,如下是我们的控制器代码 这个控制器返回了...
  • 配置SpringMVC中的视图解析器

    万次阅读 2018-09-20 10:50:15
    视图解析器的作用: 就是当 DispatcherServlet将ModelAndView传递给视图解析器的时候,将ModelAndView数据填充到相应的视图中,然后返回一个带有数据的视图给DispatcherServlet. 视图解析其中有个抽象类: ...
  • 因项目要求,需要同时支持html和jsp页面,所以在springboot的基础上配置视图解析器。 重点在于,抛开原来的resources目录结构层,这层只放application.properties文件和logback-spring.xml文件 将html和jsp统一...
  • --多个视图解析器--&gt; &lt;bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"&gt; &lt;property name="...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 86,246
精华内容 34,498
关键字:

视图解析器配置html