博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot基础教程——web应用开发-模板引擎
阅读量:6236 次
发布时间:2019-06-22

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

hot3.png

一.    spring boot的web应用开发,是基于spring mvc

二.    Spring boot 在spring默认基础上,自动配置添加了以下特性:

1.    包含了ContentNegotiatingViewResolver和BeanNameViewResolver beans。
2.    对静态资源的支持(图片、js、css等),包括对WebJars的支持
3.    自动注册Converter,GenericConverter,Formatter beans。
4.    对HttpMessageConverters的支持。
5.    自动注册MessageCodeResolver。
6.    对静态index.html的支持
7.    对自定义Favicon的支持。
8.    主动使用ConfigurableWebBindingInitializer bean

三.    模板引擎的选择

FreeMarker
Thymeleaf
Velocity (1.4版本之后弃用,Spring Framework 4.3版本之后弃用)
Groovy
Mustache
注:jsp应该尽量避免使用,原因如下
1.    jsp只能打包为:war格式,不支持jar格式,只能在标准的容器里面跑(tomcat,jetty都可以) 
2.    内嵌的Jetty目前不支持JSPs
3.    Undertow不支持jsps
4.    jsp自定义错误页面不能覆盖spring boot 默认的错误页面

四.  相关依赖

1、 FreeMarker Demo

    
org.springframework.boot
    
spring-boot-starter-freemarker

2、Thymeleaf Demo

     
org.springframework.boot
    
spring-boot-starter-thymeleaf

3、  Jsp Demo

org.apache.tomcat.embed
tomcat-embed-jasper
provided
javax.servlet
jstl

application.properties添加配置参数(指定jsp文件的前后缀):

spring.mvc.view.prefix: /WEB-INF/templates/spring.mvc.view.suffix: .jsp

注:

1、需加入jquery webjars依赖:

     
org.webjars
     
jquery
     
2.1.4

将jquery的webjars加入maven库,前端便可直接使用jquery了。

2、index.ftl 等freemarker模板默认均处于src/main/resources  templates文件夹下,而图片、js、css等默认放在src/main/resources  static文件夹下;thymeleaf模板引擎也是类似。

①freemarker页面-index.ftl:

	Spring Boot Demo - FreeMarker	

${title}

②thymeleaf页面-index.html:

	Spring Boot Demo - FreeMarker	

3、WebController注意事项:

@Controller@RequestMapping(value = "/web")public class WebController {	@RequestMapping(value = "/index")	public String index(ModelMap map) {		map.put("title", "freemarker hello word");		return "index"; // 开头不要加上/,linux下面会出错	}}

 

总结:

一、freemarker和thymeleaf模板引擎区别

相同点:

1、控制器均相同

2、需引入webjars相同(如jquery  webjars)

3、二者均关联引入了spring-boot-starter-web包

不同点:

 1、引入模板引擎依赖不同

 2、页面语法不同:前者是.ftl文件;后者是纯粹的html文件

3、thymeleaf是springboot推荐使用的模板引擎

 

二、jsp模板引擎特别说明(不建议使用,原因见上文):

1、在Servlet容器中部署WAR的时候,不能依赖于Application的main函数而是要以类似于web.xml文件配置的方式来启动Spring应用上下文,所以此时需要声明这样一个类或者将应用的主类改为继承SpringBootServletInitializer也可以。

//该类的作用类似于web.xml文件配置,继承了SpringBootServletInitializerpublic class ServletInitializer extends SpringBootServletInitializer {	@Override	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {		return application.sources(SpringBootDemo81Application.class);	}}

2、.war和.war.original打包文件的区别:前者文件大小一般比后者大,是因为后者仅包含自身的一些文件内容,而后者不仅包含自身内容,还包含所依赖的相关jar等资源;且前者可通过java -jar *.war 直接运行(因为自身内嵌了tomcat容器),而后者必须放在外部web容器(如tomcat/jetty)中才能运行。

clean package命令生成两个war包

 

clean package命令生成war结构对比

 

 

 

 

 

 

 

WEB-INF下目录结构对比

3、和freemarker及thymeleaf相比,jsp文件存放位置不同(freemarker/thymeleaf前端静态资源文件存放在src/main/resources 下 static/templates下):

jsp相关资源存放位置

 

 

 

 

 

转载于:https://my.oschina.net/Howard2016/blog/908541

你可能感兴趣的文章
第二阶段冲刺 NO.3
查看>>
六个前端开发工程师必备的Web设计模式/模块资源(转)
查看>>
(转)linux下和云端通讯的例程, ubuntu和openwrt实验成功(一)
查看>>
zoj3501
查看>>
7.Python 之禅(2-11)
查看>>
mysql主从复制
查看>>
JAVA中toString方法的作用
查看>>
string.h 中常用函数
查看>>
WebService 检测到有潜在危险的 Request.Form 值
查看>>
(十五)监听器
查看>>
java多线程基本概述(三)——同步块
查看>>
caioj 1087 动态规划入门(非常规DP11:潜水员)(二维背包)
查看>>
《Linux内核设计与实现》读书笔记(十八)- 内核调试
查看>>
Vue全局判断是否登陆
查看>>
ZOJ 3927 Programming Ability Test
查看>>
HDU 5787 K-wolf Number
查看>>
c#学习笔记之基本数据类型与分支语句
查看>>
Handler类,有两个包,一个是java的,用于日志和消息,一个android,专用于消息.
查看>>
HTML5离线存储原理及实现
查看>>
BZOJ3191 [JLOI2013]卡牌游戏
查看>>