Springboot的static和templates区别
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区别相关推荐
- HTML之position:absolute relative static fixed的区别和理解
HTML之position:absolute relative static fixed的区别 在理解position:absolute relative static fixed的区别时,我们先需要 ...
- 总结const、readonly、static三者的区别【收藏、转载】20190614
总结const.readonly.static三者的区别 const:静态常量,也称编译时常量(compile-time constants),属于类型级,通过类名直接访问,被所有对象共享! a.叫编 ...
- 【通俗易懂学JAVA】——public void与public static void的区别
通俗易懂学JAVA public void与public static void的区别 public void与public static void的区别 ●区别: 这两句的区别就在于,能不能直接用类 ...
- spring boot security ajax_Spring 和 SpringBoot 之间到底有啥区别?
来源:uee.me/cNDC8 概述 对于 Spring和 SpringBoot到底有什么区别,我听到了很多答案,刚开始迈入学习 SpringBoot的我当时也是一头雾水,随着经验的积累.我慢慢理解了 ...
- SpringBoot怎么直接访问templates下的html页面
SpringBoot直接访问templates下的html问题 方法1:曾经: template下文件不允许直接访问 1.springboot项目默认是不允许直接访问template下的文件的,是受保 ...
- java中static、final、static final的区别
总结一: final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变. final修饰的属性跟具体对象有关,在运行期初始 ...
- C#中const和static readonly 的区别
我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等.在多数情况下可以混用. 二者本质的区别在于,const的值是在编译期间确定的,因此只能在 ...
- 关键字—final static const的区别
关键字 解释 修饰类 修饰方法 修饰变量 final:终态 这个关键字的含义是"这是无法改变的"或者"终态的": 这个类不能被继承,这个类的所有方法都是fina ...
- Vue项目目录结构注解附assets与static目录的区别
static与assets的区别: 为了回答这个问题,我们首先需要了解Webpack如何处理静态资产.在 *.vue 组件中,所有模板和CSS都会被 vue-html-loader 及 css-loa ...
最新文章
- 使用python函数计算3.5四舍五入的结果_python 数字的四舍五入-Go语言中文社区
- BCB 多线程的同步与协调
- Linux 修改主机名 和 ip 映射关系
- ai人工智能的本质和未来_人工智能的未来在于模型压缩
- python3导入模块原理_python模块导入原理
- http和webservice接口区别
- AcWing 896. 最长上升子序列 II(二分优化LIS)
- [Wireshark]_002_玩转数据包
- Shiro自定义Token
- Java创建ES嵌套文档及查询
- 未来20年美国AI研究路线图
- C++——EOF是个什么东西?
- mysql级联更新优化_mysql级联更新
- vue3组件之间通信(一)——父传子属性和方法
- 量子技术将如何颠覆未来战争形态
- NodeJS里如何连接MySQL并分别操作增删改查
- NONMEM基础模型
- 世界各国增值税的税率参考
- 计算机机房电力切换演练方案,中心机房开展2020年上半年电力切换应急演练
- 工业信息物理系统测试验证平台ETest_CPS