SpringBoot 项目初始化
工作之余,想要学习一下SpringBoot,通过网络大量教程最终成功运行SpringBoot项目。
第一步
首先,通过教程发现一套完整的快速搭建SpringBoot项目网站:https://start.spring.io/
以上是我的简单配置(其实右边可以配置好多东西,比如spring-mysql,但是考虑第一次,就简单配置了一个Spring Web),点击 ”GENERATE” 按钮就可以下载一个.zip压缩包,解压后就是一个简单的SpringBoot项目了!
因为工作中使用的是IntelliJ IDEA编译器,这里就记录一下idea导入SpringBoot 项目
首先打开idea
点击红框 Import Projeat,开始导入SpringBoot项目
选择目录后依次按照顺序点击,之后我们就会进到编译器之中。
我们对项目进行配置:
在搜索框搜索 “ann” ,等待搜索出现 Enable annotation processing ,对它勾选,然后Apply应用(这个应该是表示使用注解的,例如@Controller。。。)【如果对这个用处有问题希望大家在评论区更正,谢谢!】
然后修改Maven(为了下载速度快一点,要不然会奇慢无比)
之后右下角会出现:
这个东西表示问要不导入包,点击Import Changes,之后就是等待编译器下载包,因为项目暂时还没有很多依赖包,所以等待时间应该不会很长。
等待的过程中来看一下项目文件目录,目录结构如下(简单的标注了一下,如果有问题欢迎评论区提出!):
尝试启动一下:
访问127.0.0.1:8080,因为默认使用8080端口(如果需要修改端口可以在配置文件中修改,下面会介绍)。
这里因为没有设置404页面,但是可以看到项目启动成功!!!
第二步
因为有一点spring基础,参考以前带码进行套用。
先看一下pom.xml文件:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-starter-parent</artifactId> 8 <version>2.4.3</version> 9 <relativePath/> <!-- lookup parent from repository --> 10 </parent> 11 <groupId>com.seventeen</groupId> 12 <artifactId>kfyyxt</artifactId> 13 <version>0.0.1-SNAPSHOT</version> 14 <name>kfyyxt</name> 15 <description>Demo project for Spring Boot</description> 16 <properties> 17 <java.version>1.8</java.version> 18 </properties> 19 <dependencies> 20 <dependency> 21 <groupId>org.springframework.boot</groupId> 22 <artifactId>spring-boot-starter-web</artifactId> 23 </dependency> 24 25 <dependency> 26 <groupId>org.springframework.boot</groupId> 27 <artifactId>spring-boot-starter-test</artifactId> 28 <scope>test</scope> 29 </dependency> 30 </dependencies> 31 32 <build> 33 <plugins> 34 <plugin> 35 <groupId>org.springframework.boot</groupId> 36 <artifactId>spring-boot-maven-plugin</artifactId> 37 </plugin> 38 </plugins> 39 </build> 40 41 </project>
pom.xml
现在只有最基础的SpringWeb,我们需要引入几个新的包
修改后如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-starter-parent</artifactId> 8 <version>2.4.3</version> 9 <relativePath/> <!-- lookup parent from repository --> 10 </parent> 11 <groupId>com.seventeen</groupId> 12 <artifactId>kfyyxt</artifactId> 13 <version>0.0.1-SNAPSHOT</version> 14 <name>kfyyxt</name> 15 <description>Demo project for Spring Boot</description> 16 <properties> 17 <java.version>1.8</java.version> 18 </properties> 19 <dependencies> 20 <dependency> 21 <groupId>org.springframework.boot</groupId> 22 <artifactId>spring-boot-starter-web</artifactId> 23 </dependency> 24 25 <dependency> 26 <groupId>org.springframework.boot</groupId> 27 <artifactId>spring-boot-starter-test</artifactId> 28 <scope>test</scope> 29 </dependency> 30 <!-- JSON库 --> 31 <dependency> 32 <groupId>org.springframework.boot</groupId> 33 <artifactId>spring-boot-starter-json</artifactId> 34 <version>2.0.3.RELEASE</version> 35 <scope>compile</scope> 36 </dependency> 37 <!-- jstl JSP标准标签库 --> 38 <dependency> 39 <groupId>javax.servlet</groupId> 40 <artifactId>jstl</artifactId> 41 <version>1.2</version> 42 </dependency> 43 <!-- 返回jsp页面还需要这个依赖 --> 44 <dependency> 45 <groupId>org.apache.tomcat.embed</groupId> 46 <artifactId>tomcat-embed-jasper</artifactId> 47 <scope>provided</scope> 48 </dependency> 49 <!-- freemarker模板引擎视图 --> 50 <dependency> 51 <groupId>org.springframework.boot</groupId> 52 <artifactId>spring-boot-starter-freemarker</artifactId> 53 </dependency> 54 <!-- 热部署,不用重启 --> 55 <dependency> 56 <groupId>org.springframework.boot</groupId> 57 <artifactId>spring-boot-devtools</artifactId> 58 <optional>true</optional> 59 </dependency> 60 <!-- thymeleaf 模板--> 61 <dependency> 62 <groupId>org.springframework.boot</groupId> 63 <artifactId>spring-boot-starter-thymeleaf</artifactId> 64 </dependency> 65 66 </dependencies> 67 68 <build> 69 <plugins> 70 <plugin> 71 <groupId>org.springframework.boot</groupId> 72 <artifactId>spring-boot-maven-plugin</artifactId> 73 </plugin> 74 </plugins> 75 </build> 76 77 </project>
pom.xml
其中添加的内容暂时放到其中,如果有错误欢迎指正!
之后经过各种折腾查询,找到了能运行自定义类的方法(鼓捣了半天)
1 package com.seventeen.kfyyxt.demo.config; 2 3 public class Constant { 4 public static final String APP_NAME = "demo"; 5 /** 6 * 模块访问路径 7 */ 8 public static final String APP_PATH = "/demo/"; 9 /** 10 * 模块视图路径 11 */ 12 public static final String APP_VIEW = "/demo"; 13 14 }
Constant
1 package com.seventeen.kfyyxt.demo.controller; 2 3 import com.seventeen.kfyyxt.demo.config.Constant; 4 5 import org.springframework.stereotype.Controller; 6 import org.springframework.web.bind.annotation.RequestMapping; 7 import org.springframework.web.bind.annotation.ResponseBody; 8 import org.springframework.web.bind.annotation.RestController; 9 import org.springframework.web.servlet.ModelAndView; 10 11 @RequestMapping(value = Constant.APP_PATH + "hello") 12 @Controller(value = Constant.APP_NAME + "hello") 13 //@Controller 14 //@RestController (当返回页面时,不能用这个注释) 15 public class HelloController { 16 17 18 /** 19 * @ResponseBody 这个注解如果只是单纯的返回页面可以不加,但是如果返回json字符串,就必须要加上,否则默认返回的是页面 20 * 如果是仅返回页面,@ResponseBody 加不加都可以 21 */ 22 @ResponseBody 23 // @RequestMapping(value = Constant.APP_PATH + "hello/index") 24 @RequestMapping(value = "index") 25 public ModelAndView index(){ 26 return new ModelAndView(Constant.APP_VIEW + "/hello/index"); 27 } 28 29 @ResponseBody 30 /** 31 * 开头如果有 @RequestMapping(value = Constant.APP_PATH + "hello") 32 * 下面的各个方法上就不用加 Constant.APP_PATH 33 */ 34 // @RequestMapping(value = Constant.APP_PATH + "hello/hah") 35 @RequestMapping(value = "hah") 36 public String hah(){ 37 return "Hello World !!!哇偶!!!"; 38 //这样返回返回的是页面,需要将它返回成模板 39 } 40 }
HelloController
其中写了一下注释,根据我的实验和理解,如果有错误欢迎评论区指正!
再来看一下我的模板文件目录结构:
因为是测试,所以只是写了一个模板文件
1 <h2 style="color:blue;">Hi!Hello World!!!</h2>
index.ftl
其中项目的默认模板目录是static,需要加一个依赖包,否则是找不到模板文件的 !(记不住是哪个包了,按照上面pom.xml配置就可以)
再看一下配置文件:
1 #修改端口号 2 server.port=8888 3 4 #jsp path 5 spring.mvc.view.prefix=/WEB-INF/jsp/ 6 spring.mvc.view.suffix=.jsp 7 8 #freemarker path(使用 .ftl 模板页面) 9 spring.freemarker.suffix=.ftl
application.properties
这里就可以修改8080端口为8888端口,我们访问的时候使用127.0.0.1:8080就可以了
结果:
返回页面
返回数据
到这里,基本可以保证,页面和返回数据都可以实现!