一, web开发支持
Spring-boot-starter-web提供了嵌入tomcat及SpringMVC的依赖
二, Thymeleaf模板引擎
1),基础知识
Thymeleaf是java的一个类库,是一个xml/xhtml/html5的模板引擎,可作为view层
可用于替换jsp
2), 引入
<html xmlns:th="http://www.thymeleaf.org"><!-- 1-->
<meta content="text/html;charset=utf-8"/>
<link th:src="@{xx/xx/bootstrap.css}" rel="stylesheet" />
<script th:src="@{xx/xx/bootstrap.js}"></script>
</html>
备注:1),引入命名空间
2), 通过"@{}"引入静态资源,在jsp下极易出错
3), 访问model中的数据
通过"${}"访问web中的属性
e.g. <span th:text="${person.name}"></span>
4), model中的数据迭代
e.g. <li th:each="person:${people}">
<span th:text="${person.age}"></span>
</li>
5), 数据判断
支持<,>==,!=,等springEL表达式
e.g. <div th:if="${not #lists.isEmpty(people)}"></div>
6). javascript中访问model
e.g,
<script th:inline="javascript">
var single= [[${singlePerson}]];
</script>
备注: 1),通过th:inline="javascirpt" 添加到script标签中
2), 使用[[${}]] 获取值
3), 更多: http://www.thymeleaf.org
7), 与springMVC的集成
thymeleaf 定义了2个支持类:
org,thymeleaf.spring4.view.ThymeleafView
org.thymeleaf.spring4.view.ThymeleafViewResolver(默认)
SpringTemplateEngine:用来在springMVC下使用 Thymeleaf模板引擎
TemplateResolver: 用来设置模板引擎(前缀,后缀)
e.g.
@Bean
public TemplateResovler templateResolver(){
TemplateResovler templateResolver = new ServletContextTemplateResolver();
templateResolver.setPrefix("/WEB-INF/templates");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("HTML5");
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine(){
SpringTemplateEngine templateEngine = new templateEngine();
templateEngine.setTemplateResolver(templateResolver());
return templateEngine
}
@Bean
public ThymeleafViewResolver thymeleafViewResolver(){
ThymeleafViewResolver thymeleafViewResolver = new ThymeleafViewResolver();
ThymeleafViewResolver.setTemplateEngine(templateEngine());
return thymeleafViewResolver;
}
8). Spring Boot的支持
Spring Boot通过org.springframework.boot.autoconfigure.thymeleaf包对Thymeleaf自动装配.
通过ThymeleafProperties来配置thymeleaf,只需在application.properties中以spring.thymeleaf开头来配置
ThymeleafProperties源码, 后补
application中示例:
#thymeleaf start
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
#开发时关闭缓存,不然没法看到实时页面
spring.thymeleaf.cache=false
#thymeleaf end
三, Web相关配置
1, spring boot提供的自动配置
1),自动配置ViewResolver
ContentNegotiatingViewResolver: 特殊的ViewResolver,拥有最高优先级
不是自己处理,而是给其他的viewResolver处理
BeanNameViewResolver: 去查找Bean返回字符串的view来渲染视图
InternalResourceViewResolver: 主要通过设置前缀,后缀,及控制器中方法来返回视图名
2), 自动配置静态资源
在自动配置类addResourceHandlers方法中定义了以下静态资源的自动配置
类路径文件: 把/static, /public, /resources, /META-INF/resources里的静态文件直接映射/**.
可以通过localhost:8080/**来访问
webjar: 把webjar的/META-INF/resources/webjars/的静态文件映射为/webjars/**
3), 自动配置Formatter和Converter
4), 自动配置HttpMessageConverters
5), 静态首页的支持
静态首页index.html放置目录.META-INF/resources/,resources/, public/,statuc/ 都可以.
6), 接管spring boot的web配置
如果默认配置不符合需求,可通过@Configuration,@EnableWebMvc来实现自己的配置
7), 注册Servlet, Filter, Listener
声明为 spring bean即可达到效果. 即: @Bean
四, Tomcat配置
关于Tomcat的所有属性都在org.springframework.boot.autoconfigure.web.ServerProperties做了定义.
1, 配置Tomcat
applicaiton.properties添加如下配置
server.port=8080 #默认为8080
server.session-timeout=600 #过期时间,以秒为单位
server.context-path= #配置访问路径,默认为/
server.tomcat.uri-encoding= #配置tomcat的编码,默认UTF-8
server.tomcat.compression= #tomcat是否开启压缩,默认为关闭off
.....
2, 代码配置tomcat
注册一个实现EmbeddedServletContainerCustomizer接口的Bean
3, 替换tomcat
在pom.xml中,将spring-boot-starter-web的依赖由spring-boot-starter-web改为相应的
e.g. spring-boot-starter-jetty (undertow)
3, SSL(Secure Sockets Layer) 配置
1),生成证书: 可用JDK自带的keytool生成.
e.g. keytool -genkey -alias tomcat 然后按提示操作
2), spring boot 配置SSL
server.port=8443
server.ssl.key-store=.keystore
server.ssl.key-store-password=123
server.ssl.keyStoreType=JKS
3), http转https
配置TomcatEmbeddedServletContainerFactory,并添加Tomcat的connector来实现
五, Favicon配置
关闭: spring.mvc.favicon.enabled=false
设置自己的Favicon: 将自己额favicon.ico(文件名不能动),放在类路径根目录(/, resources/ public/, static)
等一些目录下都可以
六, WebSocket
1, 准备: 添加websocket依赖
2, 广播式
//todo
3,点对点
/todo
七, 基于Bootstrap和AngularJs的应用
bootstrap 下载地址: http://getbootstrap.com/getting-started/
页面组件支持: http://getbootstrap.com/components
大量js插件: http://getbootstrap.com/javascript/
angularJs: https://angularjs.org/
示例见网盘:projects/springboot