CGB2103-day01

news/2024/11/23 16:57:00/

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 对象的方式接收参数

	html     <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启动流程

在这里插入图片描述


http://www.ppmy.cn/news/520831.html

相关文章

CA证书验证

在学习https过程中对一个场景一直有疑惑&#xff1a; 在客户端请求服务端后&#xff0c;服务端会返回给客户端数字证书&#xff0c;但是数字证书可以被钻改啊&#xff0c;假的证书无法被解密&#xff0c;那如果用真的证书来替换呢&#xff1f; 后来找了相关资料才知道&#xff…

cocosCreator 3.3~6 安卓热更新官方详细示例

官方的热更新虽给出了示例和源码&#xff0c;但是一些细节的地方和步骤还是没说清楚&#xff0c;导致新手包括我死活是运行不起来&#xff0c;热更新失败&#xff01;很打击人啊。这里有必要给出新手的热更新步骤&#xff0c;前提是你安装了Node.js和python环境&#xff0c;我装…

等约束二次规划中的特征分解研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

2022全国地区年终奖绩效调研报告

导读&#xff1a; 《2022年度绩效专项调研报告》是一份针对薪资结构中各项绩效部分的调研报告&#xff0c;从市场的角度调研分析了各项绩效的项目和比例&#xff0c;是人力资源部绩效发放的市场指南。HR及企业管理者可以从中了解员工对于各项绩效的反馈&#xff0c;行业内绩效统…

【深度学习】6-4 卷积神经网络 - CNN的实现

CNN的实现 网络的构成是“Convolution - ReLU - Pooling -Affine - ReLU - Affine - Softmax”&#xff0c;我们将它实现为名为 SimpleConvNet的类。 首先来看一下 SimpleConvNet的初始化&#xff08;init&#xff09;&#xff0c;取下面这些参数。 input_dim——输入数据的维…

v-model实现原理(一根绳上的蚂蚱)

目录 1、什么是v-model2、v-model实现原理3、实现示例3.1 实现text和textarea3.2 实现checkbox和radio3.3 实现select 1、什么是v-model v-model 本质上是一颗语法糖&#xff0c;可以用 v-model 指令在表单 <input>、<textarea> 及 <select>元素上创建双向数…

Codeforces Round 878 (Div. 3) A~E G1

杂谈&#xff1a;懒得想F和G2了&#xff0c;F太长了&#xff0c;看了G1过的人多一点就做它了&#xff0c;G2也没想出来&#xff0c;之后看看题解 Codeforces Round 878 (Div. 3) A. Cipher Shifer 题意&#xff1a;初始字符序列&#xff0c;在每个字符后加任意不同于本身的字…

1Panel 安装部署

1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。 1. 环境要求 安装前请确保您的系统符合安装条件&#xff1a; 操作系统&#xff1a;支持主流 Linux 发行版本&#xff08;基于 Debian / RedHat&#xff0c;包括国产操作系统&#xff09;&#xff1b; 服务器架构&#…