javaWeb复习笔记

Maven

Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。

Maven的作用:

方便的依赖管理 统一的项目结构 标准的项目构建流程

仓库:用于存储资源,管理各种jar包。

本地仓库:自己计算机上的一个目录。

中央仓库:由Maven团队维护的全球唯一的。 仓库地址:https://repo1.maven.org/maven2/

远程仓库(私服):一般由公司团队搭建的私有仓库。

Maven坐标:

Maven 中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。 使用坐标来定义项目或引入项目中需要的依赖。

Maven 坐标主要组成

groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)  

artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)

version:定义当前项目版本号

依赖配置:

依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖。

配置:

1.在 pom.xml 中编写 <dependencies> 标签

2.在 <dependencies> 标签中 使用 <dependency> 引入坐标

3.定义坐标的 groupId,artifactId,version

4.点击刷新按钮,引入最新加入的坐标

依赖传递:

依赖具有传递性

直接依赖:在当前项目中通过依赖配置建立的依赖关系

间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

排除依赖:

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。

依赖范围:

依赖的jar包,默认情况下,可以在任何地方使用。可以通过 <scope>…</ scope > 设置其作用范围。 作用范围:

Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一。

Maven中有3套相互独立的生命周期:

clean:清理工作。

default:核心工作,如:编译、测试、打包、安装、部署等。

site:生成报告、发布站点等。

每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。

在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行

SpringBoot

Spring Boot 可以帮助我们非常快速的构建应用程序、简化开发、提高效率 。

HTTP

概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。

特点:

1.基于TCP协议:面向连接,安全

2.基于请求-响应模型的:一次请求对应一次响应

3.HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。 缺点:多次请求间不能共享数据。 优点:速度快

SpringBootWeb请求响应

前后端分离开发

当前最为主流的开发模式:前后端分离

请求
简单参数:

简单参数:参数名与形参变量名相同,定义形参即可接收参数。

简单参数:如果方法形参名称与请求参数名称不匹配,可以使用 @RequestParam 完成映射。

注意:@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。 如果该参数是可选的,可以将required属性设置为false。 

实体参数:

简单实体对象:请求参数名与形参对象属性名相同,定义POJO接收即可

复杂实体对象:

请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数。

数组集合参数

数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数

集合参数:

请求参数名与形参集合名称相同且请求参数为多个,@RequestParam 绑定参数关系

日期参数

日期参数:使用 @DateTimeFormat 注解完成日期参数格式转换

JSON 参数

JSON参数:JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用 @RequestBody 标识

路径参数

路径参数:通过请求URL直接传递参数,使用{…}来标识该路径参数,需要使用 @PathVariable 获取路径参数

响应

响应数据

类型:方法注解、类注解

位置:Controller方法上/类上

作用:将方法返回值直接响应,如果返回值类型是 实体对象/集合 ,将会转换为JSON格式响应

说明:@RestController = @Controller + @ResponseBody ;

统一响应结果:

分层解耦

三层架构

controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据。

service:业务逻辑层,处理具体的业务逻辑。

dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增、删、改、查。

内聚:软件中各个功能模块内部的功能联系。

耦合:衡量软件中各个层/模块之间的依赖、关联的程度。

软件设计原则:高内聚低耦合。

控制反转: Inversion Of Control,简称IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。

依赖注入: Dependency Injection,简称DI。容器为应用程序提供运行时,所依赖的资源,称之为依赖注入。

Bean对象:IOC容器中创建、管理的对象,称之为bean。

Bean的声明

要把某个对象交给IOC容器管理,需要在对应的类上加上如下注解之一:

注意:声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写。 使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller。

Bean组件扫描

前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描。 @ComponentScan注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解 @SpringBootApplication 中,默认扫描的范围是启动类所在包及其子包。

Bean注入

@Autowired注解,默认是按照类型进行,如果存在多个相同类型的bean,将会报出如下错误:

 Mybatis

MyBatis是一款优秀的 持久层 框架,用于简化JDBC的开发。

数据库连接池

数据库连接池是个容器,负责分配、管理数据库连接(Connection)

它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个

释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏

优点:

资源重用 提升系统响应速度 避免数据库连接遗漏

标准接口:DataSource

官方(sun)提供的数据库连接池接口,由第三方组织实现此接口。

 功能:获取连接

lombok

 Lombok是一个实用的Java类库,能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,并可以自动化生成日志变量,简化java开发、提高效率。

 删除操作:

@Delete("delete from emp where id = #{id}") public void delete(Integer id);

如果mapper接口方法形参只有一个普通类型的参数,#{…} 里面的属性名可以随便写,如:#{id}、#{value}。

预编译SQL:性能更高 ,更安全(防止SQL注入)

SQL注入是通过操作输入的数据来修改事先定义好的SQL语句,以达到执行代码对服务器进行攻击的方法。

新增操作

@Insert("insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time) " +         "values(#{username}, #{name}, #{gender}, #{image}, #{job}, #{entrydate}, #{deptId}, #{createTime}, #{updateTime})") public void insert(Emp emp);

新增(主键返回)

描述:在数据添加成功后,需要获取插入数据库数据的主键。

更新操作

@Update("update emp set username=#{username}, name=#{name}, gender=#{gender}, image=#{image}, job=#{job}, entrydate=#{entrydate}, dept_id=#{deptId}, update_time=#{updateTime} where id=#{id}") public void update(Emp emp);

查询操作(根据ID查询) 

@Select("select * from emp where id = #{id}") public Emp getById(Integer id);

数据封装

实体类属性名 和 数据库表查询返回的字段名一致,mybatis会自动封装。 如果实体类属性名 和 数据库表查询返回的字段名不一致,不能自动封装。

XML映射文件

规范:

XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)。

XML映射文件的namespace属性为Mapper接口全限定名一致。

XML映射文件中sql语句的id与Mapper 接口中的方法名一致,并保持返回类型一致。

动态SQL

随着用户的输入或外部条件的变化而变化的SQL语句,我们称为 动态SQL。

<if>:用于判断条件是否成立。使用test属性进行条件判断,如果条件为true,则拼接SQL。 <where>:where 元素只会在子元素有内容的情况下才插入where子句。而且会自动去除子句的开头的AND 或OR。

<foreach>

collection:集合名称

item:集合遍历出来的元素/项

separator:每一次遍历使用的分隔符

open:遍历开始前拼接的片段

close:遍历结束后拼接的片段

<sql><include>

 <sql>:定义可重用的 SQL 片段。  <include>:通过属性refid,指定包含的sql片段。

SpringBootWeb

开发规范-Restful

REST是风格,是约定方式,约定不是规定,可以打破。 描述模块的功能通常使用复数,也就是加s的格式来描述,表示此类资源,而非单个资源。如:users、emps、books…

@RequestMapping

一个完整的请求路径,应该是类上的 @RequestMapping 的value属性 + 方法上的 @RequestMapping的value属性。

分页查询:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值