一、简介
spring boot的web应用开发,是基于spring mvc。
Spring boot在spring默认基础上,自动配置添加了以下特性:
1、包含了ContentNegotiatingViewResolver和BeanNameViewResolver beans。
2、对静态资源的支持,包括对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 默认的错误页面
三、FreeMarker使用
新建一个工程,勾选Freemarker、DevTools(开发方便)
会自动在pom.xml中加入Freemarker的配置:
1
2
3
4
|
<
dependency
>
<
groupId
>org.springframework.boot</
groupId
>
<
artifactId
>spring-boot-starter-freemarker</
artifactId
>
</
dependency
>
|
WebController.java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
package
com.example.demo.controller;
import
org.slf4j.Logger;
import
org.slf4j.LoggerFactory;
import
org.springframework.stereotype.Controller;
import
org.springframework.ui.Model;
import
org.springframework.web.bind.annotation.RequestMapping;
/**
* Created by DELL on 2017/6/13.
*/
@Controller
@RequestMapping
(
"/web"
)
public
class
WebController {
private
static
final
Logger logger = LoggerFactory.getLogger(WebController.
class
);
@RequestMapping
(
"/index"
)
public
String index(Model model){
logger.info(
"这是一个controller"
);
model.addAttribute(
"title"
,
"我是一个例子"
);
return
"index"
;
// 注意,不要再最前面加上/,linux下面会出错
}
}
|
index.ftl:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<!DOCTYPE html>
<
html
>
<
head
lang
=
"en"
>
<
title
>Spring Boot Demo - FreeMarker</
title
>
<
link
href
=
"/css/index.css"
rel
=
"stylesheet"
/>
</
head
>
<
body
>
<
center
>
<
img
src
=
"/images/logo.png"
/>
<
h1
id
=
"title"
>${title}</
h1
>
</
center
>
<
script
type
=
"text/javascript"
src
=
"/js/jquery.min.js"
></
script
>
<
script
>
$(function(){
$('#title').click(function(){
alert('点击了');
});
})
</
script
>
</
body
>
</
html
>
|
说明:
1、视图默认访问templates下面,如"index",则:在templates下面找index.ftl
2、css、js、img等静态资源则在static下面找,如<link href="/css/index.css" rel="stylesheet" />,则是找static下面的css下面的index.css文件
四、thymeleaf模块
4.1、简介
Thymeleaf是一个优秀的面向java的XML/XHTML/HTML5页面模板,并且有丰富的标签语言和函数。使用Springboot框架进行界面设计,一般都会选择Thymeleaf模板。
4.2、使用
引入依赖:
1
2
3
4
|
<
dependency
>
<
groupId
>org.springframework.boot</
groupId
>
<
artifactId
>spring-boot-starter-thymeleaf</
artifactId
>
</
dependency
>
|
配置application.properties文件:
1
2
3
4
5
6
7
8
|
#####################thymeleaf开始#####################################
#关闭缓存
spring.thymeleaf.cache=false
#后缀
spring.thymeleaf.suffix=.html
#编码
spring.thymeleaf.encoding=UTF-8
#####################thymeleaf结束#####################################
|
IndexController.java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
@Controller
public
class
IndexController {
@RequestMapping
(
"/index"
)
public
String show(Model model)
throws
Exception {
List<User> users =
new
ArrayList<User>();
users.add(
new
User(1L,
"zhangsan"
));
users.add(
new
User(2L,
"lisi"
));
users.add(
new
User(3L,
"wangwu"
));
model.addAttribute(
"hello"
,
"我只是一个例子"
);
model.addAttribute(
"users"
, users);
model.addAttribute(
"addtime"
,
new
Date());
return
"/helloHtml"
;
}
}
|
main/resources/templates/helloHtml.html:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<!DOCTYPE html>
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
xmlns:th
=
"http://www.thymeleaf.org"
>
<
head
>
<
title
>Hello World!</
title
>
</
head
><
p
th:text
=
"${hello}"
></
p
>
<
body
>
<
h1
th:inline
=
"text"
>Hello.v.2</
h1
>
<
p
th:text
=
"${addtime} ? ${#dates.format(addtime, 'yyyy-MM-dd HH:mm:ss')}"
></
p
>
<
select
>
<
option
>请选择用户</
option
>
<
option
th:each
=
"user:${users}"
th:value
=
"${user.id}"
th:text
=
"${user.name}"
>
</
option
>
</
select
>
</
body
>
</
html
>
|
浏览器中输入:http://localhost:8989/index ,效果如下:
4.3、thymeleaf功能简介
在html页面中使用thymeleaf标签语言,用一个简单的关键字“th”来标注,如:
1
2
|
<
p
th:text
=
"${hello}"
></
p
>
<
img
th:src
=
"@{images/logo.png}"
/>
|
其中th:text指定在<p>标签中显示的文本,它的值来自"$"所引用的内存变量。
th:src指定img的图片地址
注意:使用th,需要<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
thymeleaf的主要标签和函数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
th:text,显示文本。
th:utext,和th:text的区别是针对
"unescaped text"
。
th:attr,设置标签属性
th:
if
or th:
unless
,条件判断语句
th:switch, th:case,选择语句
th:
each
,循环语句
#date:日期函数
#calendars:日历函数
#numbers:数字函数
#strings:字符串函数
#objects:对象函数
#bools:逻辑函数
#arrays:数组函数
#lists:列表函数
|
详细标签请查看官方:http://www.thymeleaf.org/
本文转自我爱大金子博客51CTO博客,原文链接http://blog.51cto.com/1754966750/1934891如需转载请自行联系原作者
我爱大金子