一. 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)中才能运行。
3、和freemarker及thymeleaf相比,jsp文件存放位置不同(freemarker/thymeleaf前端静态资源文件存放在src/main/resources 下 static/templates下):