SpringBoot Web开发
jar:webapp!
自动装配
springboot到底帮我们配置了什么?我们能不能修改?能修改那些东西?能不能扩展?
- xxxAutoConfiguraion…向容器中自动配置组件
- xxxProperties:自动配置类,装配配置文件中自定义的一些内容!
要解决的问题:
- 导入静态资源
- 首页
- jsp,模板引擎Thymeleaf
- 装配扩展SpringMVC
- 增删改查
- 拦截器
- 国际化!
导入静态资源
总结
- 这几个地方呢都可以导入资源,研究源码可以得出结论
- 在springboot,我们可以使用一下方式处理资源
webjars localhost:8080/webjars/
public,static,/**,resources localhost:8080/ - 优先级:resources>static(默认)>public
- 一定要学会读源码这些结论都是源码中得出,读源码会让你主动的学习
首页定制
- 首页可以放在public,resources,static,templates中但是得注意如果你放在了templates中呢就得从controller中去跳转
- controller包下面的类indexController
package com.cloud.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
//在templates目录下的所有页面,只能通过controller来跳转!
//这个需要模板引擎的支持!thymeleaf
@Controller
public class indexController {
@RequestMapping ("/a")
public String index(){
return "index";
}
}
图标定制
- 在新版中图标定制被干掉了
jsp,模板引擎Thymeleaf
- 导入JRA包
<!--Thymeleaf都是基于3.x来开发的如果导入2.x版本就会报错需要注意这个问题-->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-java8time</artifactId>
</dependency>
- 项目结构
- controller包下面的类indexController类
package com.cloud.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
//在templates目录下的所有页面,只能通过controller来跳转!
//这个需要模板引擎的支持!thymeleaf
@Controller
public class indexController {
@RequestMapping ("/index")
public String index(){
return "index";
}
}
- 这个也就是我们说的当你把资源放在templates下始是需要导入模板引擎的,导入之后就可以访问了
取值
package com.cloud.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
//在templates目录下的所有页面,只能通过controller来跳转!
//这个需要模板引擎的支持!thymeleaf
@Controller
public class indexController {
@RequestMapping ("/index")
public String index(Model model){
model.addAttribute("a","hello");
return "index";
}
}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--所有的html元素都可以被thymeleaf替换接管: th:元素名-->
<div th:text="${a}" >首页</div>
</body>
MVC配置原理
- 项目结构
- 代码练习
package com.cloud.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.Locale;
//如果,你想diy一些定制化的功能,只要写这个组件,然后将它交给springboot,springboot就会帮助我们自动装配!
//扩展 springmvc dispatchservlet
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
//ViewResolver 实现了视图解析器接口类,我们就可以把它看做视图解析器
@Bean
public ViewResolver myViewResolver(){
return new MyViewResolver();
}
//自定义了一个自己的视图解析器MyViewResolver
public static class MyViewResolver implements ViewResolver{
@Override
public View resolveViewName(String viewName, Locale locale) throws Exception {
return null;
}
}
}
扩展SpringMVC
package com.cloud.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
//如果扩展springmvc,官方建议我们这样去做!
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
//视图跳转
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("cloud").setViewName("index");
}
}
- 在springboot中,有非常多的xxx Configuration帮助我们扩展配置,只要看见这个东西,我们就要注意了!