JavaWeb复习资料

末鹿安然 提交于 2020-01-01 17:23:33

目录

1 前端

1.1 前台

1.1.1 程序开发体系

1.1.2 Web应用概述

1.1.3 相关标准

1.2 HTML标记语言

1.2.1 meta

1.2.2 HTML5增加的结构元素

1.2.3 Html实体字符

1.2.4 HTML的颜色表示

1.2.5 HTML的基本页面元素

1.2.6 多媒体

1.2.7 HTML的表格标记

1.2.8 内嵌框架属性

1.3.1 CSS的基本选择器

1.3.2 在HTML中使用CSS的方法

1.3.3 复合选择器

1.3.4 CSS3新增选择器

1.3.5 用CSS3设置文本样式

1.3.6 用CSS3设置颜色与背景

1.4 JS

1.4.1 使用方式

1.4.2 BOM基础

1.4.3 DOM

1.5 JSP

1.5.1 JSP执行流程

1.5.2 JSP的页面元素

1.5.3 JSP内置对象

1.6 Servlet

2 后端

2.1 名词解释

2.2 get/post区别

2.3 JSP工作原理

2.4 Servlet工作原理

2.5 Java Beans特点

2.6 JSP作用域

2.7 Spring MVC原理

2.8 控制反转

2.9 依赖注入

3.0 AOP


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

 

https://img-blog.csdn.net/20180628141123834?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21hb194aWFveGk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

1.1.3 相关标准

  1. HTTP请求信息由3部分组成:

请求方法/URL/协议版本

请求头(Request Header)

请求正文

HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。

  1. 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的基本页面元素

  1. 标题标记

<h1></h1>     <h2></h2>   <h3></h3>

  1. 段落标记<p>和换行标记<br/>
  2. 块标记<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

设置框架对齐方式,可选值为leftrighttopmiddlebottom

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;

 }

  1. 标记选择器

   一个HTML页面由很多不同的标记组成,例如<p>、<h1>、<div>等。

 

tagName {

    property:value;

}

 

  1. 类选择器

  类选择器用来为一系列标记定义相同的呈现方式。

 

 .className {

     property:value;

  }

 

  1. ID选择器

    ID选择器和类选择器在设置格式的功能上类似,都是对特定属性的属性值进行设置。

    ID选择器的一个重要功能是用做网页元素的唯一标识,所以,一个HTML文件中一个元素的ID属性值中惟一的。

    ID选择器比类选择器具有更高的优先级

 

#idName{

   property:value ;

}

1.3.2 在HTML中使用CSS的方法

  1. 行内样式

    直接把CSS代码添加到HTML的代码行中,由<style>标记支持:<h1 style="color:blue;font-style:bold"></h1>

  1. 嵌入样式

    写在HTML文档的<head>和</head>之间,通过<style>和</style>标记来声明。

    行内样式的作用域只有一行,而嵌入的样式可以作用于整个HTML文档中。

  1. 链接样式

   链接样式先要定义一个扩展名为“.css”的文件(即外部样式表)。<head>中添加代码,格式如下。

      <link rel="stylesheet" type="text/css" href=" mystyle.css" />

  1. 导入样式

       导入样式也需要一个单独的外部CSS文件,然后再将其导入到HTML文件中。

       在HTML文件初始化时将外部CSS文件导入到HTML文件内,作为文件的一部分,类似于嵌入。

       要在内嵌样式表的<style>标记中使用@import导入一个外部的CSS文件。

       <style type="text/css">@import "mystyle.css";</style>

 

优先级

行内样式>嵌入样式>链接样式>导入样式

1.3.3 复合选择器

  1. 交集选择器

    由两个选择器直接连接构成的,其结果是选中两者各自作用范围的交集。其中,第一个必须是标记选择器,第二个必须是类选择器或ID选择器,例如:“h1.class1;p#id1”。交集选择器的基本语法格式如下。

tagName.className {

          property:value;

}

 

  1. 并集选择器

    对多个选择器进行集体声明,多个选择器之间用“,”隔开,每个选择器可以是任何类型选择器。

selector1,selector2,… {

   property:value;

}

 

  1. 后代选择器

   通过嵌套的方式,对特殊位置的HTML标记进行控制。例如,当<div>与</div>之间包含<b>标记时,可以用后代选择器定义出现在<div>标记中的<b>标记的格式。后代选择器的写法是把外层的标记写在前面,内层的标记写在后面,之间用空格隔开。 

selector1 selector2 {

          property:value;

}

 

  1. 子选择器

selector1>selector2

 

  1. 相邻选择器

   相邻选择器的定义符号是加号(+),可以选中紧跟在它后面的一个兄弟元素(这两个元素具有共同的父元素)。

 

  1. 属性选择器

    通过属性,给元素增加很多附加信息。例如,通过id属性,可以区分不同的元素;通过class属性,可以设置元素的样式。为了扩展属性选择器的功能,可以使用^、$和*这三个通配符。

 

1.3.4 CSS3新增选择器

  1. 伪类选择器

    伪类选择器区别于类选择器,类选择器是由用户自行定义,而伪类选择器是在CSS中已经定义好的选择器。伪类选择器可以分为结构伪类选择器和UI元素伪类选择器2种。

基本结构伪类选择器

 

UI伪类选择器

 

  1. 伪元素选择器

:first-letter和:first-line

:first-letter用于选中元素内容的首字符。:first-line用于选中元素中的首行文本。

:before和:after

:before和:after两个伪对象必须配合content属性使用才有意义。它们的作用是在指定的标记内产生一个新的行内标记,该行内元素的内容由content属性里的内容决定。

before选择器用于在某个元素之前插入内容。

<E>: before {

        content:文字或其他内容

 }

1.3.5 用CSS3设置文本样式

  1. 字体属性

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. 文本属性

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设置颜色与背景

  1. 颜色设置

       color属性用于控制HTML元素内文本的颜色,取值可以使用下面的任意一种方式。

       •  颜色名:英文名

       •  #rrggbb:十六进制数表示颜色

       •  #rgb:是#rrggbb的一种简写方式,例如,#0000FF可以表示为#00F,#00FFDD表示为#0FD。

       •  rgb(rrr,ggg,bbb):使用十进制数表示颜色的红、绿、蓝分量

       •  rgb(rrr%,ggg%,bbb%):使用百分比表示颜色的红、绿、蓝分量

 

  1. 背景设置

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. 圆角边框和图像边框

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 使用方式

  1. 直接嵌入JavaScript

 

  1. 链接外部JavaScript文件

<script type="text/javascript" src="index.js"></script>

<script type="text/javascript" src="D:/Js/index.js"></script>

  1. 直接在HTML标签中使用

<a href="javascript:alert('你好JavaScript')">测试</a>

<input type="button" value="显示Hello" οnclick="javascript:alert('Welcome!');" />

1.4.2 BOM基础

浏览器对象模型(Browser Object Model,BOM)主要是用于访问和操纵浏览器窗口。

 

  1. Window

Window对象是用来表示浏览器中一个打开的窗口。

window.open(url, target, specs, replace)打开一个新的窗口。四个参数(均为可选)分别是:

url 要打开窗口的路径

target 打开方法

       _blank 在新窗口打开,默认设置为_blank

       _self 在原窗口打开,替代原窗口

       _parent 在父框架中打开

name 指定在某个窗口打开

specs 规定新窗口的样式(用逗号连接,不用空格)

       width=pixels

       height=pixels

replace 是否在history列表中替代当前页面

  1. 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采取横向抽取机制,将分散在各个方法中的重复代码提取出来,然后在程序编译或运行时,再将这些提取出来的代码应用到需要执行的地方。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!