Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SpringBoot系列之—Web开发实战 #39

Open
johnnian opened this issue Nov 4, 2017 · 0 comments

Comments

1 participant
@johnnian
Copy link
Owner

commented Nov 4, 2017

前言

SpringBoot除了可以开发后台服务(Service),Web页面端也是可以的。在之前接触的项目中,主要使用JSP来开发Java Web应用,不过在SpringBoot中,默认推荐是使用 Thymeleaf 模版引擎。

本文主要是小结下SpringBoot的Web开发,初步搭建其开发环境(JSP & Thymeleaf),也对原理进行一些小结。

一、SpringBoot静态资源目录

SpringBoot使用标准的Maven目录结构:

qq20171104-223759 2x

在编译打包成Jar包之后,Jar包内的目录结构是:

qq20171104-224151 2x

编译后,源码工程与编译后的目录对照如下:

/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默认从下面的文件夹中加载静态资源:

  • /BOOT-INF/classes/static/
  • /BOOT-INF/classes/public/
  • /BOOT-INF/classes/resources/
  • /META-INF/resources/

二、SpringBoot支持的模板引擎

SpringBoot除了支持JSP外,还支持比较多的模版引擎:

  • Thymeleaf
  • FreeMarker
  • Groovy
  • Velocity

三、SpringBoot整合JSP

SpringBoot整合JSP,最终打包的时候,可以选择以 Jar包/War包的形式输出。

对于以war包输出,在外部tomcat运行,可以参考文尾的参考链接,官方的示例代码。

这里以jar包形式,便于独立运行,目录结构如下:

qq20171112-161912 2x

需要有下面几项配置:

1、配置POM文件

引入依赖包:

<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页面。

<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>

2、配置SpringMVC

编辑 application.properties

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

————————————————————————

配置完成后,运行SpringBoot:

访问JSP页面:

通过SpringMVC转向,可以访问JSP页面:

访问: http://127.0.0.1:2001/

qq20171112-161121 2x

JSP页面是无法直接访问的:

http://127.0.0.1:2002/WEB-INF/jsp/jspTest.jsp

qq20171112-163927 2x

访问静态资源

访问: http://127.0.0.1:2001/public.txt

qq20171112-163309 2x

具体工程代码,点击这里获取

四、SpringBoot整合ThymeLeaf

SpringBoot推荐的模版引擎是ThymeLeaf,SpringBoot配置ThymeLeaf比较简单,工程目录结构如下:

qq20171112-164602 2x

注意:

1、ThymeLeaf模版引擎,会从 resources/templates 目录下读取模版,因此可以在该目录存放业务模版页面;

2、在 resources/static 目录下放静态文件,css/images/js 文件。

配置如下:

1、配置POM

由于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>

2、配置ThymeLeaf参数

spring.thymeleaf.cache: false
spring.thymeleaf.mode: html

3、运行结果

访问: http://127.0.0.1:2001/

qq20171112-165626 2x

具体工程代码,点击这里获取

参考链接

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.