Open johnnian opened 7 years ago
SpringBoot除了可以开发后台服务(Service),Web页面端也是可以的。在之前接触的项目中,主要使用JSP来开发Java Web应用,不过在SpringBoot中,默认推荐是使用 Thymeleaf 模版引擎。
本文主要是小结下SpringBoot的Web开发,初步搭建其开发环境(JSP & Thymeleaf),也对原理进行一些小结。
SpringBoot使用标准的Maven目录结构:
在编译打包成Jar包之后,Jar包内的目录结构是:
编译后,源码工程与编译后的目录对照如下:
/src/main/java ----------BOOT-INF/classes/具体包名下 /src/main/resource -----BOOT-INF/classes/根目录下 pom.xml中的依赖包-----BOOT-INF/lib/ pom.xml----------------META-INF/maven/ SpringBoot工程启动依赖----------org/
SpringBoot默认的静态资源路径:
当我们在浏览器访问SpringBoot项目: http://127.0.0.1:8080/ 的时候,SpringBoot默认从下面的文件夹中加载静态资源:
http://127.0.0.1:8080/
SpringBoot除了支持JSP外,还支持比较多的模版引擎:
SpringBoot整合JSP,最终打包的时候,可以选择以 Jar包/War包的形式输出。
对于以war包输出,在外部tomcat运行,可以参考文尾的参考链接,官方的示例代码。
这里以jar包形式,便于独立运行,目录结构如下:
需要有下面几项配置:
引入依赖包:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <!-- JSP 依赖. --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency>
配置编译参数
上面提到SpringBoot的静态资源目录,编译的时候,将webapp目录拷贝到 META-INF/resources,同时JSP文件没有直接暴露出来,而是包装在 /WEB-INF/jsp 目录下,这样外部就无法直接访问JSP页面,而是要通过SpringMVC重新转向到JSP页面。
META-INF/resources
/WEB-INF/jsp
<build> ... <resources> <resource> <directory>src/main/webapp</directory> <targetPath>META-INF/resources</targetPath> <includes> <include>**/**</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/**</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
编辑 application.properties
spring.mvc.view.prefix: /WEB-INF/jsp/ spring.mvc.view.suffix: .jsp
————————————————————————
配置完成后,运行SpringBoot:
访问JSP页面:
通过SpringMVC转向,可以访问JSP页面:
访问: http://127.0.0.1:2001/
JSP页面是无法直接访问的:
http://127.0.0.1:2002/WEB-INF/jsp/jspTest.jsp
访问静态资源
访问: http://127.0.0.1:2001/public.txt
具体工程代码,点击这里获取
SpringBoot推荐的模版引擎是ThymeLeaf,SpringBoot配置ThymeLeaf比较简单,工程目录结构如下:
注意:
1、ThymeLeaf模版引擎,会从 resources/templates 目录下读取模版,因此可以在该目录存放业务模版页面;
resources/templates
2、在 resources/static 目录下放静态文件,css/images/js 文件。
resources/static
配置如下:
由于SpringBoot默认使用 ThymeLeaf2.X版本,要使用3.X版本,需要额外指定:
... <groupId>com.johnnian</groupId> <artifactId>springboot-thymeleaf</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <thymeleaf.version>3.0.2.RELEASE</thymeleaf.version> <thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version> </properties> ...
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
spring.thymeleaf.cache: false spring.thymeleaf.mode: html
前言
SpringBoot除了可以开发后台服务(Service),Web页面端也是可以的。在之前接触的项目中,主要使用JSP来开发Java Web应用,不过在SpringBoot中,默认推荐是使用 Thymeleaf 模版引擎。
本文主要是小结下SpringBoot的Web开发,初步搭建其开发环境(JSP & Thymeleaf),也对原理进行一些小结。
一、SpringBoot静态资源目录
/src/main/java ----------BOOT-INF/classes/具体包名下 /src/main/resource -----BOOT-INF/classes/根目录下 pom.xml中的依赖包-----BOOT-INF/lib/ pom.xml----------------META-INF/maven/ SpringBoot工程启动依赖----------org/
当我们在浏览器访问SpringBoot项目:
http://127.0.0.1:8080/
的时候,SpringBoot默认从下面的文件夹中加载静态资源:二、SpringBoot支持的模板引擎
SpringBoot除了支持JSP外,还支持比较多的模版引擎:
三、SpringBoot整合JSP
SpringBoot整合JSP,最终打包的时候,可以选择以 Jar包/War包的形式输出。
对于以war包输出,在外部tomcat运行,可以参考文尾的参考链接,官方的示例代码。
这里以jar包形式,便于独立运行,目录结构如下:
需要有下面几项配置:
1、配置POM文件
上面提到SpringBoot的静态资源目录,编译的时候,将webapp目录拷贝到
META-INF/resources
,同时JSP文件没有直接暴露出来,而是包装在/WEB-INF/jsp
目录下,这样外部就无法直接访问JSP页面,而是要通过SpringMVC重新转向到JSP页面。2、配置SpringMVC
编辑 application.properties
————————————————————————
配置完成后,运行SpringBoot:
通过SpringMVC转向,可以访问JSP页面:
访问: http://127.0.0.1:2001/
JSP页面是无法直接访问的:
http://127.0.0.1:2002/WEB-INF/jsp/jspTest.jsp
访问: http://127.0.0.1:2001/public.txt
具体工程代码,点击这里获取
四、SpringBoot整合ThymeLeaf
SpringBoot推荐的模版引擎是ThymeLeaf,SpringBoot配置ThymeLeaf比较简单,工程目录结构如下:
注意:
1、ThymeLeaf模版引擎,会从
resources/templates
目录下读取模版,因此可以在该目录存放业务模版页面;2、在
resources/static
目录下放静态文件,css/images/js 文件。配置如下:
1、配置POM
由于SpringBoot默认使用 ThymeLeaf2.X版本,要使用3.X版本,需要额外指定:
引入依赖包:
2、配置ThymeLeaf参数
3、运行结果
访问: http://127.0.0.1:2001/
具体工程代码,点击这里获取
参考链接