【Spring-MVC】视图解析器&&整合Freemarker

30 篇文章 1 订阅

8 视图解析器

我们可以使用视图解析器来对我们访问的一个url进行优化

SpringMVC默认为我们提供了一套视图解析器InternalResourceViewResolver,该视图解析器默认是支持JSP的,我们也可以去使用其他的模版引擎

8.1 配置文件

<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <!--前缀,一般用来设置模版引擎的公共目录-->
  <property name="prefix" value="/views/"/>
  <!--后缀,就是模版引擎的后缀名-->
  <property name="suffix" value=".jsp"/>
</bean>

8.2 Java配置文件

@Bean
public ViewResolver viewResolver() {
  // 通过构造器设置前缀和后缀
  return new InternalResourceViewResolver("/views/", ".jsp");
}

9 整合Freemarker模版引擎

Freemarker模版引擎和JSP一样可以支持我们去操作前端页面,但是freemarker操作的前端文件是.ftl文件

9.1 导入依赖

Spring对第三方整合需要使用的上下文扩展包spring-context-support

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context-support</artifactId>
  <version>5.2.12.RELEASE</version>
</dependency>

Freemarker的包

<dependency>
  <groupId>org.freemarker</groupId>
  <artifactId>freemarker</artifactId>
  <version>2.3.28</version>
</dependency>

9.2 XML配置文件

我们可以通过XML配置文件来配置俩个bean,第一个bean是配置的SpringMVC的视图解析器,这里使用FreeMarkerViewResolver这个视图解析器。第二个bean是freemarker的配置文件

<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
  <!--模版引擎渲染后的页面的编码-->
  <property name="contentType" value="text/html;charset=utf-8"/>
  <!--一般文件以.ftl结尾-->
  <property name="suffix" value=".ftl"/>
</bean>

<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
  <!--相当于前缀-->
  <property name="templateLoaderPath" value="/WEB-INF/ftl"/>
  <!--配置编码属性-->
  <property name="freemarkerSettings">
    <props>
      <!--FreeMarker文件里面编码-->
      <prop key="defaultEncoding">UTF-8</prop>
    </props>
  </property>
</bean>

9.3 Java配置文件

同样的俩个bean我们也可以选择Java配置文件的方式来配置

@Bean
public ViewResolver viewResolver() {
  // 实例freemarker视图解析器
  FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver();
  // 设置ContentType
  viewResolver.setContentType("text/html;charset=utf-8");
  // 设置后缀
  viewResolver.setSuffix(".ftl");
  // 直接返回bean,这里不需要设置前缀,因为还有一个bean需要配置
  return viewResolver;
}

@Bean
public FreeMarkerConfigurer freeMarkerConfigurer() {
  // 实例freemarker配置类
  FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
  // 使用properties来存放配置数据
  Properties properties = new Properties();
  // 添加配置文件中默认字符
  properties.setProperty("defaultEncoding", "UTF-8");
  // 添加配置文件
  configurer.setFreemarkerSettings(properties);
  // 设置模版的路径,其实就是前缀
  configurer.setTemplateLoaderPath("/WEB-INF/ftl");
  // 返回bean
  return configurer;
}

9.4 测试

ftl文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
${name}
</body>
</html>

Java:

@GetMapping("/free")
public ModelAndView freeMarker(ModelAndView modelAndView){
  modelAndView.addObject("name","感谢!");
  modelAndView.setViewName("FreeMarkerDemo");
  return modelAndView;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值