学习目标:
- 使用Idea工具创建一个Springboot工程;
- 编写一个简单的控制器;
- 显示一个模板页面;
- 打包项目并发布运行。
言归正传,下面是具体的构建步骤。
1. 创建Springboot工程
启动Idea,创建一个工程,选择Spring Initializr(需联网),JDK选1.8。点击Next:
这一步选择项目依赖包,我们选择:DevTools,Spring web starter,模板引擎Thymeleaf。
最后一步,选择工程名称和保存目录:
点击Finish后,Idea为我们创建了Springboot工程。如果你是第一次创建,请耐心等待Maven下载依赖的包,时间根据网络情况几分钟到一小时不等。只能耐心等待!
所有依赖包下载完毕后,我们的工程也准备好了,看看目录结构:
2. Hello SpringBoot!
工程已经创建好了,你是不是像我一样着急的想看到结果?
别急,我们先创建一个java类,就叫HelloController吧:
激动人心的时刻即将到来!点击右上角的运行按钮,在控制台中我们看到Tomcat在端口8080上启动了服务:
打开浏览器,输入:http://localhost:8080/demo/hello,不出意外的话,我们就见到了Hello SpringBoot的页面:
代码解释:
在类的前面我们增加了两行注解:
@Controller
@RequestMapping(“/demo”)
这是告诉SpringBoot此类是个控制器,映射到/demo路径。
hello函数前我们增加了:
@ResponseBody
@RequestMapping(“/hello”)
这是告诉SpringBoot此函数直接返回响应体,且映射到目录/demo/hello。(类/函数路径)
3. 准备静态资源
上面我们创建了一个简单的页面,但是实际的网站比这复杂多了。需要一些静态资源文件,比如Js脚本,Css样式表,png图片等。现在我们先准备好这些东东。
静态资源我们放在工程的src\main\resources\static\目录下,我准备了jquery.js、bootstrap和一个图片,如下图所示:
4. 编写模板页面
还记得我们创建工程的时候,选择了模板引擎Thymeleaf吗?Thymeleaf是Springboot官方推荐的模板引擎,现在我们创建一个html文件“hello.html”,并把它放在工程的templates目录下。如下图所示:
hello.html的内容如下:
<!DOCTYPE html>
<html lang=”zh-CN” xmlns:th=”http://www.thymeleaf.org“> <head> <meta charset=”utf-8″ /> <meta http-equiv=”X-UA-Compatible” content=”IE=edge” /> <meta name=”viewport” content=”width=device-width, initial-scale=1″ /> <!– 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! –> <title th:text=”${title}”></title> <!– Bootstrap –> <link href=”/bootstrap/css/bootstrap.min.css” rel=”stylesheet” /> </head> <body> <div class=”container”> <div class=”row”> <div class=”text-center”><img src=”/logo.jpg”/></div> <h1 class=”text-center” th:text=”${hello}”> Hello </h1> </div> <div class=”row”> <div class=”col-md-3″></div> <div class=”col-md-6″> <table class=”table”> <caption>中国互联网独角兽(2019)</caption> <thead> <tr> <th>#</th> <th>公司</th> <th>老板</th> <th>市值(亿美元)</th> </tr> </thead> <tbody> <tr th:each=”com : ${comps}”> <th scope=”row” th:text=”${com.order}”></th> <td th:text=”${com.name}”></td> <td th:text=”${com.boss}”></td> <td th:text=”${com.money}”></td> </tr> </tbody> </table> </div> <div class=”col-md-3″></div> </div> <!– jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) –> <script src=”/jquery.min.js”></script> <!– 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 –> <script src=”/bootstrap/js/bootstrap.min.js”></script> </div> </body> </html> |
代码解释:
th:text=”${hello}”
表示对于一个变量hello,请看下文。
5. 编写控制器
继续修改HelloController类,我们增加一个函数templatePage。
现在运行此工程,在浏览器输入地址:http://localhost:8080/demo/hello/template
显示如下页面:
6. 配置打包
我们一直是在Idea中运行调试,实际部署时一般打包成jar包,这样就可以单独运行。如要改变Tomcat的端口号,需修改application.properties文件,增加一行配置:
server.port = 8080
打包前修改pom.xml文件:
- 在Idea右侧,我们点击Maven按钮,再依次双击clean,package。
7. 运行jar包
在target目录下,我们运行:java -jar demo-0.0.1-SNAPSHOT.jar
启动后就可以在浏览器输入地址:http://localhost:8080/demo/hello/template访问。
8. 问题
最后打包时Maven会把所有静态资源和模板一块打包到jar中,这是一个fat jar。如果我们要修改某个模板或静态资源,都需要重新打包,费时费力。有没有方法不重新打包,就可以修改我们的静态资源呢?那就要用到动静分离的配置啦,请看下一篇文章。