文档章节

1.创建Spring Boot项目

WzyJerry
 WzyJerry
发布于 2017/05/18 23:17
字数 1337
阅读 46
收藏 1

创建Spring Boot项目

    通过使用IDEA自带Spring Initializr(或登录http://start.spring.io/)创建Spring Boot项目。

  1. Create New Project->Spring Initializr,选择SDK
  2. 设置Group(同包名)和Artifact(项目名称,据 @15 计科 孙涵斌 说这玩意里不能有大写字母),选择Maven Project。JAR和WAR的选择是开发用JAR部署用WAR。接下来是一些其他设置,这些设置可以之后在pom.xml文件中修改。
  3. 接下来就是令人激动的添加引用环节。DevTools用来启用热启动。Web的Web项则包含了网站开发的全栈工具,包括Tomcat和Spring MVC。同时,项目决定使用Thymeleaf作为模板引擎。
  4. 找个地方放置新项目。项目会以location文件夹为根目录。应使用一个空目录。
  5. 项目创建完成。可以通过左下角的Maven Projects查看导包情况。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>org.wzyjerry.springboot.demo</groupId>
	<artifactId>springboot-demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>springboot-demo</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


</project>

    可以看到,生成的pom文件十分简洁。通过parent节定义了spring boot的版本号,之后所有的dependency中与spring boot有关的项都将继承该版本号,并通过各自的pom将所需包导入到项目中。

文件夹结构

    现在可以执行生成的test方法,如果测试通过,可以看到输出一个Spring Boot的logo。

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.3.RELEASE)

    得到最终的文件夹结构如下。

    蓝色的是代码根目录,绿色的是测试根目录,黄色横杠的是资源根目录。C是类文件,有电源图标的C是SpringBoot应用程序的启动类,这个类上有@SpringBootApplication注解,当你启动这个类(通过点击左边的小绿箭头),服务器会启动,并将部署到默认的8080端口。可以通过浏览器访问localhost:8080,不过因为我们什么都没有写,因此只会得到一个错误页面,小叶子表明这是一个Spring应用程序。尽管如此,这已经是一个可以运行的网站了。

2017-05-18 22:50:50.411  INFO 7760 --- [  restartedMain] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-05-18 22:50:50.414  INFO 7760 --- [  restartedMain] o.w.s.demo.SpringbootDemoApplication     : Started SpringbootDemoApplication in 2.319 seconds (JVM running for 2.702)

路由与URL

如果我们访问这样的URL

http://cn.bing.com/
http://localhost:8080/home/index/

实际上会发生什么事呢?大致的过程是这样的:

  1. 浏览器看到http://,认识到这是一个基于超文本传输协议的URL访问。之后的字符串被按/划分为节。
  2. 浏览器获取第一节,这一节被定义为域名:port,其中,域名段会由DNS服务器解析为对应的IP地址,port则指定了网页的端口号。如果没有port段,则使用默认端口:对于HTTP协议,端口是80;而对于HTTPS协议,端口是443.浏览器向这个终端发起HTTP的GET请求。
  3. 接下来由Tomcat做一些工作,交给Servlet,通过之后的节进行路由,最终找到一个控制器的方法或者失败:后者将会产生一个404 NotFound。
  4. 一个通用路由可能是这样的:controller默认值为home,index默认值为index,id为可选项
    /{controller}/{action}/{id}

    对于这样一个路由,上述第一个URL将访问home控制器的index方法(全部使用默认值),第二个URL也将访问home控制器的index方法(显示指定controller与action)。你会发现,一个基于MVC的网页访问实质上是在进行一个对控制器方法的远程过程调用(Remote Procedure Call,RPC)过程。

  5. 最终,控制器方法将返回一些东西,完成页面访问过程。

Hello world页面

    根据上面的过程描述,我们来尝试编写一个hello world页面。

  1. 新建Controller方法,位于controller包内。
  2. 控制器使用@Controller注解,使用@RequestMapping注解设定路由。由上面的通用路由可以得到,/home/index应当被同时映射到三个URL上,其中,第一个URL一般被当做一个网站的主页。
    http://localhost:8080/
    http://localhost:8080/home/
    http://localhost:8080/home/index/
    @Controller
    public class HomeController {
    
        @RequestMapping(value = {"/", "/home", "/home/index"})
        public ModelAndView index() {
            ModelAndView modelAndView = new ModelAndView("home/index");
            return modelAndView;
        }
    
    }
    
    控制器方法返回一个ModelAndView。这里对应的模板文件为
    src/main/resources/templates/home/index.html
    暂时不要管这是如何得出的,现在对应的文件夹中新建文件。
  3. 编写模板文件home/index
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Title</title>
    </head>
    <body>
    <p>Hello world~!</p>
    </body>
    </html>
  4. 运行程序,访问页面

​​​​​​​

可以看到结果与预期一致。注意这里的URL要与映射URL严格匹配大小写。

© 著作权归作者所有

上一篇: 2.Spring Boot国际化
下一篇: 0.Spring Boot起步
WzyJerry
粉丝 1
博文 3
码字总数 3793
作品 0
合肥
程序员
私信 提问
SpringBoot介绍及常用的搭建方式

SpringBoot简介 Spring Boot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目。它使用习惯优于配置的理念让你的项目快速运行起来,使用Spring Boot很容易创建一个独...

Hans的博客
01/21
0
0
Spring Boot入门(1)Hello World

Spring Boot介绍   对于熟悉Spring的读者读者来说,想必也听说过Spring Boot的大名,Spring Boot旨在简化Spring的开发,它涉及了Spring的方方面面,是一个令人惊叹的神奇发明。Spring Boot...

jclian91
2018/04/07
0
0
Spring Boot 项目搭建

从根本上来说,Spring Boot的项目只是普通的Spring项目,只是它们正好用到了Spring Boot的起步依赖和自动配置而已。因此,那些你早已熟悉的从头创建Spring项目的技术或工具,都能用于Spring ...

爆米花9958
2018/08/31
0
0
为什么越来越多的开发者选择使用Spring Boot?

一、Web应用开发背景 使用Java做Web应用开发已经有近20年的历史了,从最初的Servlet1.0一步步演化到现在如此多的框架、库以及整个生态系统。经过这么长时间的发展,Java作为一个成熟的语言,...

Ala6
2018/10/10
0
0
SpringBoot 学习:(一)快速搭建项目

一、简介 从 Spring Boot 项目名称中的 Boot 可以看出来,Spring Boot 的作用在于创建和启动新的基于 Spring 框架的项目。它的目的是帮助开发人员很容易的创建出独立运行和产品级别的基于 Sp...

Element0506
2015/07/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
解决多线程并行加载缓存问题(利用guava实现)

依赖 com.google.guava:guava:20.0 import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import j......

暗中观察
昨天
3
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
3
0
组装一台工作游戏两用机

一、配置清单如下: 分类 项目 价格(元) 主板 华硕(ASUS)TUF Z370-PLUS GAMING II 电竞特工 Z370二代 支持9代CPU 1049 CPU 英特尔(Intel) i7 8700K 酷睿六核 盒装CPU处理器 2640 风扇 九...

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部