博客
关于我
配置SpringMVC中的视图解析器
阅读量:486 次
发布时间:2019-03-07

本文共 1659 字,大约阅读时间需要 5 分钟。

视图解析器详解

在Spring MVC开发中,视图解析器是将逻辑视图转换为实际使用的视图文件(如HTML、XML等)的重要组件。本文将详细介绍两种常用的视图解析器:InternalResourceViewResolver 和 FreeMarkerViewResolver,并展示它们的配置与使用方法。

一、InternalResourceViewResolver配置与使用

配置方法:

在Spring MVC的配置文件中(通常为application-servlet.xml),添加如下的Bean配置:

使用示例:

在控制器方法中,使用以下代码来设置视图名:

modelAndView.setViewName("/fruitsList");

特点说明:

  • 简化视图配置: 通过设置prefix和suffix,可以直接在控制器中调用视图名,无需显式定义前缀和后缀。
  • 缓存机制: InternalResourceViewResolver 继承自 AbstractCachingViewResolver,能够缓存已解析的视图,避免重复劳动。
  • 默认路径:,默认将视图文件存放在 /WEB-INF/jsp 目录下,这符合Spring MVC的标准部署方式。
  • 二、FreeMarkerViewResolver配置与使用

    配置方法:

    在Spring MVC的配置文件中添加如下Bean定义:

    使用示例:

    在控制器中设置模板视图名:

    modelAndView.setViewName("fruit");

    特点说明:

  • 模板驱动: FreeMarkerViewResolver 支持使用Freemarker模板,通过逻辑视图名(如ftl:Dashboard)加载对应的模板文件(如/WEB-INF/freemarker/Dashboard.ftl)。
  • 灵活性高: 模板文件可生成任何格式(如HTML、XML、Java源码等),适用于多种应用场景。
  • 配置详细: 需要配置模板路径和依赖库,使FreeMarker能够正确解析模板文件。
  • 模板文件路径示例

    需要在${project}/WEB-INF/freemarker目录下创建对应的模板文件。例如:

    /WEB-INF/freemarker/fm_fruit.ftl

    Maven依赖配置

    确保项目依赖了必要的FreeMarker库和Spring容器支持:

    org.springframework
    spring-context-support
    4.3.6.RELEASE
    org.freemarker
    freemarker
    2.3.28

    技术总结

  • InternalResourceViewResolver: 适用于传统的静态JSP视图配置,缓存机制有效。
  • FreeMarkerViewResolver: 适用于动态模板生成,适合需要灵活视图文件处理的场景。
  • 模板开发建议:
    • 保存模板文件在/WEB-INF/freemarker目录下。
    • 使用Freemarker模板定义数据协议,确保模板与后端模型兼容。
    • 可视根据需求选择模板引擎或其他生成工具,以提升开发效率。
  • 两种视图解析器各有特点,选择时需结合项目需求和开发习惯。FreeMarkerViewResolver的模板驱动功能使其适合需要灵活视图生成的场景,而InternalResourceViewResolver的配置简便性则适合传统JSP开发。

    转载地址:http://wvucz.baihongyu.com/

    你可能感兴趣的文章
    python---使用celery分布式系统异步发送短信(云通讯)来验证登录
    查看>>
    python--003--百分号字符串拼接、format
    查看>>
    Python--10、线程
    查看>>
    Python--Redis实战:第四章:数据安全与性能保障:第4节:复制
    查看>>
    python--基本代码规范
    查看>>
    Python--抽象类接口类
    查看>>
    PYTHON--欧拉习题二
    查看>>
    python--高级应用总结
    查看>>
    python-520表白代码,我看谁说程序员不懂浪漫,送你几套表白代码,一步到位
    查看>>
    Python-Asyncio TypeError:无法在‘;等待‘;表达式中使用对象DICT
    查看>>
    Python-AttributeError:‘;dict&39;对象没有属性‘;序列‘;
    查看>>
    Python-ldap:是否可以在不显式写入密码的情况下进行绑定?
    查看>>
    python出现 unknown encoding: idna 的处理方法
    查看>>
    Python出现 RuntimeError: dictionary changed size during iteration 的解决方法
    查看>>
    Python-numpy(2)数组的操作
    查看>>
    Python-Numpy的tile函数用法
    查看>>
    python-open函数
    查看>>
    Python-Pandas-将特定函数应用于给定级别-多索引数据框架
    查看>>
    python-queue队列通信
    查看>>
    python-ros No module named PyKDL
    查看>>