精华内容
下载资源
问答
  • 在这种情况下,共需要配置三个视图解析器,这里我选择了两个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视图解析器中配置即可。
    
    展开全文
  • 结构.png网上提供的很多办法,都是说修改order 来设置解析器的优先级,但是经尝试,发现此办法行不通,html和jsp配置同样的优先级,jsp视图解析器还是无法解析jsp,而且网上的很多配置文件写法...

    在开发过程中,我们再做页面处理时,有时候可能需要两种或者两种以上的视图解析方式,比如 jsp、html、jstl等等,SpringMVC默认只配置一种视图解析方式,但是却提供了配置多视图解析的方式。

    结构.png

    网上提供的很多办法,都是说修改order 来设置解析器的优先级,但是经尝试,发现此办法行不通,html和jsp配置同样的优先级,jsp视图解析器还是无法解析jsp,而且网上的很多配置文件写法大有问题,所以先贴下配置部分:

    class="org.springframework.web.servlet.view.InternalResourceViewResolver">

    value="com.ccb.ipsp.controller.todo.HtmlResourceView" />

    class="org.springframework.web.servlet.view.InternalResourceViewResolver">

    我们细看,可以发现htmlViewResolver视图解析器的viewClass值有些奇怪,这是因为我们需要新建一个html的解析器,该解析器要继承 InternalResourceView 并且重写 checkResource方法,代码:

    package com.ccb.ipsp.controller.todo;

    import java.io.File;

    import java.util.Locale;

    import org.springframework.web.servlet.view.InternalResourceView;

    public class HtmlResourceView extends InternalResourceView{

    @Override

    public boolean checkResource(Locale locale){

    File file = new File(this.getServletContext().getRealPath("/")+getUrl());

    return file.exists();

    }

    }

    经此配置,就可检验是否两种视图解析器都配置成功啦,TestView代码:

    package com.ccb.ipsp.controller.todo;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    import org.springframework.stereotype.Controller;

    import org.springframework.web.bind.annotation.RequestMapping;

    import org.springframework.web.bind.annotation.ResponseBody;

    import org.springframework.web.servlet.ModelAndView;

    import com.ccb.ipsp.model.todo.Url;

    /**

    * 界面测试请求Test

    * @author guxf

    *

    */

    @Controller

    @RequestMapping("/tooo")

    public class ToDoView {

    @ResponseBody

    @RequestMapping(value = "/regi") // 办事通用户查询接口

    public ModelAndView view(HttpServletRequest request, HttpServletResponse response) throws Exception {

    ModelAndView mv = null;

    try {

    System.err.println("888888");

    mv = new ModelAndView();

    Url url = new Url();

    url.setUrl("www.baidu.com");

    mv.addObject("url", url);

    System.err.println("跳转regist————");

    mv.setViewName("regist"); // 出现异常则跳转错误页面

    } catch (Exception e) {

    mv = new ModelAndView();

    System.err.println("跳转errorpage————");

    mv.setViewName("errorpage"); // 出现异常则跳转错误页面

    }

    return mv;

    }

    @ResponseBody

    @RequestMapping(value = "/page") // 办事通用户查询接口

    public ModelAndView pageView(HttpServletRequest request, HttpServletResponse response) throws Exception {

    ModelAndView mv = null;

    try {

    System.err.println("999999");

    mv = new ModelAndView();

    System.err.println("跳转page————");

    mv.setViewName("page1"); // 出现异常则跳转错误页面

    } catch (Exception e) {

    mv = new ModelAndView();

    System.err.println("跳转errorpage————");

    mv.setViewName("errorpage"); // 出现异常则跳转错误页面

    }

    return mv;

    }

    }

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

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


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

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

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

    <?xml version="1.0" encoding="UTF-8" ?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
           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>
    1.  

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

    展开全文
  • 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....

    spring mvc配置视图解析器跳转html

    跳转jsp

    跳转jsp的视图解析器非常简单,在spring mvc的xml文件中加入:

    	<!-- 视图页面配置 -->
    	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    	    <property name="prefix">
    	        <value>/WEB-INF/views/</value>
    	    </property>
    	    <property name="suffix">
    	        <value>.jsp</value>
    	    </property>
    	</bean>
    

    然后控制器:

    @Controller
    public class UserController {
    	@RequestMapping(value="login")
    	public String index() {
    		return "login";
    	}
    }
    

    就可以访问webapp/WEB-INF/views/login.jsp了

    跳转html

    	<!-- 视图页面配置 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix">
                <value>/WEB-INF/views/</value>
            </property>
            <property name="suffix">
                <value>.html</value>
            </property>
        </bean>
        <!-- 配置静态资源 -->
        <mvc:default-servlet-handler/>
    

    配置静态资源是必须的,否则spring mvc会把**.html文件当成是一个请求,上面的跳转jsp不需要配置是因为tomcat默认把jsp文件当成是静态资源

    展开全文
  • 1、maven项目引入freemark相关jar包freemaker...所以在返回html视图时可以用这个引擎结合数据生成html静态页面。org.springframeworkspring-context-support5.0.7.RELEASEorg.freemarkerfreemarker2.3.28注意freema...
  • 原文:https://www.cnblogs.com/liyafei/p/7955943.html1:springboot使用视图解析器,添加依赖org.springframework.bootspring-boot-starter-freemarkerorg.springframework.bootspring-boot-devtoolstrueorg....
  • 目录 1、maven项目引入freemark相关jar包 2、freemarker.properties 3、配置视图解析器 ...参考自springMVC配置jsp、html视图解析器,本文稍作补充 1、maven项目引入freemark相关jar包 freemaker是...
  • http://www.cnblogs.com/porcoGT/p/4537064.html?utm_source=tuicool&utm_medium=referral
  • 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视图解析器之前需...
  • 视图解析器的作用根据返回的逻辑视图找到对应的物理视图,并且将其封装成一个View对象,由视图渲染器进行视图的渲染最终展现给用户ViewResolver 接口 根据视图的名称将其解析为 View 类型的视图,如通过 ...
  • 1、maven项目引入freemark相关jar包freemaker...所以在返回html视图时可以用这个引擎结合数据生成html静态页面。org.springframeworkspring-context-support5.0.7.RELEASEorg.freemarkerfreemarker2.3.28注意freema...
  • 1、问题:假设我有两个jsp:WEB-INF/html/a.jspWEB-INF/report/b.jsp且我配置视图解析器:然后呢,我分别返回视图名为a和b;为什么a能找到,而b的时候是404;我配置了两个视图解析器,第一个找不到的话,第二个能...
  • pom.xml添加的依赖applicationContext-spring.xml中配置freemarkerConfigspringmvc-servlet.xml中配置视图解析器注意 为什么现在不流行jsp页面,而流行纯html页面? 首先,前端开发人员将开发好的html模板交给后端...
  • 配置视图解析器

    2018-10-09 16:18:00
    有些java框架系统开始...可以在spring-mvc文件中增加视图解析器 <bean id='htmlviewResolver' class='org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver' p:suffix=".html" p:orde...
  • spring MVC + Mybitis),展示层本来选用的是jsp,各方便都已经搭建好,结果发现有些页面需要用到H5的一些功能,所以展示层需要用到Html,而自己又比较熟悉jsp,所以决定使用多视图解析器。本篇先来介绍框架内配置多...
  • 在开发过程中,我们再做页面处理时,有...网上提供的很多办法,都是说修改order 来设置解析器的优先级,但是经尝试,发现此办法行不通,html和jsp配置同样的优先级,jsp视图解析器还是无法解析jsp,而且网上的很多...
  • 当Action返回的是一个真实路径的时候,视图解析器可不进行配置 当Action返回的是逻辑路径的时候,我们必须要在配置文件中注册视图解析器并为该逻辑路径添加前缀和后缀 转载于:...
  • 因项目要求,需要同时支持html和jsp页面,所以在springboot的基础上配置视图解析器。 重点在于,抛开原来的resources目录结构层,这层只放application.properties文件和logback-spring.xml文件 将html和jsp统一...
  • 重新研究了下,这里介绍了了同时配置velocity和html和jsp三种模板视图解析器。 详细配置方法见代码: <!-- 3:配置多个ViewResolver视图解析 --> <!-- 3.1 配置velocity的配置信息 --> ...
  • InternalResourceViewResolver:这是一个最常用的解析器。通常使用它指定渲染对象为jsp页面 FreeMarkerViewResolver:这就是Spring与Freemarker整合需要用到的解析器 参考:...
  • 在spring-mvc.xml中配置:使用order属性来决定解析器的优先级(数值越小,优先级越高) <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <...
  • -- html视图解析器 必须先配置freemarkerConfig,注意html是没有prefix前缀属性的--> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> ...
  • 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....
  • --多个视图解析器--&gt; &lt;bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"&gt; &lt;property name="...
  • SpringMVC配置解析html视图解析器.

    千次阅读 2017-12-29 16:00:54
    -- html视图解析器 必须先配置freemarkerConfig,注意html是没有prefix前缀属性的-->        <value>/WEB-INF/views/            class="org.springframework.web.servlet.view....
  • spring4.2完整web项目(使用html视图解析器) http://www.cnblogs.com/porcoGT/p/4537064.html 之前是没配置依赖 org.springframework spring-context 4.2.0.BUILD-SNAPSHOT 报错 Error creating bean ...
  • 基于前后端分离的项目,是不用后端模板引擎的,所以什么以.jsp,.vm结尾的模板引擎也是用不了的,前端开发做好的项目用webpack打包之后放在了后端项目里面,直接配置html视图解析器,然后放心给所有静态资源,这样就...
  • -- html视图解析器 必须先配置freemarkerConfig,注意html是没有prefix前缀属性的 --> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 563
精华内容 225
关键字:

视图解析器配置html