1、SpringMVC—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.2 对象的方式接收参数

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

要求: 1.属性的名称必须与name属性名称一致. 2. 要求对象中必须有set/get方法 对象的属性都是private public xxxx getUser(User user)

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面试题

考题: 什么是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启动流程

在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值