day01--2021-06-23

目录

1.SpringMVC

1.1 框架的作用

1.2 SpringMVC参数传递的格式

1.2.1 简单参数传值

1.2.3 同名提交问题

1.2.4 为对象的引用赋值

1.2.5 restFul风格

1.2.6 restFul面试题

1.2.7 SpringMVC调用流程图(扩展)

2. 京淘项目环境搭建

2.1 选择根目录

2.2 IDEA环境调试

2.2.1 安装lombok

2.2.2 控制字体大小/参数提示

2.2.3 开启自动编译

2.2.4 自动保存

2.3 Maven配置

2.3.1 settings文件

2.3.2 IDEA配置

2.4 创建SpringBoot项目

2.4.1 创建项目

2.4.2 选择jar包依赖

3. SpringBoot框架

3.1 SpringBoot框架作用

3.2 pom.xml文件说明

3.2.1 parent标签作用

3.2.2 maven坐标的作用

3.2.3 项目依赖

3.2.4 build标签作用

3.2.5 项目打包相关知识

3.3 SpringBoot执行流程(内部结构)

3.3.1 元注解

3.3.2 SpringBootConfiguration注解

3.3.3 @ComponentScan

3.3.4 EnableAutoConfiguration

3.3.5 SpringBoot所有的启动项输出:

3.3.6 SpringBoot启动流程


1.SpringMVC

1.1 框架的作用

接收前端传递的数据,与用户进行交互.

1.2 SpringMVC参数传递的格式

1.2.1 简单参数传值

            <input   type="text"  name="username"  value="admin" />
            <input   type="text"  name="age"  value="18" />

前提: servlet 是一种参数传递的机制 要求:所有的参数类型都是String 数据类型
说明: 数据类型的转化是框架帮助完成的!!!
public xxxx getUser(String username,Integer age)

1.2.3 同名提交问题

                 <input  name="hobby" type="text" value="吃1">
            <input  name="hobby" type="text" value="吃2">
            <input  name="hobby" type="text" value="吃3">

说明: 有时页面中会出现同名的提交问题 name属性都是一致的. 问 SpringMVC如何接收
原理: 当页面进行同名提交. 会将参数使用","号进行拼接 hobby = 吃1,吃2,吃3 String数据类型
mvc参数接收:

        public xxxx getUser(String[] hobby){
            //hobby 按照,号拆分为数组  之后循环变量 取值操作......
        }
        ...的本质 就是数组
        public xxxx getUser(String... hobby){
            //hobby 按照,号拆分为数组  之后循环变量 取值操作......
        }                
 

 

1.2.4 为对象的引用赋值

原则: SpringMVC中页面的name属性名称 不能重复, 除非同名提交问题
实际需求: 使用对象的引用解决 实际需求中的同名提交问题

     <input  name="name" type="text" value="二郎神">  user(name) 二郎神,啸天
     <input  name="dog.name" type="text" value="啸天">     dog(name)  二郎神,啸天

        public class User{
            private String name;   //二郎神
            private Dog dog;       //dog对象
        }
        public class Dog{
            private String name;   //啸天
        }
        public xxxx getUser(User user){
            
        }    
 

 

1.2.5 restFul风格

get请求案例: http://localhost:8080/getUser?id=100
restFul: 可以简化get请求的结构 简化key 使用/进行分隔,请求路径中不能有动词,要求restFul的请求是无状态的.
http://localhost:8080/user/100/tom
参数接收:

        @RequestMapping("/user/{id}/{name}")
        public xxx getUser(@Pathvariable Integer id,@Pathvariable String name){
        }
        //要求: {属性名称} 必须与对象的属性名称一致   get/set方法支持
        @RequestMapping("/getUser/{id}/{name}")
        public xxx getUser(User user){
        }
 

 请求类型与业务逻辑的关系:
请求路径: http://localhost:8080/user/100/tom type=“put”
RestFul中要求: 通过请求的类型控制业务逻辑的执行.
1.Get 查询操作
2.Post 登录/注册时使用(增)
3.Put 修改操作
4.Delete 删除操作

        @GetMapping("/user/{id}/{name}")
        public xxx getUser(@Pathvariable Integer id,@Pathvariable String name){
        }
        
        @PutMapping("/user/{id}/{name}")
        public xxx getUser(User user){
        }
 

 

1.2.6 restFul面试题

答:
1.restFul其实可以简化之前的get请求的类型,将参数使用/的方式进行分隔,减少了url参数的传递的字节信息.
2.restFul规定,可以通过一个url请求的地址,通过不同的请求的类型,控制业务逻辑. restFul中 要求路径中不能出现动词.

1.2.7 SpringMVC调用流程图(扩展)

在这里插入图片描述

 

2. 京淘项目环境搭建

程序员操作: 路径不能有中文/空格/特殊字符 /不要放到C盘的系统文件中

2.1 选择根目录

1).在本地磁盘中 指定根目录

在这里插入图片描述

2).利用IDEA打开目录

在这里插入图片描述

 

 

2.2 IDEA环境调试

2.2.1 安装lombok

说明: 使用lombok插件 可以简化用户编辑get/set/toString/构造等常规方法.

在这里插入图片描述

2.2.2 控制字体大小/参数提示

在这里插入图片描述

2.2.3 开启自动编译

在这里插入图片描述

2.2.4 自动保存

在这里插入图片描述

2.3 Maven配置

2.3.1 settings文件

1).本地库的配置

在这里插入图片描述

 2).远程仓库地址

 <mirror>
    <id>aliyun</id>
    <name>aliyun for maven</name>
    <mirrorOf>*</mirrorOf>
    <url>https://maven.aliyun.com/repository/public</url>
   </mirror>
 

3).指定JDK版本

 <profile>
   <id>jdk-1.8</id>
   <activation>
    <activeByDefault>true</activeByDefault>
      <jdk>1.8</jdk>
   </activation>
   <properties>
       <maven.compiler.source>1.8</maven.compiler.source>
       <maven.compiler.target>1.8</maven.compiler.target>
       <maven.compiler.compilerVersion>
        1.8
       </maven.compiler.compilerVersion>
     </properties>
   </profile>
 

2.3.2 IDEA配置

在这里插入图片描述

2.4 创建SpringBoot项目

2.4.1 创建项目

在这里插入图片描述

2.4.2 选择jar包依赖

在这里插入图片描述

3. SpringBoot框架

3.1 SpringBoot框架作用

SpringBoot项目可以理解为框架的框架(工具API). (Spring/SpringMVC/Mybatis),简化框架的调用.
核心思想: 开箱即用!!!
SpringBoot内部与Spring无缝集成.
Spring的作用: 整合其他的第三方框架,使得业务调用变得浑然一体.
Spring IOC机制 控制反转: 将对象创建的权利交给Spring容器管理,由容器管理对象的生命周期.
Spring优势: 解决了框架之间的耦合性问题.

框架之间的结构(了解)
在这里插入图片描述

3.2 pom.xml文件说明

3.2.1 parent标签作用

<!--1.parent标签作用
          parent标签中规定了Springboot与其他框架整合时候所用到的jar包的版本
          的定义!!!. 这些jar包的版本都是经过官方测试的.几乎不会出现版本冲突.
        总结: 版本的定义!!!
      -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
 

3.2.2 maven坐标的作用

说明: 通过坐标 可以在本地仓库/远程镜像服务器中,准确查找需要的jar包文件

<!--2.maven的坐标-->
    <!--项目的组ID-->
    <groupId>com.jt</groupId>
    <!--项目名称 一般都是英文-->
    <artifactId>springboot_demo_1</artifactId>
    <!--版本控制-->
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot_demo_1</name>
    <description>Demo project for Spring Boot</description>
 

3.2.3 项目依赖

<!--jar包文件的依赖   如果需要某些功能,则使用依赖进行导入
            按需导入.
            大部分都进了定义,但是个别的需要手动导入(需要自定版本)        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

3.2.4 build标签作用

<!--maven通过插件对maven版本的springboot进行管理
        体现: 项目打包/发布/测试等相关操作.
    -->
    <build>
        <plugins>
            <!--springboot专门为springboot的工程开发了一款项目管理插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
 

3.2.5 项目打包相关知识

1).打包命令

在这里插入图片描述

2).打包成功之后的效果

在这里插入图片描述

3).clean 表示删除target中的目录
4).一般项目的打包顺序 1.build 2.clean 3.install

3.3 SpringBoot执行流程(内部结构)

3.3.1 元注解

说明: 修饰注解的注解 称为元注解.
用法:
@Target(ElementType.TYPE) 注解对谁有效(类/方法/属性)
@Retention(RetentionPolicy.RUNTIME) 什么时期有效 整合运行期间有效
@Documented 是否需要生成文档.
@Inherited 该注解是否可以被继承 可以被继承
 

3.3.2 SpringBootConfiguration注解

说明: 该注解标识了main方法的类.相当于告诉程序 主启动类就是一个大的配置类.
将来主启动类执行时,会去扫描所有的小的配置类, 小的配置类由主启动类负责执行并且加载.
统一将对象交给spring容器管理.

 

3.3.3 @ComponentScan

说明: SpringBoot启动时需要加载很多事先准备好的配置类,但是由于个别导入之后,会导致整个程序运行异常.,所以需要排除个别启动项 例如

深入说明: jar包具有依赖的传递性,通常都会进行引入,如果某些类影响程序,则需要手动排除,而不是排除整个jar包文件.
A.jar -----> B.jar ------> C(xxxx.class).jar

3.3.4 EnableAutoConfiguration

说明: 该注解表示自动化的配置.
包含:

1.@AutoConfigurationPackage 动态扫描主启动类的包路径.
注意事项: 以后写代码 在主启动类的同包及子包中编辑.
2.@Import(AutoConfigurationImportSelector.class)

自动化配置: 添加自动化的启动项 等待程序调用

        <dependency>
            <groupId>org.springframework.boot</groupId>

            <!--
                spring-boot-starter: springboot启动项
                SpringBoot官网针对于该框架已经完成了"配置" 用户只需要简单的配置
                既可以使用该功能.
            -->
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 

SpringBoot程序启动的流程:
根据选择器 执行pom.xml文件中的启动项

在这里插入图片描述

 

3.3.5 SpringBoot所有的启动项输出:

Positive matches:
-----------------

   AopAutoConfiguration matched:
      - @ConditionalOnProperty (spring.aop.auto=true) matched (OnPropertyCondition)

   AopAutoConfiguration.ClassProxyingConfiguration matched:
      - @ConditionalOnMissingClass did not find unwanted class 'org.aspectj.weaver.Advice' (OnClassCondition)
      - @ConditionalOnProperty (spring.aop.proxy-target-class=true) matched (OnPropertyCondition)

   DispatcherServletAutoConfiguration matched:
      - @ConditionalOnClass found required class 'org.springframework.web.servlet.DispatcherServlet' (OnClassCondition)
      - found 'session' scope (OnWebApplicationCondition)
 

3.3.6 SpringBoot启动流程

在这里插入图片描述

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值