这篇文章我们使用Spring Boot 2.x快速搭建一个Hello World项目,并且运行起来。
一、 开发环境
Java 1.8+
Maven 3.3.9+
Intellij Idea 2017.2.5
关于在Intellij Idea中配置JDK、Maven的方法,请读者自行百度。这里不再赘述。
本系列文章用到的开发环境相同,后续文章不再进行说明。
二、创建项目
1、使用Intellij Idea引导创建项目
项目名称:aicode-bgms (Background Manage System)
在Intellij Idea中依次进行如下操作:点击File—〉New——〉Project进入如下页面:
这里选择左侧的“Spring Initializr”,然后点击“Next”
这里我们输入Group和Artifact,其他基本默认即可。注册Package路径的修改。然后点击“Next”;
这里我们先只选择Web依赖,其他依赖在后续文章中会根据需要再进行添加。点击“Next”;
这里选择项目所在的路径,根据自己需要进行选择,然后点击“Finish”按钮;
此时,可能会弹出这个对话框,如果你进行了勾选Remember,don't ask again则以后创建项目则不会再进行提示。这里可以根据自己的需要自行勾选与否,并且据已所好选择This Window 或者 New Window。
如,我这里不进行勾选,点击"New Window"。然后新打开一个Idea窗口,进入项目的开发环境。
把目录都打开后,可以看到如上图所示的目录结构,这里就是Spring Boot为我们创建的默认的目录结构。
我们打开pom.xml文件,可以看到,有如下的parent。Spring Boot 默认要继承parent的pom;
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
spring-boot-starter-parent的作用::
1)jar包的版本管理;
2)配置文件的过滤;
3)常用插件管理。
继承了parent的pom后,我们就可以依赖SpringBoot提供的各种starter,这种方式对于小型项目或者以学习为目的使用还是比较方便的。但是对于很多生产环境的项目,我们一般都自定义自己项目的parent工程。Maven不允许有多个parent标签,这种情况我们需要采用下面一种方式。不使用parent标签,使用maven的dependencyManagement标签,来统一对依赖进行管理。可以使用如下代码:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
这里我们为了快速体验Spring Boot就采用默认方式了,继续Spring Boot为我们生成的代码,在依赖中我们看到,添加了如下两个依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
还有下面一个插件
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
这个插件能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。
2、在https://start.spring.io/创建项目
如上图所示,输入Group和Artifact的内容,在Dependencies中输入Web,然后点击下面的Generate Project,即可生成项目。
我们把生成的项目引入Idea或其他IDE中即可。
三、项目中使用jsp
我们打开项目中的AicodeBgmsApplication.java文件,看到这里有一个main函数,右键,然后点击 Run 'AicodeBgmsApplication' ,然后可以看到项目正常启动;
在启动日志中,看到下面这一行
Tomcat started on port(s): 8080 (http) with context path ''
说明Spring Boot已经在8080端口为我们启动了Tomcat。
但如果此时,我们在浏览器中输入http://localhost:8080/进行访问,却发现报错了。
因为我们还没有引入Spring Boot对JSP的相关支持,并且项目中没有任何页面可以访问,所以跳转到的默认的/error页面。
下面我们加入相关配置
1、配置文件添加配置信息
在项目中默认生成的application.properties中添加如下内容
spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp
- spring.mvc.view.prefix 指明 jsp 文件在 src/main/webapp 下的哪个目录
- spring.mvc.view.suffix 指明 jsp 以什么样的后缀结尾
2、引入相关的依赖包
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
spring-boot-starter-web 包依赖了 spring-boot-starter-tomcat 不需要再单独配置。引入 jstl 和内嵌的 tomcat,jstl 是一个 JSP 标签集合,它封装了 JSP 应用的通用核心功能。tomcat-embed-jasper 主要用来支持 JSP 的解析和运行。
3、添加jsp目录
如图所示,依次创建目录,webapp、WEB-INF、jsp,这里的目录名称一定要与配置文件中的一致,然后创建测试使用的test.jsp文件,内容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<body>
<br>
来自JAVA的回复: ${message},我来了
</body>
</html>
然后创建后端服务程序,在com.aicode.bgms目录下创建controller目录,然后创建HelloController.java类文件,如下图:
然后编辑类HelloController.java中的代码,代码如下:
package com.aicode.bgms.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {
@RequestMapping("/test")
public String hello(ModelMap model){
model.put("message", "Hello Spring Boot 2.x");
return "test";
}
}
此时我们再运行程序,Run 'AicodeBgmsApplication',项目正常启动后,我们再打开浏览器,输入 http://localhost:8080/hello,可以看到如下页面
项目启动运行正常。
第一个Hello World的Spring Boot 2.x项目完成了。