精华内容
下载资源
问答
  • springMVC多视图解析器配置
    2018-08-30 16:03:37
    需求是项目中同时使用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视图解析器ViewResolver使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 本篇文章主要介绍了浅谈SpringMVC之视图解析器(ViewResolver),具有一定的参考价值,有兴趣的可以了解一下
  • SpringMVC 多视图解析器配置

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

    SpringMVC模式可以通过如下配置来支持多视图解析:

     

    在spring 中,常用的ViewResolver 有如下几种:

    InternalResourceViewResolver将逻辑视图名字解析为一个路径
    BeanNameViewResolver将逻辑视图名字解析为bean的Name属性,从而根据name属性,找定义View的bean
    ResourceBundleResolver和BeanNameViewResolver一样,只不过定义的view-bean都在一个properties文件中,用这个类进行加载这个properties文件
    XmlViewResolver和ResourceBundleResolver一样,只不过定义的view-bean在一个xml文件中,用这个类来加载xml文件

    一、同一类型的页面(jsp)

    1 WEB-INF/A/a.jsp  

    2 WEB-INF/B/b.jsp  

    配置了视图解析器:
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >  
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>  
        <property name="contentType" value="text/html"/>  
        <property name="prefix" value="/WEB-INF/A/"/>  
        <property name="suffix" value=".jsp"/>  
        //意思是对A或B开头的视图名进行处理,比如返回的视图名为A/a 那么会交给viewNames为A*的那个解析器处理
        <property name="viewNames" value="A*"/>
        <property name="order" value="0"></property>
    </bean>  
      
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >  
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>  
        <property name="contentType" value="text/html"/>  
        <property name="prefix" value="/WEB-INF/B/"/>  
        <property name="suffix" value=".jsp"/>  
        //意思是对A或B开头的视图名进行处理,比如返回的视图名为B/b 那么会交给viewNames为B*的那个解析器处理
        <property name="viewNames" value="B*"/>
        <property name="order" value="1"></property>
    </bean>

     

    二、不同类型的页面


     <!-- html视图解析器 先配置freemarkerConfig,html是没有prefix前缀属性的-->
        <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">  
            <property name="templateLoaderPath">  
                <value>/WEB-INF/view/html</value>  
            </property>  
        </bean>  
         <bean id="htmlviewResolver"  
            class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">  
            <property name="suffix" value=".html" /> 
            <property name="order" value="0"></property> 
            <property name="contentType" value="text/html;charset=UTF-8"></property>         
        </bean>
        
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">   
            <property name="prefix" value="/WEB-INF/view/jsp/" />
            <property name="suffix" value=".jsp" />
            <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView"/> <!-- 不能用jstl的那个 -->
            <property name="contentType" value="text/html;charset=UTF-8"/>
             <property name="order" value="0"></property>
        </bean>

        配置不同类型视图解析器的时候,InternalResourceViewResolver必须放在最后

    展开全文
  • Spring配置Freemarker视图解析器,配置视图解析器
  • SpringBoot官网推荐使用HTML视图解析器,但是根据个人的具体业务也有可能使用到JSP视图解析器,所以本文介绍了两种视图解析器,感兴趣的可以了解下
  • SpringMVC多视图解析器(jsp,html,title解析器)

    万次阅读 多人点赞 2017-02-22 16:36:29
    配置jsp视图解析器 class="org.springframework.web.servlet.view.InternalResourceViewResolver"> value="org.springframework.we

    配置jsp视图解析器

    <!-- spring-mvc jsp视图解析器 -->
        <bean id="viewResolver"
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="viewClass"
                value="org.springframework.web.servlet.view.JstlView"></property>
            <property name="prefix" value="/WEB-INF/views/"></property>
            <property name="suffix" value=".jsp"></property>
            <property name="order" value="2"></property>
        </bean>

    配置title视图解析器

    <!-- 配置tiles模板 -->
        <!-- tilesResolver -->
        <bean id="tilesConfigurer"
            class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
            <property name="definitions">
                <list>
                    <value>/WEB-INF/tiles.xml</value>
                </list>
            </property>
            <property name="preparerFactoryClass"
                value="org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory" />
        </bean>
        <!-- tiles视图解释器 -->
        <bean id="tilesViewResolver"
            class="org.springframework.web.servlet.view.UrlBasedViewResolver">
            <property name="order" value="1"></property>
            <property name="viewClass"
                value="org.springframework.web.servlet.view.tiles3.TilesView" />
        </bean>

    配置html解析器


        <!-- html视图解析器 必须先配置freemarkerConfig,注意html是没有prefix前缀属性的-->
        <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">  
            <property name="templateLoaderPath">  
                <value>/WEB-INF/views/</value>  
            </property>  
        </bean>  
         <bean id="htmlviewResolver"  
            class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">  
            <property name="suffix" value=".html" /> 
            <property name="order" value="0"></property> 
            <property name="contentType" value="text/html;charset=UTF-8"></property>         
        </bean>  

    1.注意配置html视图解析器时,出现了404错误,仔细了解 当一次请求是需要经过两次拦截器,即html–>拦截器–>controller–>拦截器—>html,其中如果按照下面配置,第一次请求拦截器是正确的,第二次拦截就包404错误。

      <bean id="viewResolver1"
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="viewClass"
                value="org.springframework.web.servlet.view.JstlView"></property>
            <property name="prefix" value="/WEB-INF/views/"></property>
            <property name="suffix" value=".html"></property>
            <property name="order" value="0"></property>
        </bean>

    解决方法有三种,
    
    1. 第一种,使用标题配置“html”视图解析器这样配置,个人推荐这种配置。注意这种配置html是没有前缀属性的,所以需要先配置freemarkerConfig,前缀保存在freemarkerConfig中。
    2. 第二种,在web.xml中加入下面代码,表示对静态资源.html不拦截。
       <servlet-mapping> 
            <servlet-name>default</servlet-name>
            <url-pattern>*.html</url-pattern>
        </servlet-mapping> 

    第三种,使用

    <mvc:resources location="/" mapping="/**/*.html"/>


    展开全文
  • 整合velocity和jsp 通过不同视图解析器,返回不同视图
  • springmvc配置多视图解析器

    千次阅读 2017-06-29 08:58:39
    ...要记住,当一个视图解析器找不到合适的视图时,它 可能  返回null值。 但是,不是每个解析器都这么做。这是因为,在某些情况下,解析器可能无法侦测出符合要求的视图是否存在。 比如, ...

    viewResolver的定义如下:

    public interface ViewResolver {  
       View resolveViewName(String viewName, Locale locale) throws Exception;  
    }

    在spring 中,常用的ViewResolver 有如下几种:

    InternalResourceViewResolver 将逻辑视图名字解析为一个路径
    BeanNameViewResolver 将逻辑视图名字解析为bean的Name属性,从而根据name属性,找定义View的bean
    ResourceBundleResolver 和BeanNameViewResolver一样,只不过定义的view-bean都在一个properties文件中,用这个类进行加载这个properties文件
    XmlViewResolver 和ResourceBundleResolver一样,只不过定义的view-bean在一个xml文件中,用这个类来加载xml文件

     

    当我们需要多个viewResolver的时候,spring 框架为我们提供了很好的支持,我们只要在[spring-dispatcher-name]-servlet.xml中定义多个ViewResolver就可以了。如:

    复制代码
    <!-- 定义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>
    复制代码

    DispatcherServlet会加载所有的viewResolver到一个list中,并按照优先级进行解析。

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

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

    PS:

    如果某个解析器没有找到合适的视图,Spring会在上下文中寻找是否配置了其它的解析器。 如果有,它会继续进行解析,否则,Srping会抛出一个Exception

    要记住,当一个视图解析器找不到合适的视图时,它可能 返回null值。 但是,不是每个解析器都这么做。这是因为,在某些情况下,解析器可能无法侦测出符合要求的视图是否存在。 比如,InternalResourceViewResolver在内部调用了RequestDispatcher。 请求分发是检查一个JSP文件是否存在的唯一方法,不幸的是,这个方法只能用一次。 同样的问题在VelocityViewResolver和其它解析器中也有。 当使用这些解析器时,最好仔细阅读它们的Javadoc,看看需要的解析器是否无法发现不存在的视图。 这个问题产生的副作用是,如果InternalResourceViewResolver解析器没有放在链的末端, InternalResourceViewResolver后面的那些解析器根本得不到使用, 因为InternalResourceViewResolver总是返回一个视图!


    原文传送门:http://www.cnblogs.com/tq03/p/4958301.html

    展开全文
  • ContentNegotiatingViewResolver可以根据请求所要求的MIME类型决定由那个视图解析器负责处理,即它允许以同样的内容数据来呈现不同的View(HTML、JSON、XML、XLS)。 例: /user/view.json?id=12(返回JSON格式的...
  • springmvc+多视图解析器+无法重定向

    千次阅读 2018-06-17 02:05:22
    当有视图文件夹的时候,配了几个对应的Resolver 但是重定向到controller的请求请求失败,报500错误,说是找不到”redirect:XXX”这个视图,我一直以为原因是,把引号里的整个当成了视图名造成的,结果根本搜不到解决...
  • 理解视图和视图解析器的解析流程、使用常用的InternalResourceView和JstlView、实现自定义视图、实现重定向操作
  • spring视图解析器 1.简介 在Spring中,提供了View Resolver来使用模型中可用的数据来解析视图,而无需与JSP,Velocity或Thymeleaf等View技术紧密绑定。 Spring可以根据需要轻松灵活地配置一个或个View ...
  • -- html视图解析器 必须先配置freemarkerConfig,注意html是没有prefix前缀属性的 --> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <...
  • springMVC配置jsp、html多视图解析器

    千次阅读 2018-05-26 14:54:02
    3、在spring-mvc.xml中添加视图解析器相关代码: <!-- spring-mvc jsp视图解析器 --> < bean id = "viewResolver" class = "org.springframework.web.servlet.view.InternalResourceViewResolver" > < ...
  • Spring MVC--5.视图和视图解析器
  •  SpringMVC用于处理视图最重要的两个接口是ViewResolver(视图解析器)和View(视图)。ViewResolver的主要作用是把一个逻辑上的视图名解析为一个真正的视图,解析的时候会向视图中填充模型数据。SpringMVC中用于把视图...
  • springboot视图解析器

    万次阅读 2020-06-05 21:53:14
    视图解析器:简单来说,将用户请求转到对应页面 配置方式一:application.properties #配置视图解析器 spring.mvc.view.prefix=/WEB-INF/pages/ spring.mvc.view.suffix=.jsp 方式二:Java类处理 import org....
  • 你知道的越,不知道的就越,业余的像一棵小草!你来,我们一起精进!你不来,我和你的竞争对手一起精进!编辑:业余草推荐:https://www.xttblog.com/?p=5140Sp...
  • SpringMVC 视图解析器

    千次阅读 2019-04-22 16:57:24
    1.视图解析器 会 根据 把控制器返回的逻辑视图名 确定渲染模型的视图文件的物理位置。 Spring MVC的一个重要特性:将控制器中处理请求的逻辑 和 视图中渲染实现 解耦。 控制器方法和视图实现 只会在模型内容上保持...
  • Spring MVC 视图解析器配置

    万次阅读 2016-04-14 09:34:59
    背景: 在web开发中,我们在前端通常使用视图来...在Spring MVC应用程序中,常用的视图解析器有InternalResourceViewResolver、ResourceBundleViewResolver和XmlViewResolver等。 问题一: 那么,在程序中怎么配置JSP、XM
  • 在SpringMVC模式当中可以通过如下配置来支持多视图解析 首先可以使用order属性进行设置 系统首先按解析器的order值进
  • Springboot配置视图解析器,项目同时有jsp和html

    万次阅读 热门讨论 2019-03-28 14:12:15
    废话有点。。大家谅解下啊,如果着急的话可以直接下拉到底部,上面是我的解决历程。。 这个问题一般是遇不到的,只怪我们项目是在奇葩。事情是这样的,我们先开发的项目要集成进去一个老项目,新项目用的是html,...
  • --配置 jsp 视图解析器--&gt; &lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="1"&gt; &lt;property name="viewClass&...
  • 因项目要求,需要同时支持html和jsp页面,所以在springboot的基础上配置双视图解析器。 重点在于,抛开原来的resources目录结构层,这层只放application.properties文件和logback-spring.xml文件 将html和jsp统一...
  • 近期看了点Spring boot的框架源码,研究了一下WEB Mvc的视图解析器,记录一下,以备以后查阅.如果认知错误,还请小伙伴指教讨论. ViewResolver 视图解析器
  • 本篇文章讲述了SpringMVC的视图是怎么进行解析的,讲解了视图、视图解析器以及常用的视图解析器实现类。
  • 提供了一种拼接 URL 的方式来解析视图。通过 prefix 属性指定前缀,suffix 属性指定后缀。当 ModelAndView 对象返回具体的 View 名称时,它会将前缀 prefix 和后缀 suffix 与具体的视图名称拼接,得到一个视图资源...
  • SpringMVC-视图和视图解析器

    千次阅读 2019-05-06 22:56:46
    视图(View)和视图解析器(ViewResolver)的工作流程: 当请求处理方法处理完请求之后,会返回String、ModelAndView、或View对象,如return “success”,但这三种返回值最终都会被SpringMVC统一转化为ModelAndView对象...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 214,782
精华内容 85,912
关键字:

多视图解析器