配置视图解析器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置视图解析器相关的知识,希望对你有一定的参考价值。
参考技术Aspring内置的 ViewResolver 实现.
注意:此时 DispatcherServlet 的 url-pattern 配置为 / , 否则可能无法访问jsp文件.
使用JSTL标签, 则指定 InternalResourceViewResolver 的 viewClass 属性为 org.springframework.web.servlet.view.JstlView .
即添加如下配置:
注: JSTL全称为JavaServer Pages Standard Tag Library.
标签示例:
标签示例:
它的作用是定义视图布局, 即提供公共的页面部分. 现用Apache Tiles3. 了解.
注:Thymeleaf与spring的集成由Thymeleaf负责, 所以要引入相应的依赖.
注: 如果没有这个依赖, 会提示 org.springframework.ui.freemarker.FreeMarkerCofigurationFactory 找不到异常.
SpringMVC--07 视图解析器&整合freemarker
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;
}
以上是关于配置视图解析器的主要内容,如果未能解决你的问题,请参考以下文章
SpringMVC--07 视图解析器&整合freemarker
SpringMVC--07 视图解析器&整合freemarker