SpringBoot的Web开发

AOEBIU 2020/2/4 SpringBoot
$SpringBoot的Web开发
通过Webjars官网,引入前端框架和静态资源
选择需要的版本点击maven将约束复制到pom.xml中来
启动项目可以在webjars路径下访问到,如 http://127.0.0.1:8080/webjars/jquery/3.3.1/jquery.js (被/webjars映射)
其他静态资源
classpath:/META-INF/resources/
classpath:/resources/
classpath:/static/
classpath:/public/
/ 项目根路径
这个时候直接访问http://127.0.0.1:8080/js/index.js就可以访问 (被/**映射)
这个时候访问 http://127.0.0.1:8080/index.html 或http://127.0.0.1:8080/ 就可以访问(被/**映射)
图标(被/**/favicon.ico映射),访问任意页面可以看到图标已经改变
#手动配置静态资源路径
spring.resources.static-locations=classpath:/hello/,classpath:/hello2/
SpringBoot使用Thymeleaf
Thymeleaf是一种模板引擎,和jsp类似
<!--引入thymeleaf-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
在properties标签中覆盖SpringBoot默认的thymeleaf的版本
<properties>
<java.version>1.8</java.version>
<thymeleaf.version>3.0.9.RELEASE</thymeleaf.version>
<!--layout2.0以上的版本才支持thymeleaf3-->
<thymekeaf-layout-dialect.version>2.2.2</thymekeaf-layout-dialect.version>
</properties>
使用thymeleaf需要把模板页面放在类路径下的/templates/下,并且只支持.html页面
控制台可能会报错并显示元素类型 "meta" 必须由匹配的结束标记 "" 终止
<!--注意:IDEA自动生成的页面都不规范,它是一个自闭合标签少了一个/ -->
<meta charset="UTF-8"/>
Thymeleaf的使用
在后端准备一些数据放入域中
@RequestMapping("/success")
public String Success(Map<String, Object> map) {
map.put("hello", "<h1>hello</h1>");
map.put("users", Arrays.asList("张三", "李四", "王五"));
return "success";
}
勾上这个
html页面导入名称空间
<!--代替<html lang="en">-->
<html lang="en" xmlns:th="http://www.thymeleaf.org">
Thymeleaf获取域中的对象的语法,域中的元素会被取出来并放在标签之中
<!--会转义特殊字符-->
<div th:text="${hello}"></div>
<!--不会转义特殊字符-->
<div th:utext="${hello}"></div>
<br/>
循环,遍历users,每个元素为user然后通过th:text显示
<h4 th:text="${user}" th:each="user:${users}"></h4>
<br/>
错误写法,Thymeleaf不能和JSP一样
<div>${hello}</div>
代替写法
<!--[[]]:会转义特殊字符,相当于th:text-->
<h4 th:each="user:${users}">[[${hello}]]</h4>
<!--[()]:不会转义特殊字符,相当于th:utext-->
<h4 th:each="user:${users}">[(${hello})]</h4>
访问页面的结果,结果正确
扩展SpringMVC
继承WebMvcConfigurerAdapter这个抽象类
它还实现了WebMvcConfigurer接口(不能标注@EnableWebMvc,除非你想全面接管SpringMVC)所以只是一个适配器,并且保留了SpringBoot的自动配置
需要什么功能就重写什么方法
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {
/**
* 视图映射
*
* @param registry 访问/hello跳转到success
*/
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/hello222").setViewName("success");
}
@Bean
public WebMvcConfigurerAdapter webMvcConfigurerAdapter() {
return new WebMvcConfigurerAdapter() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
}
};
}
}
觉得这篇文章对你有有帮助吗?
发表评论
0
说扒~

条回复 个点赞
为什么没人来抢占个沙发呢?