JavaWeb
JS
1.JS引入方式
2.变量
JavaScript 中用 var 关键字(variable 的缩写)来声明变量 。
JavaScript 是一门弱类型语言,变量可以存放不同类型的值 。
变量名需要遵循如下规则:
Ø组成字符可以是任何字母、数字、下划线(_)或美元符号($)
Ø数字不能开头
Ø建议使用驼峰命名
ECMAScript 6 新增了 let 关键字来定义变量。它的用法类似于 var,但是所声明的变量,只在 let 关键字所在的代码块内有效,且不允许重复声明。
ECMAScript 6 新增了 const 关键字,用来声明一个只读的常量。一旦声明,常量的值就不能改变。
•var:声明变量,全局作用域/函数作用域,允许重复声明
• let:声明变量,块级作用域,不允许重复声明
• const:声明常量,一旦声明,常量的值不能改变
3.数据类型
JavaScript中分为:原始类型 和 引用类型。
var 变量名 = new Array(元素列表);
4.BOW
Browser Object Model 浏览器对象模型,允许JavaScript与浏览器对话, JavaScript 将浏览器的各个组成部分封装为对象。
location地址对象:就是那个框
属性
history:对 History 对象的只读引用。请参阅 History 对象。
location:用于窗口或框架的 Location 对象。请参阅 Location 对象。
navigator:对 Navigator 对象的只读引用。请参阅 Navigator 对象。
方法
alert():显示带有一段消息和一个确认按钮的警告框。
confirm():显示带有一段消息以及确认按钮和取消按钮的对话框。
setInterval():按照指定的周期(以毫秒计)来调用函数或计算表达式。
setTimeout():在指定的毫秒数后调用函数或计算表达式。
5.DOM(概念:Document Object Model ,文档对象模型)
6.事件监听
事件:HTML事件是发生在HTML元素上的 “事情”。比如:
1 | 按钮被点击 |
事件监听:JavaScript可以在事件被侦测到时 执行代码。
事件绑定
方式一:通过 HTML标签中的事件属性进行绑定
1 | <input type="button" onclick="on()" value="按钮1"> |
方式二:通过 DOM 元素属性绑定
1 | <input type="button" id="btn" value="按钮2"> |
常见事件
7.Vue
Vue 是一套前端框架,免除原生JavaScript中的DOM操作,简化书写。
基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上。
Vue快速入门
常用指令
指令:HTML 标签上带有 v- 前缀 的特殊属性,不同指令具有不同含义。例如:v-if,v-for…
常用指令
指令 | 作用 |
---|---|
v-bind | 为HTML标签绑定属性值,如设置 href , css样式等 |
v-model | 在表单元素上创建双向数据绑定 |
v-on | 为HTML标签绑定事件 |
v-if | 条件性的渲染某元素,判定为true时渲染,否则不渲染 |
v-else-if | |
v-else | |
v-show | 根据条件展示某元素,区别在于切换的是display属性的值 |
v-for | 列表渲染,遍历容器的元素或者对象的属性 |
指令 | 作用 |
---|---|
v-bind | 为HTML标签绑定属性值,如设置 href , css样式等 |
v-model | 在表单元素上创建双向数据绑定 |
通过v-bind或者v-model绑定的变量,必须在数据模型中声明。
生命周期
生命周期:指一个对象从创建到销毁的整个过程。
生命周期的八个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法(钩子)。
状态 | 阶段周期 |
---|---|
beforeCreate | 创建前 |
created | 创建后 |
beforeMount | 挂载前 |
mounted | 挂载完成 |
beforeUpdate | 更新前 |
updated | 更新后 |
beforeDestroy | 销毁前 |
destroyed | 销毁后 |
生命周期的八个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法(钩子)
1 | <script> |
mounted:挂载完成,Vue初始化成功,HTML页面渲染成功。(发送请求到服务端,加载数据)
Maven
Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。
基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。
作用
依赖管理:方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题
统一项目结构:提供标准、统一的项目结构
项目构建:标准跨平台(Linux、Windows、MacOS)的自动化项目构建方式
清理、编译、测试、打包、发布
Maven概述
Maven坐标
Maven 中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。
使用坐标来定义项目或引入项目中需要的依赖。
Maven 坐标主要组成
groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)
artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
version:定义当前项目版本号
依赖配置
依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖。
1 | 1.在 pom.xml 中编写 <dependencies> 标签 |
1 | <dependencies> |
依赖具有传递性
直接依赖:在当前项目中通过依赖配置建立的依赖关系
间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。
依赖范围
依赖的jar包,默认情况下,可以在任何地方使用。可以通过
1 | <scope>…</ scope > |
设置其作用范围。
作用范围:
scope****值 | 主程序 | 测试程序 | 打包(运行) | 范例 |
---|---|---|---|---|
compile(默认) | Y | Y | Y | log4j |
test | - | Y | - | junit |
provided | Y | Y | - | servlet-api |
runtime | - | Y | Y | jdbc驱动 |
生命周期
Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一。
Maven中有3套相互独立的生命周期:
在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行。
- clean:清理工作。
- default:核心工作,如:编译、测试、打包、安装、部署等。
- site:生成报告、发布站点等。
1 | clean:移除上一次构建生成的文件 |
Spring
Spring Framework配置比较繁琐,入门的难度比较大
Sprint Boot简化配置,快速入门
SpringBootWeb入门
Controller类
HTTP协议
HTTP-概述
基于请求-响应模型:一次请求对应一次响应
基于TCP协议:面向连接、安全
HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。
缺点:多次请求间不能共享数据
优点:速度快
Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
HTTP-请求协议
get
post
HTTP-响应协议
200 | 客户端请求成功。 |
---|---|
404 | 请求资源不存在,般是URL输入有误,或者网站资源被删除了。 |
500 | 服务器发生不可预期的错误。 |
HTTP-协议解析
Web服务器-Tomcat
Web服务器 对HTTP协议操作进行封装,简化web程序开发
部署web项目,对外提供网上信息浏览服务。
Tomcat简介
一个轻量级的web服务器,支持servlet、jsp等少量javaEE规范。
也被称为web容器、servlet容器。
- 概念: Tomcat是Apache 软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范。
- JavaEE:Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF
- Tomcat 也被称为 Web容器、Servlet容器。Servlet程序需要依赖于 Tomcat才能运行
- 官网:https://tomcat.apache.org/
小结
- 起步依赖
- 内嵌Tomcat服务器
Web后端开发-请求响应
请求
Postman
前后端分离开发
当前最为流行的开发模式:前后端分离
Postman
postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。
作用:常用于进行接口测试
简单参数
原始方式
获取请求参数,需要HttpServletRequest 对象手动获取
SpringBoot方式
简单参数:参数名与形参变量名相同,定义形参即可接收参数。
1 |
|
简单参数:如果方法形参名称与请求参数名称不匹配,可以使用 @RequestParam 完成映射。
1 |
|
@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。 如果该参数是可选的,可以将required属性设置为false。
实体参数
简单实体对象:请求参数名与形参对象属性名相同,定义POJO接收即可
1 |
|
复杂实体对象:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数。
1 |
|
数组集合参数
数组参数
数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数
1 |
|
集合参数@RequestParam
集合参数:请求参数名与形参集合名称相同且请求参数为多个,@RequestParam 绑定参数关系
1 |
|
总结
==数组:请求参数名与形参中数组变量名相同,可以直接使用数组封装==
==集合:请求参数名与形参中集合变量名相同,通过@RequestParam绑定参数关系==
日期参数@DateTimeFormat
日期参数:使用 @DateTimeFormat 注解完成日期参数格式转换
1 |
|
Json参数
JSON参数:JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用 @RequestBody 标识
1 |
|
路径参数
路径参数:通过请求URL直接传递参数,使用{…}来标识该路径参数,需要使用 @PathVariable 获取路径参数
1 |
|
响应
@ResponseBody
位置:Controller类上/方法上
作用:将方法返回值直接响应,若返回值类型是 实体对象/集合 ,转JSON格式响应
说明:@RestController = @Controller + @ResponseBody ;
统一响应结果
如果一个个的响应,不方便管理和维护
分层解耦
三层架构
controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据。
service:业务逻辑层,处理具体的业务逻辑。
dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增、删、改、查。
可能有很多类型的数据,比如是xml的、数据库的、或者是别人给的
定义Dao层的接口,增强扩展性
控制反转:
Inversion Of Control,简称IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。
依赖注入:
Dependency Injection,简称DI。容器为应用程序提供运行时,所依赖的资源,称之为依赖注入。
Bean对象:IOC容器中创建、管理的对象,称之为bean。
1 | 1: Service层和Dao层的实现类,交给IOC容器管理 |
如果要切换service,只需要把component修改了就行
IOC详解
IOC对象 又称为bean对象
注解 | 说明 | 位置 |
---|---|---|
@Component | 声明bean的基础注解 | 不属于以下三类时,用此注解 |
@Controller | @Component的衍生注解 | 标注在控制器类上 |
@Service | @Component的衍生注解 | 标注在业务类上 |
@Repository | @Component的衍生注解 | 标注在数据访问类上(由于与mybatis整合,用的少) |
声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写。
使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller。
Bean组件扫描
前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描。
@ComponentScan注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解 @SpringBootApplication 中,默认扫描的范围是启动类所在包及其子包。
Bean注入
@Autowired注解,默认是按照类型进行,如果存在多个相同类型的bean,将会报出如下错误: