SpringBoot开发

创建SpringBoot项目

大家都知道SpringBoot开发非常快,创建SpringBoot项目时,勾上SpringWEB就正常开发,不需要任何配置文件就可以运行,写个后台Controller层接口即可做测试了。

你不相信?

真的有那么神奇的东西?

那我现在就创建一个项目来一起测试下,我的开发环境JDK版本1.8,想玩SpringBoot或Springcloud的小伙伴一定要用jdk1.8及以上的版本哦,这里用开发工具是STS也就是eclipse升级版,专门用来开发SpringBoot、SpringcCloud而研发的

项目创建完成了,

这是我创建之后自生成的pom文件,可以看到除了SpringWeb和Springtest就没有其他的了

  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. <groupId>com.test</groupId>
  6. <artifactId>Test</artifactId>
  7. <version>1-SNAPSHOT</version>
  8. <name>Test</name>
  9. <description>Demo project for Spring Boot</description>
  10.  
  11. <properties>
  12. <java.version>1.8</java.version>
  13. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  14. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  15. <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
  16. </properties>
  17.  
  18. <dependencies>
  19. <dependency>
  20. <groupId>org.springframework.boot</groupId>
  21. <artifactId>spring-boot-starter-web</artifactId>
  22. </dependency>
  23.  
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-test</artifactId>
  27. <scope>test</scope>
  28. <exclusions>
  29. <exclusion>
  30. <groupId>org.junit.vintage</groupId>
  31. <artifactId>junit-vintage-engine</artifactId>
  32. </exclusion>
  33. </exclusions>
  34. </dependency>
  35.  
  36. </dependencies>
  37.  
  38. <dependencyManagement>
  39. <dependencies>
  40. <dependency>
  41. <groupId>org.springframework.boot</groupId>
  42. <artifactId>spring-boot-dependencies</artifactId>
  43. <version>${spring-boot.version}</version>
  44. <type>pom</type>
  45. <scope>import</scope>
  46. </dependency>
  47. </dependencies>
  48. </dependencyManagement>
  49.  
  50. <build>
  51. <plugins>
  52. <plugin>
  53. <groupId>org.apache.maven.plugins</groupId>
  54. <artifactId>maven-compiler-plugin</artifactId>
  55. <version>3.8.1</version>
  56. <configuration>
  57. <source>1.8</source>
  58. <target>1.8</target>
  59. <encoding>UTF-8</encoding>
  60. </configuration>
  61. </plugin>
  62. <plugin>
  63. <groupId>org.springframework.boot</groupId>
  64. <artifactId>spring-boot-maven-plugin</artifactId>
  65. <version>2.3.7.RELEASE</version>
  66. <configuration>
  67. <mainClass>com.test.main.TestApplication</mainClass>
  68. </configuration>
  69. <executions>
  70. <execution>
  71. <id>repackage</id>
  72. <goals>
  73. <goal>repackage</goal>
  74. </goals>
  75. </execution>
  76. </executions>
  77. </plugin>
  78. </plugins>
  79. </build>
  80.  
  81. </project>

热部署组件

当然,为了方便开发我们也可以加一个热部署组件,在开发中修改后台代码总需要无限关闭又重启项目的问题

这个组件就是devtools

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-devtools</artifactId>
  4. <scope>runtime</scope>
  5. <optional>true</optional>
  6. </dependency>

devtools版本号的话无需多说,都是SpringBoot自己管理,都是有一一对应的

测试

可以启动成功了,可以写测试接口了

添加热部署后,不需要重启项目,直接来测试

还不信,我们可以打个断点,用debug模式运行

到这里,后台测试完成了,那么前台资源怎么弄,为什么说坑?

我们知道,如何是一个web项目的时候,我们是有一个webApp目录,但是我们项目现在是没有的,那要不要加进去?

而且我不知道大家有没有发现,我们创建项目的时候,用的是jar包的形式,不是war包

废话不多说,我们加进去试试吧

为了测试方便,代码规范,我们把启动类的测试方法提取到controller层来

跳转前端页面

问题来了,这怎么跳转到HTMl页面去呢

开始呀,我也就随便写个方法试试,好家伙跳了个寂寞,直接404

我不知道大家发现没,你们在写web项目时,controller注解使用的是个啥,不应该是@Controller注解么?

我用的是@RestController,这个注解又是什么鬼

不应该是说跳转页面么?怎么又说到注解了?大家别急看完就知道了

这个@RestController注解的StringBoot独有的,它里面已经包含了@ResponseBody了,也正因为是标注在类上了,所以标注了@RestController的类不能实现页面跳转,

如果要跳转页面,重定向页面的话,只能新建一个controller类,标记上@Controller注解,千万别标记错了

你以为这样就行了么?

想想你在开发SSM框架时,写的那么多配置文件,是不是有点太简单了

thymeleaf

那我告诉你,确实没有那么简单,但是也不难,我们还需要加上一个组件,这个组件的名字就是thymeleaf

它的pom是

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  4. </dependency>

这个玩意干嘛的?

这个就是java模板引擎,听起来是不是挺高大尚的,其实就是以前你们写SpringMVC的东西,就是加前端视图解析器等一些玩意啦

说那么多都没啥用,自己看一下SpringBoot对它的一些默认配置规则吧

看到这里应该就不需要在进行多说了吧,我们就不需要写SpringMVC的配置文件了,按照它默认的配置对应的放进去就好了

thymeleaf的使用

当然,thymeleaf如果就那么一点功能那就不会说他是高大尚了,以前用jsp开发时所有该有的功能,有了thymeleaf都可以用另外一个方式使用

那到底怎么用呢,这里我就简单介绍一下,具体怎么用,有哪些功能我感觉这个大佬教的还不错,可以瞅瞅

https://fanlychie.github.io/post/thymeleaf.html

  1. <!DOCTYPE HTML>
  2. <html xmlns:th="http://www.thymeleaf.org"> <!--一定要在html标签中加上哦-->
  3. <head>
  4. <title>Index Page</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  6. </head>
  7. <body>
  8. <p th:text="${message}">Welcome to BeiJing!</p><!--th:xxx xxx指的是任意html属性都可以替换掉 ${后端传入前端的值}-->
  9. </body>
  10. </html>

SpringBoot静态资源映射规则

然后我们看一下SpringBoot静态资源配置映射规则

webjars

默认为webjars找静态文件,webjars是个什么鬼?

就是把前端用到的文件打包成jar包的形式

有兴趣的同学可以去瞅一眼

导入之后就是这样的啦,刚好映射到SpringBoot静态资源默认路径

其他静态资源路径

除了webjars就没有其他静态资源路径了吗?其实还是有的,一路调试跟踪下我们来到了这里

我们发现,最后存放静态资源文件路径就是这几个啦

  1. /**
    * 根路径下的子路径都是可以存放静态资源文件的
    */
    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
                         "classpath:/META-INF/resources/", // 这个是根路径
                         "classpath:/resources/",      // 根路径下的子路径
                         "classpath:/static/",        // 根路径下的子路径
                         "classpath:/public/"         // 根路径下的子路径
                         };

不信就直接上测试啦

所以知道怎么访问了吗?

访问静态资源的时候不需要加static、public等,但是如果是static 下的子文件夹就需要在路径上加上子文件名

比如是static下有一个abc文件夹,那么访问路径上就是这样啦   127.0.0.1:8080/abc.test.js

欢迎页存放路径

那我们的欢迎页放哪里呢

好了,关于静态资源文件的就那么多,不爱勿喷哦

初遇SpringBoot踩坑与加载静态文件遇到的坑的更多相关文章

  1. 在seajs中使用require加载静态文件的问题

    注意,在seajs中使用require加载静态文件时,必须使用常量,不能用变量.如果一定要用变量,请使用require.async var html = require("view/sys/ ...

  2. flask模板应用-加载静态文件:添加Favicon,使用CSS框架,使用宏加载静态资源

    加载静态文件 一个Web项目不仅需要HTML模板,还需要许多静态文件,比如CSS.JavaScript文件.图片和声音声.在flask程序中,默认需要将静态文件存储在与主脚本(包含程序实例的脚本)同级 ...

  3. django加载静态文件

    在一个网页中,不仅仅只有一个 html 骨架,还需要 css 样式文件. js 执行文件以及一些图片等,因此在 DTL 中加载静态文件是一个必须要解决的问题.在 DTL 中,使用 static 标签来 ...

  4. springmvc 加载静态文件失败

    header.jsp,部分代码 <head> <title>QA|VIS_PLATFORM</title> <meta content="width ...

  5. easyui datagrid 加载静态文件中的json数据

    本文主要介绍easyui datagrid 怎么加载静态文件里的json数据,开发环境vs2012, 一.json文件所处的位置 二.json文件内容 {"total":28,&q ...

  6. Django模版中加载静态文件配置详解

    .settings.INSTALLED_APPS下添加:django.contrib.staticfiles .settings.py下添加:STATIC_URL = '/static/' . ()在 ...

  7. 41.Python中加载静态文件

    在一个网页中,不仅仅只有一个html骨架,还需要css样式文件,js执行文件以及一些图片等.因此在DTL中加载静态文件时一个必须要解决的问题.在DTL中,使用static标签来加载静态文件.要使用st ...

  8. nginx提高加载静态文件速度

    1.本来对于静态网页,我们不需要放在应用容器中,原因一时由于应用服务器是用来解析动态网页的,针对静态网页本来就性能不高,而且还会占用应用容器的资源,所以我们专门使用nginx用来解析静态网页.     ...

  9. 二十:jinja2之加载静态文件

    静态文件: flask默认指定的静态文件路径为根目录下的static,可以自定义路径,并指定,使用url_for('文件夹', filename='文件名')引用 加载css文件 加载js文件 其他文 ...

随机推荐

  1. Alignment of Code UVA - 1593

      You are working in a team that writes Incredibly Customizable Programming Codewriter (ICPC) which ...

  2. Java JFR 民间指南 - 事件详解 - jdk.ObjectAllocationOutsideTLAB

    重新申请 TLAB 分配对象事件:jdk.ObjectAllocationOutsideTLAB 引入版本:Java 11 相关 ISSUES: JFR: RecordingStream leaks ...

  3. Spring Cloud & Alibaba 实战 | 第十二篇: 微服务整合Sentinel的流控、熔断降级,赋能拥有降级功能的Feign新技能熔断,实现熔断降级双剑合璧(JMeter模拟测试)

    目录 一. Sentinel概念 1. 什么是Sentinel? 2. Sentinel功能特性 3. Sentinel VS Hystrix 二. Docker部署Sentinel Dashboar ...

  4. 【死磕ibatis】SqlMapClient 基本操作示例

    前言:想要学习ibatis,我这里写了一些关于SqlMapClient 的具体例子,希望对你有帮助.话不多说,直接看例子. 例 1: 数据写入操作(insert, update, delete): s ...

  5. hdu4862 费用流(不错)

    题意:       给你一个矩阵,你最多可以选择k条路线,k条路线的起点随意,每次行走的距离随意,但是只能往右或者下走,走过的点不能再走,而且每一步如果a->b,如果a和b的权值s相等那么就可以 ...

  6. hdu4909 状态压缩(偶数字符子串)

    题意:       给你一个字符串,里面最多有一个'?','?'可以表示'a' - 'z',也可以什么都不表 示,这里要明确,什么都不表示不是不存在的意思,当aa什么都不表示的时候aa 也不等于aa? ...

  7. Windows中的工作组和域

    目录 工作组 工作组的访问 工作组的优缺点 域 ​域结构 域的原理 部署域架构 如何加入域 域中主机的登录 SRV出错及解决办法 SRV记录注册不成功的可能原因 禁用域中的账户 将计算机退出域 工作组 ...

  8. Python练习2-基本聊天程序-虚拟茶会话

    基本聊天程序 先来个基本的测试例子: Main.py from asyncore import dispatcher import socket,asyncore PORT = 11223 class ...

  9. springboot项目部署(war包)

    将springboot项目打包成war,并且部署到tomcat.比较麻烦,自己踩的坑也比较多.算了一下,找bug的时间,有两天熬到凌晨2点. 修改pom.xml使得打包成war <groupId ...

  10. android之Frame Animation

    一.在xml文件中设置帧动画 1.首先得在drawable资源文件夹下创建一个animation_list文件 <?xml version="1.0" encoding=&q ...