springboot QuickStart

一、创建一个springboot web项目

二、核心配置文件.yml与 .proprties文件

核心配置文件必须命名application

application.yml(或yaml)文件与application.proprties文件二选一,只有展现方式不一样

两个文件同时存在时,proporties文件优先级更高

#application.proprties文件必须为该名字与格式
server.port = ...
server.servlet.context-path = ... 
application.yml文件格式
server:
	port: ...
	servlet:
		context-path: ...

三、多环境下的核心配置文件的使用

开发环境,测试环境,准生产环境,生产环境等

为每个环境各编写一个配置文件

名称格式:application-任意名称.proporties(或.yml和.yaml)

在主配置文件中声明要使用的配置文件

spring.profiles.active = 配置文件名称中-后面的名称
spring:
	profiles:
		active: 配置文件名称中-后面的名称

四、springboot 在核心配置文件application.proporties自定义配置

变量名=变量值
@Value("${变量名}")
定义变量

将自定义配置集成到对象

对象名.变量名1=...
对象名.变量名2=...
@Component//将此类交给spring容器管理
@ConfigurationProporties(prefix="对象名")

五、springboot集成jsp

如何下载依赖到maven仓库中?

六、集成MyBatis

1.添加MyBatis依赖,MySQL驱动

		<!--Mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--mybatis整合springboot框架起步依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

2.使用mybatis提供的逆向工程生成实体bean,映射文件,dao接口

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <!-- 指定连接数据库的 JDBC 驱动包所在位置,指定到你本机的完整路径 -->
    <classPathEntry location="D:\maven\apache-maven-3.8.4\mysql\mysql-connector-java\8.0.27\mysql-connector-java-8.0.27.jar"/>
    <!-- 配置 table 表信息内容体,targetRuntime 指定采用 MyBatis3 的版本 -->
    <context id="tables" targetRuntime="MyBatis3">

        <!-- 抑制生成注释,由于生成的注释都是英文的,可以不让它生成 -->
        <commentGenerator>
            <property name="suppressAllComments" value="true" />
        </commentGenerator>

        <!-- 配置数据库连接信息 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"

                        connectionURL="jdbc:mysql://localhost:3306/springboot"
                        userId="root"
                        password="1234">
        </jdbcConnection>

        <!-- 生成 model 类,targetPackage 指定 model 类的包名, targetProject 指定
       生成的 model 放在 eclipse 的哪个工程下面-->
        <javaModelGenerator targetPackage="com.example.model1"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="false" />
            <property name="trimStrings" value="false" />
        </javaModelGenerator>

        <!-- 生成 MyBatis 的 Mapper.xml 文件,targetPackage 指定 mapper.xml 文件的
       包名, targetProject 指定生成的 mapper.xml 放在 eclipse 的哪个工程下面 -->
        <sqlMapGenerator targetPackage="com.example.mapper1"
                         targetProject="src/main/java">
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>

        <!-- 生成 MyBatis 的 Mapper 接口类文件,targetPackage 指定 Mapper 接口类的包
       名, targetProject 指定生成的 Mapper 接口放在 eclipse 的哪个工程下面 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.example.mapper1" targetProject="src/main/java">
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>

        <!-- 数据库表名及对应的 Java 模型类名 -->
        <table tableName="test1" domainObjectName="Account"
               enableCountByExample="false"
               enableUpdateByExample="false"
               enableDeleteByExample="false"
               enableSelectByExample="false"
               selectByExampleQueryId="false"/>
    </context>
</generatorConfiguration>
<!--在pom.xml中加入mybatis代码自动生成插件-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.6</version>
                <configuration>
                    <!--配置文件位置-->
                    <configurationFile>GeneratorMapper.xml</configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>

使用插件即可得到实体类与数据库操作接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7GZH8L1m-1651418546984)(C:\Users\zzdcn\AppData\Roaming\Typora\typora-user-images\image-20211205005821030.png)]

错误原因:没有编译studentMapper.xml配置文件,要手动指定文件夹为resources

七、springmvc常用注解

@RestController

​ 相当与控制层类上添加@Controller,方法上添加@ResponseBody, 意味当前控制层类中所有方法返回类都是json对象

@GetMapping(value = “…”)

​ 相当于@RequestMapping(value=“…”, methon = RequestMethon.GET),该注解通常在查询数据的时候使用

@PostMapping(value = “…”)

​ 相当于@RequestMapping(value=“…”, methon = RequestMethon.POST),该注解通常在新增数据的时候使用

@DeleteMapping(value=“…”)

​ 相当于@RequestMapping(value=“…”, methon = RequestMethon.DELETE),该注解通常在删除数据的时候使用

@PutMapping(value=“…”)

​ 相当于@RequestMapping(value=“…”, methon = RequestMethon,PUT),该注解同在在修改数据时使用

八、springboot实现RESTFul

http地址:http://localhost:8080/student?id=1001&staus=1

RESTFul架构风格http地址:http://localhost:8080/student/1001/1

九、springboot集成Thymelef

1、关闭页面缓存

application.properties核心配置文件关闭thymeleaf缓存

spring.thymeleaf.cache=false

编辑配置->运行应用程序更新策略全部换为更新资源

2、变量表达式

标准变量表达式 ${}

选择变量表达式 *{}

*{}必须使用th:object属性来绑定对象

    <div th:object="${data}">
        用户编号:<span th:text="*{id}"></span><br>
        用户名称:<span th:text="*{name}"></span><br>
	</div>

URL路径表达式 @{…}

​ 用在图片,文件等有路径的地方,a标签中的绝对路径

<a th:href="@{http://www.baidu.com}"></a>
<a th:href="@{相对路径(没有参数),如/user/detail}"></a>
<a th:href="@{相对路径,如/user/detail?参数}"></a>

<!--相对路径,参数从后台获取-->
<a th:href="@{'相对路径,如/user/detail?参数名'+${变量值}+...}"></a>
<a th:href="@{相对路径(参数名=${变量名},参数名=${变量名},...)}"></a>

从后台取值时用 th:前缀,否则解析不了,值固定时可用可不用

3、遍历循环list组合

lombok插件

pom.xml添加依赖

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

在类上方添加注释,自动生成构造函数,get方法和set方法等

import lombok.Data;

@Data
public class MyUser
{
    ...
}

4、校验规则

依赖:

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;

@Data
public class Taco {
    @NotNull		//不为空
    @Size(min=5, message="Name must be at least 5 characters long")	//字符串长度要求
    String name;
    @Size(min=1, message="you must choose at least 1 ingredient")	//数组长度
    private List<String> ingredients;
}

package com.example.taco;

import lombok.Data;
import org.hibernate.validator.constraints.CreditCardNumber;

import javax.validation.constraints.Digits;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;

@Data
public class Order {
    @NotBlank(message="Name is required")		//非空
    private String name;
    ...
    @Pattern(regexp = "^(0[1-9]|1[0-9]|2[0-2])([\\/])([1-9][0-9])",
            message = "Must be formatted MM/YY")        //regexp属性使用正则表达式
    private String ccExpiration;
    @Digits(integer = 3, fraction = 0, message = "Invalid CVV")     //值包含三位数字
    private String ccCVV;
}

在要进行校验的参数前使用注解@Valid

	@PostMapping
    public String processOrder(@Valid Order order, Errors errors){
        if(errors.hasErrors())
        {
            return "orderForm";
        }
        log.info("Order submitted: " + order);
        return "redirect:/";
    }

十、使用JDBC读取和写入数据

1、使用jdbcTemplate

jdbc依赖:

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

2、配置h2服务器

注入h2依赖

		<dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>

application.properties配置

spring.thymeleaf.cache=false
spring.resources.cache-period=0
server.port=80
	 
 #数据库链接,文件或内存
 #文件数据库不能自动运行sql文件,使用内存数据库
spring.datasource.url=jdbc:h2:file:./db/test01
#spring.datasource.url=jdbc:h2:mem:test
#spring.datasource.url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
 
#spring.datasource.schema=classpath:db/schema.sql
#resources/db/schema.sql
#spring.datasource.data=classpath:db/data.sql    
#resources/db/data.sql
	 
#web访问
spring.h2.console.settings.web-allow-others=true
spring.h2.console.path=/h2
spring.h2.console.enabled=true
	 
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.generate-ddl=true
spring.jpa.show-sql=true
#当数据库链接为文件时update才有效,如果为内存,每次也会删除
spring.jpa.hibernate.ddl-auto=update
spring.datasource.platform=h2
	 
logging.level.root=INFO
logging.level.org.hibernate=INFO
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
logging.level.org.hibernate.type.descriptor.sql.BasicExtractor=TRACE
logging.level.com.sguess=DEBUG
spring.jpa.database=h2
spring.jpa.show-sql=true
# ddl执行方式,update create 等
spring.jpa.hibernate.ddl-auto=update


spring.datasource.platform=h2  #表明使用的数据库平台是h2
spring.datasource.url=jdbc:h2:./data/test;AUTO_SERVER=TRUE
spring.datasource.username=sa
spring.datasource.password=123456
spring.datasource.driverClassName=org.h2.Driver

# 进行该配置后,h2 web consloe就可以在远程访问了。否则只能在本机访问。
spring.h2.console.settings.web-allow-others=true  
# 进行该配置,你就可以通过YOUR_URL/h2访问h2 web consloe。YOUR_URL是你程序的访问URl。
spring.h2.console.path=/h2-consloe
# 进行该配置,程序开启时就会启动h2 web consloe。当然这是默认的,如果你不想在启动程序时启动h2 web consloe,那么就设置为false。
spring.h2.console.enabled=true  

3、sql文件

创建表的sql:保存在src/main/resources/schema.sql文件

预加载数据的sql:保存在src/main/resources/data.sql文件

4、定义jdbc repository

使用jdbc Tempate将数据写入数据库

编写获取和保存Ingredient数据的repository,IngredientRepository接口与其实现类

5、插入数据

taco和order的Repostory功能只有保存对应对象,声明一个save()方法。但保存taco的同时要将与该taco对应的配料保存到taco_Ingredients表中

直接使用update()方法

如代码中的JdbcTacoRepository类

使用SimpleJdbcInsert()方法

如代码中的JdbcOrderRepository类

十一、过滤器Filter

1、注解方式:

在拦截器类中

声明一个拦截器

@WebFIlter(urlPattren, filterName)

声明拦截器的使用顺序

@Order(value)

package com.example.projectdemo.filter;

import org.springframework.core.annotation.Order;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

//声明拦截器的注解
@WebFilter(urlPatterns = "/api/*", filterName = "myFilter")
//声明过滤器顺序的注解
@Order(1)
public class MyFilter implements Filter {

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        String url = request.getRequestURI();
        String method = request.getMethod();
        
        filterChain.doFilter(servletRequest, servletResponse);

        System.out.println("拦截的接口:" + url + ",拦截的方法:" + method);
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("初始化拦截器");
    }

    @Override
    public void destroy() {
        Filter.super.destroy();
        System.out.println("销毁拦截器");
    }
}

启动函数添加注解扫描拦截器

@ServletComponentScan

2、Bean创建容器方式

在配置类创建

package com.example.projectdemo.config;

import com.example.projectdemo.filter.MyFilter;
import lombok.val;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FilterConfig {

    @Bean
    public MyFilter myFilter(){
        return new MyFilter();
    }

    @Bean
    public FilterRegistrationBean getFilterRegistrationBean(MyFilter myFilter){
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(myFilter);
        filterRegistrationBean.setOrder(1);
        filterRegistrationBean.addUrlPatterns("/api/*");
        filterRegistrationBean.setName("myFilter");
        return filterRegistrationBean;
    }
}

十二、拦截器Interceptor

1、
public MyFilter myFilter(){
return new MyFilter();
}

@Bean
public FilterRegistrationBean getFilterRegistrationBean(MyFilter myFilter){
    FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
    filterRegistrationBean.setFilter(myFilter);
    filterRegistrationBean.setOrder(1);
    filterRegistrationBean.addUrlPatterns("/api/*");
    filterRegistrationBean.setName("myFilter");
    return filterRegistrationBean;
}

}




## 十二、拦截器Interceptor

1、
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值