static和templates部分参考博客:https://blog.csdn.net/wangb_java/article/details/71775637

热部署参考博客:https://www.cnblogs.com/cx-code/p/8686453.html

SpringBoot里面没有我们之前常规web开发的WebContent(WebApp),它只有src目录

在src/main/resources下面有两个文件夹,static和templates   springboot默认  static中放静态页面,而templates中放动态页面

静态页面:

这里我们直接在static放一个hello.html,然后直接输入http://localhost:8080/hello.html便能成功访问

(好像可以新建一个public文件夹,也可以放静态文件)

也可以通过controller跳转:

@Controller
public class HelloController {@RequestMapping("/Hi")public String sayHello() {return "hello.html";}}

然后输入http://localhost:8080/Hi就可以成功访问

动态页面:

动态页面需要先请求服务器,访问后台应用程序,然后再转向到页面,比如访问JSP。spring boot建议不要使用JSP,默认使用Thymeleaf来做动态页面。

现在pom中要添加Thymeleaf组件

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

我们先在tempates文件夹中也新建一个hello.html但内容不同,然后先试一下直接访问该页面。输入http://localhost:8080/hello.html:

结果显然访问的是静态问价夹里面的那个hello.html

然后我们现在再试一下用controller:

似乎无法访问到hello.html了。。。这是因为:

静态页面的return默认是跳转到/static/index.html,当在pom.xml中引入了thymeleaf组件,动态跳转会覆盖默认的静态跳转,默认就会跳转到/templates/index.html,注意看两者return代码也有区别,动态没有html后缀。

也就是我们要这样改controller:

@Controller
public class HelloController {@RequestMapping("/Hi")public String sayHello() {return "hello";}}

然后就可以成功跳转了

然后我们看看返回一点数据在前端利用Thyemleaf来拿:

@Controller
public class HelloController {@RequestMapping("/Hi")public ModelAndView sayHello() {ModelAndView modelAndView = new ModelAndView();modelAndView.setViewName("hello");modelAndView.addObject("key", 12345);//System.out.println("test");return modelAndView;}}

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>Insert title here</title></head>
<body>
<h1>this is the hello.html in templates</h1>
<span th:text="${key}"></span>
</body>
</html>

效果:

如果不想返回视图,则用@RestController

如果用了静态模板你还想返回static中的页面,那么就要用重定向:

如果在使用动态页面时还想跳转到/static/index.html,可以使用重定向return "redirect:/index.html"。

return "redirect:hello.html";  

几点tips:

1.拦截的url最后不要跟视图重合,否则会抛出Circular view path异常,我之前就是

@Controller
public class HelloController {@RequestMapping("/hello")public String sayHello() {return "hello.html";  }}

然后就报错说会有个循环视图的错误,反正以后注意就是。

2.每次改完都要重新停止应用,再重新启动很烦~但springboot有个叫热部署的东西,就是说在项目中修改代码可以不用重新停止应用再重新启动,可以自动重启,这里我们用的是devtools:

具体见博客:https://www.cnblogs.com/cx-code/p/8686453.html

转载于:https://www.cnblogs.com/ysq0908/p/10676016.html

Springboot的static和templates区别相关推荐

  1. HTML之position:absolute relative static fixed的区别和理解

    HTML之position:absolute relative static fixed的区别 在理解position:absolute relative static fixed的区别时,我们先需要 ...

  2. 总结const、readonly、static三者的区别【收藏、转载】20190614

    总结const.readonly.static三者的区别 const:静态常量,也称编译时常量(compile-time constants),属于类型级,通过类名直接访问,被所有对象共享! a.叫编 ...

  3. 【通俗易懂学JAVA】——public void与public static void的区别

    通俗易懂学JAVA public void与public static void的区别 public void与public static void的区别 ●区别: 这两句的区别就在于,能不能直接用类 ...

  4. spring boot security ajax_Spring 和 SpringBoot 之间到底有啥区别?

    来源:uee.me/cNDC8 概述 对于 Spring和 SpringBoot到底有什么区别,我听到了很多答案,刚开始迈入学习 SpringBoot的我当时也是一头雾水,随着经验的积累.我慢慢理解了 ...

  5. SpringBoot怎么直接访问templates下的html页面

    SpringBoot直接访问templates下的html问题 方法1:曾经: template下文件不允许直接访问 1.springboot项目默认是不允许直接访问template下的文件的,是受保 ...

  6. java中static、final、static final的区别

    总结一: final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变. final修饰的属性跟具体对象有关,在运行期初始 ...

  7. C#中const和static readonly 的区别

    我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等.在多数情况下可以混用. 二者本质的区别在于,const的值是在编译期间确定的,因此只能在 ...

  8. 关键字—final static const的区别

    关键字 解释 修饰类 修饰方法 修饰变量 final:终态 这个关键字的含义是"这是无法改变的"或者"终态的": 这个类不能被继承,这个类的所有方法都是fina ...

  9. Vue项目目录结构注解附assets与static目录的区别

    static与assets的区别: 为了回答这个问题,我们首先需要了解Webpack如何处理静态资产.在 *.vue 组件中,所有模板和CSS都会被 vue-html-loader 及 css-loa ...

最新文章

  1. 使用python函数计算3.5四舍五入的结果_python 数字的四舍五入-Go语言中文社区
  2. BCB 多线程的同步与协调
  3. Linux 修改主机名 和 ip 映射关系
  4. ai人工智能的本质和未来_人工智能的未来在于模型压缩
  5. python3导入模块原理_python模块导入原理
  6. http和webservice接口区别
  7. AcWing 896. 最长上升子序列 II(二分优化LIS)
  8. [Wireshark]_002_玩转数据包
  9. Shiro自定义Token
  10. Java创建ES嵌套文档及查询
  11. 未来20年美国AI研究路线图
  12. C++——EOF是个什么东西?
  13. mysql级联更新优化_mysql级联更新
  14. vue3组件之间通信(一)——父传子属性和方法
  15. 量子技术将如何颠覆未来战争形态
  16. NodeJS里如何连接MySQL并分别操作增删改查
  17. NONMEM基础模型
  18. 世界各国增值税的税率参考
  19. 计算机机房电力切换演练方案,中心机房开展2020年上半年电力切换应急演练
  20. 工业信息物理系统测试验证平台ETest_CPS

热门文章

  1. tomcat ---- web.xml
  2. ftp ---- vsftpd安装卸载
  3. sql 只要一个字段相同则只显示一条数据_数据库
  4. easypoi之IExcelVerifyHandler自定义校验使用
  5. windows安装多个jdk版本的切换问题
  6. java面向对象编程 漫画_Java面向对象编程(一)
  7. centos7 开机启动脚本
  8. 记录一次laravel5.5的安装
  9. iOS获取、写入系统相册图片
  10. Excel复制粘贴——跳过空单元格案例