目录
1 前端
1.1 前台
1.1.1 程序开发体系
B/S是Brower/Server的缩写,即浏览器/服务器结构。
C/S是Client/Server的缩写,即客户端/服务器模式。
1.1.2 Web应用概述
Web使用超文本技术将Internet上的资源以网页的形式展示出来;
Internet采用超文本和超媒体的信息组织形式,将信息的链接扩展到整个Internet上。
Web构成
服务器:包括物理设备和软件应用程序,物理设备指远程计算机;软件应用程序是应用程序,Apache,Tomcat等。
客户端:通常指客户使用的本地计算机。
Web应用
Web应用程序是一种使用Web访问的应用程序。例如:百度
Web应用程序是一种使用HTTP作为核心通信协议
Web服务器:Web服务器只负责处理HTTP协议,只能发送静态页面的内容。Apache、IIS、Nginx。
Web应用服务器:提供访问商业逻辑的途径以供客户端应用程序使用,Tomcat
1.1.3 相关标准
- HTTP请求信息由3部分组成:
请求方法/URL/协议版本
请求头(Request Header)
请求正文
HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。
- HTTP响应
包括:状态行、响应报头和响应正文
状态行:包含HTTP版本、状态码以及解释状态码的简单短语
10x 消息
20x 成功
30x 重定向
40x 请求错误 404 找不到 403 禁止
50x 服务器错误
MIME
1.2 HTML标记语言
1.2.1 meta
META元素通常用于指定网页的描述,关键词,文件的最后修改时间,作者及其他元数据。
<meta name="description" content="免费在线教程">
<meta name="keywords" content="HTML,CSS,XML,JavaScript">
<meta name="author" content="runoob">
<meta charset="utf-8" >
1.2.2 HTML5增加的结构元素
article、section、nav、aside、header、footer、time、hgroup、address、main
1.2.3 Html实体字符
格式:&一个实体名称
1.2.4 HTML的颜色表示
英文名称:blue,red;
RGB:RGB分别是red、green、blue的首字母。RGB每个原色的最小值是0(16进制为00),最大值是255(16进制为FF)。表示方式为#rrggbb。如白色的RGB值(255,255,255),就用#ffffff表示;黑色的RGB值(0,0,0),就用#000000表示。
1.2.5 HTML的基本页面元素
- 标题标记
<h1></h1> <h2></h2> <h3></h3>
- 段落标记<p>和换行标记<br/>
- 块标记<div>和<span>
<div>是一种块(block)容器,默认的状态是占据一行,而<span>是一个行间(inline)的容器,其默认状态是行间的一部分.
- 有序列表<ol>
<ol type="" start=""> <li>列表信息</li> </ol>
有序列表Type属性及说明
- 无序列表<ul>
<ul type="" > <li>列表信息</li> </ul>
- 自定义列表<dl>它不是一个项目的序列,而是一系列项目和它们的解释。
<dl> <dt>名称<dd>说明 </dl>
- 超链接语法格式如下。
<a href=" url" target=" target-windows" >链接标题</a>
target属性指定用于打开链接的目标窗口,默认方式是原窗口。
target的值及说明
href属性定义了链接标题所指向的目标文件的URL地址。
内部链接:URL值设置为相对路径
外部链接: URL值设置为绝对路径
书签链接
根路径:以“/”开头,后面紧跟文件路径
相对路径
1.2.6 多媒体
- 图像标记<img>
- 文件标记<embed>
<embed src="url" width="" height="" autostart="" loop=""></embed>
- 视频标记<video>
<video src="url" controls="" width="" height="">替代文字</video>
- 音频标记<audio>
<audio src="url" controls="controls">替代内容</audio>
- 表单(Form)
HTML的一个重要部分,是网页提供的一种交互式操作手段,主要用于采集和提交用户输入的信息。
<form name="formName" method="post|get" action="url"
enctype="encoding"></form>
- 输入标记<input>
<input name="控制名称" type="类型控制">
- 列表框标记<select>,同时嵌套列表项标记<option>
- 文本域输入标记<textarea>
<textarea name="mytext" rows="5" cols="100" ></textarea>
- HTML5新增表单和input属性
- 数值输入域
<input name="" type="number" min="" max="" step="" value="">
- 滑动条
<input name="" type=" range " min="" max="" step="" value="">
- 日期选择器—date pickers
date—选取日、月、年
month—选取月、年
week—选取周和年
time—选取时间(小时和分钟)
datetime—选取时间、日、月、年(UTC-世界标准时间)
datetime-local—选取时间、日、月、年(本地时间)
1.2.7 HTML的表格标记
<table>
<tr>
<td></td>
</tr>
</table>
<table border= "2 ">,设置表格边框线宽度为2个像素
<td colspan="value">
其中value的值为大于等于2的整数,表示该单元格向右跨越的列数。
<td rowspan="value">
其中value的值为大于等于2的整数,表示该单元格向下跨越的行数。
1.2.8 内嵌框架属性
属 性 |
描 述 |
src |
设置源文件的地址 |
width |
设置内嵌框架窗口宽度 |
height |
设置内嵌框架窗口高度 |
bordercolor |
设置边框颜色 |
align |
设置框架对齐方式,可选值为left、right、top、middle、bottom |
name |
设置框架名称,是链接标记的target所需参数 |
scrolling |
设置是否要滚动条,默认为auto根据需要自动出现。Yes-有,No-无 |
frameborder |
设置框架边框,1-显示边框,0-不显示(不提倡用 yes 或 no) |
framespacing |
设置框架边框宽度 |
marginheight |
设置内容与窗口上下边缘的边距,默认为1 |
marginwidth |
设置内容与窗口左右边缘的距离,默认为1 |
- 3 CSS
1.3.1 CSS的基本选择器
CSS可以认为是多个选择器组成的集合,每个选择器由3个基本部分组成——“选择器名称”、“属性”和“值”,格式定义如下。
selector {
property:value;
}
- 标记选择器
一个HTML页面由很多不同的标记组成,例如<p>、<h1>、<div>等。
tagName {
property:value;
}
- 类选择器
类选择器用来为一系列标记定义相同的呈现方式。
.className {
property:value;
}
- ID选择器
ID选择器和类选择器在设置格式的功能上类似,都是对特定属性的属性值进行设置。
ID选择器的一个重要功能是用做网页元素的唯一标识,所以,一个HTML文件中一个元素的ID属性值中惟一的。
ID选择器比类选择器具有更高的优先级
#idName{
property:value ;
}
1.3.2 在HTML中使用CSS的方法
- 行内样式
直接把CSS代码添加到HTML的代码行中,由<style>标记支持:<h1 style="color:blue;font-style:bold"></h1>
- 嵌入样式
写在HTML文档的<head>和</head>之间,通过<style>和</style>标记来声明。
行内样式的作用域只有一行,而嵌入的样式可以作用于整个HTML文档中。
- 链接样式
链接样式先要定义一个扩展名为“.css”的文件(即外部样式表)。<head>中添加代码,格式如下。
<link rel="stylesheet" type="text/css" href=" mystyle.css" />
- 导入样式
导入样式也需要一个单独的外部CSS文件,然后再将其导入到HTML文件中。
在HTML文件初始化时将外部CSS文件导入到HTML文件内,作为文件的一部分,类似于嵌入。
要在内嵌样式表的<style>标记中使用@import导入一个外部的CSS文件。
<style type="text/css">@import "mystyle.css";</style>
优先级
行内样式>嵌入样式>链接样式>导入样式
1.3.3 复合选择器
- 交集选择器
由两个选择器直接连接构成的,其结果是选中两者各自作用范围的交集。其中,第一个必须是标记选择器,第二个必须是类选择器或ID选择器,例如:“h1.class1;p#id1”。交集选择器的基本语法格式如下。
tagName.className {
property:value;
}
- 并集选择器
对多个选择器进行集体声明,多个选择器之间用“,”隔开,每个选择器可以是任何类型选择器。
selector1,selector2,… {
property:value;
}
- 后代选择器
通过嵌套的方式,对特殊位置的HTML标记进行控制。例如,当<div>与</div>之间包含<b>标记时,可以用后代选择器定义出现在<div>标记中的<b>标记的格式。后代选择器的写法是把外层的标记写在前面,内层的标记写在后面,之间用空格隔开。
selector1 selector2 {
property:value;
}
- 子选择器
selector1>selector2
- 相邻选择器
相邻选择器的定义符号是加号(+),可以选中紧跟在它后面的一个兄弟元素(这两个元素具有共同的父元素)。
- 属性选择器
通过属性,给元素增加很多附加信息。例如,通过id属性,可以区分不同的元素;通过class属性,可以设置元素的样式。为了扩展属性选择器的功能,可以使用^、$和*这三个通配符。
1.3.4 CSS3新增选择器
- 伪类选择器
伪类选择器区别于类选择器,类选择器是由用户自行定义,而伪类选择器是在CSS中已经定义好的选择器。伪类选择器可以分为结构伪类选择器和UI元素伪类选择器2种。
基本结构伪类选择器
UI伪类选择器
- 伪元素选择器
:first-letter和:first-line
:first-letter用于选中元素内容的首字符。:first-line用于选中元素中的首行文本。
:before和:after
:before和:after两个伪对象必须配合content属性使用才有意义。它们的作用是在指定的标记内产生一个新的行内标记,该行内元素的内容由content属性里的内容决定。
before选择器用于在某个元素之前插入内容。
<E>: before {
content:文字或其他内容
}
1.3.5 用CSS3设置文本样式
- 字体属性
1.font-family属性
h1 {font-family: "微软雅黑","仿宋_GB2312","楷体_GB2312";}
2.font-size属性
控制文字的大小,它的取值分为4种类型——绝对大小、相对大小、长度值以及百分数。
3.font-style属性
指定元素显示的字形。font-style属性的值包括normal、italic和oblique 3种。
4.font-variant属性
用于在浏览器上显示指定元素的字体变体。该属性可以有3个值:normal、small-caps和inherit。
5.font-weight属性
定义了字体的粗细值,它的取值可以是以下值中的一个——normal、bold、bolder和lighter,默认值为normal。
6.font复合属性
使用font属性可一次性设置前面介绍的各种字体属性(属性之间以空格分隔)。在使用font属性设置字体格式时,字体属性名可以省略。font属性的排列顺序是:font-weight、font-variant、font-style、font-size和font-family
- 文本属性
1.word-spacing和letter-spacing属性
word-spacing用于设定单词之间的间隔,它的取值可以是normal或具体的长度值,也可以是负值;默认值为normal,表示浏览器根据最佳状态调整字符间距。
letter-spacing属性和word-spacing类似,它的值决定了字符间距(除去默认距离外)。它的取值可以是normal或具体的长度值,也可以是负值;默认值为normal,也就是说,如果将letter-spacing设置为0,它的效果并不与normal相同。
2.text-align属性
text-align属性指定了所选元素的对齐方式(类似于HTML标记符的align属性),取值可以是left、right、center和justify,分别表示左对齐、右对齐、居中对齐和两端对齐。
3.text-indent属性
text-indent属性可以对特定选项的文本进行首行缩进,取值可以是长度值或百分比。
4.line-height属性
line-height属性决定了相邻行之间的间距(或者说行高),其取值可以是数字、长度或百分比,默认值是normal。
5.text-decoration属性
text-decoration属性可以对特定选项的文本进行修饰,它的取值为none、underline、overline、line-through和blink,默认值为none,表示不加任何修饰。
6.text-transform属性
text-transform属性用于转换文本,取值为capitalize、uppercase、lowercase和none,默认值是none。
7.text-shadow属性
text-shadow属性用于向文本添加一个或多个阴影,取值为color、length、opacity,其语法为:
text-shadow: X-Offset Y-Offset shadow color。
8.word-wrap 属性
允许超过容器的长单词换行到下一行。
9.word-break 属性
用来处理如何自动换行。它的取值为normal、break-all和keep-all。
1.3.6 用CSS3设置颜色与背景
- 颜色设置
color属性用于控制HTML元素内文本的颜色,取值可以使用下面的任意一种方式。
• 颜色名:英文名
• #rrggbb:十六进制数表示颜色
• #rgb:是#rrggbb的一种简写方式,例如,#0000FF可以表示为#00F,#00FFDD表示为#0FD。
• rgb(rrr,ggg,bbb):使用十进制数表示颜色的红、绿、蓝分量
• rgb(rrr%,ggg%,bbb%):使用百分比表示颜色的红、绿、蓝分量
- 背景设置
1.background-color 背景颜色。
2.background-image 背景图像,取值为url(imageurl)或none。
3.background-attachment 控制背景图像是否随内容一起滚动,取值为scroll或fixed。
4.background-position 背景图像相对于关联区域左上角的位置。
5.background-repeat 是否重复显示,取值可以是repeat/repeat-x/repeat-y/ no-repeat。
6.background 同时设置background-color、background-image、background-attachment、background-position和background-repeat等背景属性。
- 圆角边框和图像边框
1.圆角边框
border-radius属性设计圆角边框。border-radius属性赋4个值,这4个值按照top-left、top-right、bottom-left、bottom-right的顺序来设置。
• 如果只设置1个值,则表示4个圆角相同。
2.图像边框
使用<img>标记的border属性可以为图片添加边框的粗细,以像素为单位。当设置属性值为0时,则显示为没有边框。
<img src="img1.jpg" border="2" />
边框的其他不同属性
border-width(粗细)border-color(颜色)border-style(线型):
3. 图文混排
CSS使用float属性来实现文字环绕效果。float属性主要定义图像向哪个方向浮动。
float:none/left/right;
1.4 JS
1.4.1 使用方式
- 直接嵌入JavaScript
- 链接外部JavaScript文件
<script type="text/javascript" src="index.js"></script>
<script type="text/javascript" src="D:/Js/index.js"></script>
- 直接在HTML标签中使用
<a href="javascript:alert('你好JavaScript')">测试</a>
<input type="button" value="显示Hello" οnclick="javascript:alert('Welcome!');" />
1.4.2 BOM基础
浏览器对象模型(Browser Object Model,BOM)主要是用于访问和操纵浏览器窗口。
- Window
Window对象是用来表示浏览器中一个打开的窗口。
window.open(url, target, specs, replace)打开一个新的窗口。四个参数(均为可选)分别是:
url 要打开窗口的路径
target 打开方法
_blank 在新窗口打开,默认设置为_blank
_self 在原窗口打开,替代原窗口
_parent 在父框架中打开
name 指定在某个窗口打开
specs 规定新窗口的样式(用逗号连接,不用空格)
width=pixels
height=pixels
replace 是否在history列表中替代当前页面
- Navigator对象是指浏览器对象,包含浏览器的信息
1.4.3 DOM
文档对象模型(Document Object Model,DOM)是一种处理HTML文档的应用程序接口。采用的是树型结构目录.
在JavaScript中,最常用的是节点(node)对象、元素(Element)对象、文档(Document)对象以及一些比较特殊常用元素对象。
在JavaScript中,可以通过页面元素的ID属性、name属性以及标签名来访问指定的元素。
使用document对象的getElementById("id")getElementsByName("name")
getElementsByTagName(tag)方法分别访问指定ID、指定name和tag的元素。
DOM节点
基础节点 childNodes parentNode
首尾子节点 firstChild lastChild
兄弟节点 nextSibling previousSibling
元素属性操作
V.style.display=“none”;
V.style[‘display’]=‘none’;
Dom方式
获取:getAttribute(name)
设置:setAttribute(name,value)
删除:removeAttribute(name)
创建DOM元素
createElement(标签名)
appendChild(节点)
插入DOM元素
insertBefore(节点,原有节点)
删除DOM元素
removeChild(节点)
1.5 JSP
Tomcat搭建
目录:
bin: 可执行文件(startup.bat, shutdown.bat)
conf: 配置文件(server.xml)
lib: tomcat依赖的jar文件
log:日志文件(记录出错等信息)
temp:临时文件
webapps: 可执行的项目(将我们开发的项目放入该目录)
work: 存放由Jsp翻译成的java(servlet类文件)以及编译成的class文件
初始页面的设置(web.xml中)
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
1.5.1 JSP执行流程
第一次访问:服务端JSP翻译成JAVA,再将JAVA编译成class文件。
第二次访问:不需要翻译和编译过程,而是直接访问。
1.5.2 JSP的页面元素
(1)访问方式
A.<%局部变量、java语句 %>
B.<%!字段、方法 %>
C.<%=表达式 %>
(2)Page指令:
<%@ page %>
Page指定的属性:
Language:jsp页面使用的脚本语言
pageEncoding: jsp文件自身编码 jsp->java
contentType:浏览器解析jsp的编码
import: java代码需要使用的类的包的导入
(3)注释:
Html注释<!-- -->
Java注释// /*…*/
Jsp 注释 <%-- --%>
用户可以通过浏览器查看到Html注释;而另外两个注释看不到。
1.5.3 JSP内置对象
Out:
输出对象,功能是向客户端输出内容 Out.Print println
Request:
请求对象,存储“客户端向服务端发送的请求信息”
String getParameter(String name) : 根据请求的字段名key,返回字段值value
String[] getParameterValues(String name): 根据请求的字段名key,返回多个字段值value(checkbox)
Void setCharacterEncoding(String charset):设置post请求编码
getRequestDispatcher(“b.jsp”).forward(request,response); 请求转发的方式跳转页面 ->b.jsp
getServletContext(): 获取项目的ServletContext对象
Get提交方式
(1)统一每一个变量的编码
new String(name.getBytes(旧编码),新编码);//不推荐
(2)修改server.xml,URIEncoding="utf-8"
Post提交方式
设置post编码,request.setCharacterEncoding(“utf-8”);
Response:
响应对象
Void addCookie(Cookie cookie):服务端想客户端增加一个cookie对象
Void sendRedirect(String location) throws IOException: 页面跳转的一种方式(重定向)
Void setContentType(String type):设置服务端响应的编码(设置服务端的contentType类型)
Session(服务端):
session存储在服务端
session是在同一个用户(客户)请求时共享
session实现机制:第一次请求时产生一个sessionid并赋值给cookie的jsessionid,然后发送给客户端,最终实现session的sessionid与cookie的jsessionid一一对应
String getID:获取sessionID
Bool isNew():判断是否是第一次访问(新用户)
Void invalidate();使session失效。(退出或注销)
Object getAttribute()
void setAttribute()
void removeAttribute(String name)
void setMaxInactiveInterval(秒):设置最大有效 非活动时间
void getMaxInactiveInterval():获取最大有效 非活动时间
Application 全局对象
String getContextPath():虚拟路径
String getRealPath(String name):绝对路径(虚拟路径相对应的绝对路径,tomcat中可能会有多个虚拟路径)
跳转的两种方法
Cookie(客户端,不是内置对象):服务端产生的,再发送到客户端保存
Sesson和Cookie区别
1.6 Servlet
MVC设计模式
Model ,模型
View,视图
Controller,控制器
Servlet
Java类符合以下的规范:
必须继承javax.servlet.http.HttpServlet
重写其中的doGet()或doPost()方法
必须进行配置
Web.xml
<servlet>
<servlet-name>...</servlet-class>
<servlet-class>...</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>...</servlet-name>
<url-pattern>...</url-pattern>
</servlet-mapping>
Servlet3.0:@Servlet。
不需要在web.xml中配置,但需要在Servlet类的定义上面编写注解@WebServlet(“url-mapping”)
ServletConfig 对象是 Servlet 的专属配置对象,每个Servlet都单独拥有一个 ServletConfig 对象,用来获取 web.xml 中的配置信息:
ServletContext getServletContext():获取Servlet上下文对象。(就是jsp中的application)
常见方法:
getRealPath():绝对路径
getContextPath():相对路径
setAttribute()
getAttribute()
String getInitParameter(String name):在当前Web容器范围内,获取名为name的参数值(初始化参数)
2 后端
2.1 名词解释
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议
URL(Uniform Resource Locator,统一资源定位符),它是WWW的统一资源定位标志,就是指网络地址。组成:协议类型、主机名和路径及文件名。
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型
HTML: 超文本标记语言(英语:HyperText Markup Language,简称:HTML)
CSS: 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码.
2.2 get/post区别
1.url可见性
get传参方式是通过地址栏URL传递,是可以直接看到get传递的参数,post传参方式参数URL不可见,get把请求的数据在URL后通过?连接,通过&进行参数分割。psot将从参数存放在HTTP的包体内
2.传输数据大小
get传递数据是通过URL进行传递,对传递的数据长度是受到URL大小的限制,URL最大长度是2048个字符。post没有长度限制
3.后退页面
get后退不会有影响,post后退会重新进行提交
4.缓存
get请求可以被缓存,post不可以被缓存
5.编码方式
get请求只URL编码,post支持多种编码方式
6.历史记录
get请求的记录会留在历史记录中,post请求不会留在历史记录
7 字符类型
get只支持ASCII字符,post没有字符类型限制
2.3 JSP工作原理
1. 当用户访问一个JSP页面时,会向一个Servlet容器(Tomcat等)发出请求;
2. 如果是初始次访问或页面有所改动,则servlet容器首先要把JSP页面转化为Servlet代码,即翻译成Java,再将其转化为class文件;
3. JSP容器负责调用从JSP转换来的servlet,这些servlet负责提供服务相应用户请求;如果用户有多个请求,则容器会建立多个线程处理多个请求;
4. 容器执行字节码文件,并将其结果返回到客户端;
2.4 Servlet工作原理
web服务器接受到一个http请求后,web服务器会将请求移交给servlet容器,servlet容器首先对所请求的URL进行解析并根据web.xml配置文件找到相应的处理servlet, 同时将request、response 对象传递给它,servlet在处理完请求后会把所有需要返回的信息放入response对象中并返回到客户端,servlet 一旦处理完请求,servlet 容器就会刷新response对象,并把控制权重新返回给web服务器。
Servlet流程
请求-><url-pattern>->根据<servlet-mapping>中的<servlet-name>去匹配<servlet>中的<servlet-name>,然后寻找到<servlet>中的<servlet-class>,最终将请求交由对应的class执行。
2.5 Java Beans特点
JAVABean
(1)public修饰的类,public无参构造函数
(2)所有属性都是private,并提供get/set,如果返回boolean,则可以是is/get
使用层面,java分为两大类:
封装业务逻辑的JavaBean
封装数据的JavaBean
2.6 JSP作用域
pageContext:Jsp页面容器,当前页面有效,跳转后无效
Request: 请求对象,存储“客户端向服务端发送的请求信息”,同一次请求有效,其他请求无效(请求转发有效,重定向后无效)
Session(服务端):会话:同一次会话有效,无论怎么跳转都有效;关闭/切换浏览器后无效;登录-》退出之间全部有效
Application 全局对象:当前项目全局有效(整个项目运行期间有效;切换浏览器仍然有效),但是服务器关闭,则无效
2.7 Spring MVC原理
Spring MVC是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架。
流程说明:
(1)客户端(浏览器)发送请求,直接请求到DispatcherServlet。
(2)DispatcherServlet根据请求信息调用HandlerMapping,解析请求对应的Handler。
(3)解析到对应的Handler后,开始由HandlerAdapter适配器处理。
(4)HandlerAdapter会根据Handler来调用真正的处理器开处理请求,并处理相应的业务逻辑。
(5)处理器处理完业务后,会返回一个ModelAndView对象,Model是返回的数据对象,View是个逻辑上的View。
(6)ViewResolver会根据逻辑View查找实际的View。
(7)DispaterServlet把返回的Model传给View。
(8)通过View返回给请求者(浏览器)
2.8 控制反转
Ioc—Inversion of Control,即“控制反转”,是一种设计思想。
IOC 容器具有依赖注入功能的容器,它可以创建对象。
传统应用程序设计中,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象,也就是正转;
在使用Spring框架之后,对象的实例不再由调用者来创建,而是由Spring容器来创建,Spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。这样,控制权由应用代码转移到了Spring容器,控制权发生了反转,这就是控制反转。
Spring 提供了以下两种不同类型的容器。
Spring BeanFactory 容器
XmlBeanFactory factory = new XmlBeanFactory
(new ClassPathResource("Beans.xml"));
Spring ApplicationContext 容器
ApplicationContext context =
new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld) factory.getBean("helloWorld");
<bean id="helloWorld" class="com.tutorialspoint.HelloWorld">
<property name="message" value="Hello World!"/>
</bean>
2.9 依赖注入
控制反转最常用的方式叫做依赖注入(Dependency Injection,简称DI),
从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例,这就是Spring的依赖注入。
Spring 基于构造函数的依赖注入,当容器调用带有一组参数的类构造函数时,基于构造函数的 DI 就完成了,其中每个参数代表一个对其他类的依赖。
Spring 基于设值函数的依赖注入,当容器调用一个无参的构造函数或一个无参的静态 factory 方法来初始化你的 bean 后,通过容器在你的 bean 上调用设值函数,基于设值函数的 DI 就完成了。
3.0 AOP
AOP的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程)。它是面向对象编程(OOP)的一种补充.
AOP采取横向抽取机制,将分散在各个方法中的重复代码提取出来,然后在程序编译或运行时,再将这些提取出来的代码应用到需要执行的地方。
来源:CSDN
作者:lsj00凌松
链接:https://blog.csdn.net/xlsj228/article/details/103793270