互联网软件应用于开发讲义.ppt

上传人:wj 文档编号:18069615 上传时间:2023-08-08 格式:PPT 页数:126 大小:2.67MB
下载 相关 举报
互联网软件应用于开发讲义.ppt_第1页
第1页 / 共126页
互联网软件应用于开发讲义.ppt_第2页
第2页 / 共126页
互联网软件应用于开发讲义.ppt_第3页
第3页 / 共126页
互联网软件应用于开发讲义.ppt_第4页
第4页 / 共126页
互联网软件应用于开发讲义.ppt_第5页
第5页 / 共126页
互联网软件应用于开发讲义.ppt_第6页
第6页 / 共126页
互联网软件应用于开发讲义.ppt_第7页
第7页 / 共126页
互联网软件应用于开发讲义.ppt_第8页
第8页 / 共126页
互联网软件应用于开发讲义.ppt_第9页
第9页 / 共126页
互联网软件应用于开发讲义.ppt_第10页
第10页 / 共126页
互联网软件应用于开发讲义.ppt_第11页
第11页 / 共126页
互联网软件应用于开发讲义.ppt_第12页
第12页 / 共126页
互联网软件应用于开发讲义.ppt_第13页
第13页 / 共126页
互联网软件应用于开发讲义.ppt_第14页
第14页 / 共126页
互联网软件应用于开发讲义.ppt_第15页
第15页 / 共126页
互联网软件应用于开发讲义.ppt_第16页
第16页 / 共126页
互联网软件应用于开发讲义.ppt_第17页
第17页 / 共126页
互联网软件应用于开发讲义.ppt_第18页
第18页 / 共126页
互联网软件应用于开发讲义.ppt_第19页
第19页 / 共126页
互联网软件应用于开发讲义.ppt_第20页
第20页 / 共126页
亲,该文档总共126页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

互联网软件应用于开发讲义.ppt

《互联网软件应用于开发讲义.ppt》由会员分享,可在线阅读,更多相关《互联网软件应用于开发讲义.ppt(126页珍藏版)》请在冰点文库上搜索。

互联网软件应用于开发讲义.ppt

互联网软件应用与开发(06年8月版教材串讲纲要)主讲:

李亚飞,第一章互联网软件开发过程概述,学习目的和要求:

(通过本章内容的学习)了解互联网软件的一般开发过程。

掌握5阶段开发者所应该完成的任务和一些常用方法。

理解互联网软件开发项目小组的人员组成和他们的技术特点以及对应的职责,对如何创建一个开发小组有一个概念性的认识。

最后了解项目管理员的职责以及他所需要的技能和所负责的工作。

第一章互联网软件开发过程概述,1.1互联网软件开发过程(17点中的重点)1.2项目规划(项目如何规划)1.3组建项目小组(要完成一个项目,如何组建小组)1.4软件开发项目管理(了解),1.1互联网软件开发过程,一般Web开发过程有五个基本阶段:

规划设计建设和测试投入使用运行及后续维护掌握各个阶段的目的和内容,1.2项目规划,完成规划阶段涉及到的典型问题确定项目目标明确需要的项目是什么项目确定Web应用的目标明确Web应用的目标明确目标用户谁将来要使用你的Web应用或者其中的一个独立部分。

项目的规模(范围)确定项目的大小。

明确用户重点明确项目的驱动因素。

取得一致的开发方法根据项目大小,确定达到网站设计目标的最佳方法(取得一致的开发方法)创建项目计划包括时间表、目标、风险和预算。

1.3组建项目小组,项目小组角色(每个角色都有特定的职能和必备的技术及专门的工具)项目小组中客户的角色决策人负责做最后的判断。

商务发起人项目小组和客户之间的联系人问题专家负责业务内容并回答项目小组的具体细节问题。

支持人员项目结束后提供后续技术支持,帮助测试并解决问题。

1.4软件开发项目管理,如果客户同意项目计划,项目管理人员便会召集项目小组开始进入设计阶段。

要求识记的是“风格漂移”。

风格漂移是一种缓慢的不易被发现过程,发现时往往已经太晚了。

这种现象在整个生命周期中都可能出现。

而且风格漂移也可能在遇到意外问题时出现,所以必须在项目计划中考虑这个因素。

第2章IIS介绍,学习目的和要求:

(通过本章内容的学习)了解Internet与Web的基本情况和基本概念,并理解IP地址和网址的概念以及它们的意义和在网络中的作用。

理解WEB在不同网址时的区别。

学会安装和维护IIS,理解IIS各种属性的意义和对IIS服务的影响,并会根据要求设置IIS的各种属性。

最后初步了解密钥的作用、申请方法、步骤和使用方法。

第2章IIS介绍,2.1Internet与Web概述(电子商务专业中很多课程重复介绍了这一章节内容,IIS?

)2.2IP地址和域名服务(17点中的重点)2.3安装和使用IIS(演示安装过程,掌握主目录、网站、文档、HTTP头选项卡)2.4密钥管理器(了解实现SSL的四个步骤),2.1Internet与Web概述,Internet是指全球性的信息系统,该系统具有的三个主要特征:

Internet中的计算机通过全球性的唯一地址逻辑地链接在一起。

Internet中的计算机之间的通信使用的是TCP/IP协议。

Internet可以为公共用户或个人用户提供高水平的信息服务。

该定义揭示了Internet的三个特点:

全球性、开放性与平等性。

2.1Internet与Web概述,Web全称为WorldWideWeb,缩写为WWW,中文译为“万维网”。

简单的说,Web是一种体系结构,通过它可以访问遍布于Internet主机上的链接文档。

这一说法可分解为以下几层含义:

Web是Internet提供的一种服务。

Web是存储在全世界Internet计算机中数量巨大的文档的集合。

Web的内容保存在Web站点中,用户可通过浏览器访问Web站点。

2.Web浏览器的工作原理,6.3.1WWW概述,2.2IP地址和域名服务,Internet地址两种表现形式:

IP地址与域名。

在TCP/IP网络中,每个主机都有唯一的地址,它是通过IP协议来实现的。

IP地址是长度为32位的二进制数,以X.X.X.X格式表示;每个X为8位二进制数,其十进制值为0255,且每个数字之间用点隔开,例如:

192.168.101.5,这种记录方法称为点分十进制地址。

IP地址采用分层结构,它由网络号与主机号两部分构成。

其中,网络号用来标识一个逻辑网络,主机号用来标识网络中的一台主机。

2.2IP地址和域名服务,1IP地址,为了充分利用IP地址空间,根据不同的取值范围,IP地址可以分为五类,即A类至E类,如下图所示。

其中A、B、C三类由Internet网络信息信心在全球范围内统一分配,D、E类为特殊地址。

2IP地址的分类,A类地址的表示范围为1.0.0.0-126.255.255.255B类地址的表示范围为128.0.0.0-191.255.255.255C类地址的表示范围为192.0.0.0-223.255.255.255对于IP地址166.111.136.3,它的网络号166.111.136.0,主机号为3.,域名:

用有意义的名称来代替实际的IP地址,给主机命名,这就是域名。

Internet域名结构域名的层次结构顶级域名分配请大家记住书上17页域名解析的3个步骤.例题:

从一台IP地址为202.112.138.58的主机,访问另一台域名为sina的主机,则域名解析的工作过程为:

当Internet应用程序收到用户输入的sina时,将向自身IP地址的域名服务器询问sina的IP地址.如果域名服务器在本地找到sina所对应的IP地址,就会将该IP地址发送给请求查询的主机.当源主机得到主机sina的IP后,就可以利用该IP地址向目的主机发出访问请求.,Internet域名的层次,顶级域名分配,2.3安装和使用IIS,演示安装过程。

如何配置IIS的主要内容?

2.4密钥管理器,使用密钥管理器,可以保护数据的安全传输。

实现SSL的四个步骤:

(安全套接层)生成密钥对文件和请求文件。

从身份验证权限中请求一个证书。

在服务器上安装证书。

激活WWW服务器文件夹上的SSL安全性。

第3章HTML语言介绍,学习目的和要求:

(通过本章内容的学习)通过本章学习,应掌握HTML文档的基本结构。

掌握主要超文本标记的意义。

掌握文档体的主要属性设置。

掌握创建不同的超级链接的方法。

学会创建和使用表格并能进行简单的表格格式设置。

理解表单的概念和表单在HTML中的作用,并会创建和使用表单。

第3章HTML语言介绍,3.1HTML文档总体结构(17点中的重点)3.2文档体(应用)3.3创建超链接(应用)3.4表格(应用)3.5表单(17点中的重点),3.1HTML文档总体结构(示例),一个HTML文件包含了出现在网页上的所有文字,以及一些HTML标记。

这些标记是HTML文件中的一些代码,它告诉浏览器应该做什么事情。

当用户浏览WWW上的信息时,浏览器会自动解释这些标记的含义,并按照一定的格式在屏幕上显示这些被标记的文件.什么是标记语言?

由于计算机在理解文本时很机械,因此需要对文本进行标记。

计算机并不能真正分辨出某一部分文本到底是摘要、标题、还是段落。

如果不使用一些额外的代码,计算机就不会知道如何显示文本或其它信息.,3.2文档体,BODY元素属性及功能(参考教材表3-1)给文档加颜色。

填充背景。

设置边距。

注释HTML文档。

Address元素创建文档模板。

演示3-3、3-4、3-5。

3.3创建超链接,链接是唯一的从一个Web页到另一个相关的Web页的理性途径,它由两部分组成:

锚链和URL引用。

链接到文档和文件。

(演示3-6)链接到其它NET资源。

(演示3-7、3-8),3.4表格,基本标准(示例3-9)对齐表格元素(示例3-10),3.5表单,FormTextarea(示例3-11)Select(示例3-11、12、13)设置Input标记的Type。

Text(示例3-14)Password(示例3-15)Checkbox(示例3-16)Radio(示例3-17)Reset(示例3-18)submit(示例3-19),第4章ASP.NET介绍,学习目的和要求:

(通过本章内容的学习)了解ASP.NET的历史,优越性,文件类型,编程语言,丰富的控件。

理解ASP.NET中WebForm的概念及其处理过程,事件模型,服务器端包含的控件,自定义控件,ManagerProvider和DataSet的概念。

如何通过ADO.NET访问数据库,性能优化的概念,ASP.NET中提供的三种缓存替换的策略。

第4章ASP.NET介绍,4.1ASP.NET简介(概念的理解)4.2Web页面(了解)4.3服务器端控件(17点中的重点)4.4自定义控件(了解)4.5数据库编程(概念的理解)4.6性能优化(了解),4.1ASP.NET简介,ASP.NET的历史ASP.NET的优越性ASP.NET中的文件类型ASP.NET的编程语言ASP.NET丰富的WEB控件如何认识ASP.NET,如何认识ASP.NET,无论是HTML、CSS还是浏览器端脚本,都不包含可在服务器端运行的代码。

含有在服务器端运行的代码,能够与浏览器端用户进行某些交互的网页称为动态网页。

用于开发动态网页的技术主要包括ASP.NET、PHP、JSP等。

ASP最主要的用途是与浏览器端的用户进行交互,然后根据用户提交的请求进行操作,如对服务器端文件系统或数据库进行操作。

最具代表性的例子是利用ASP实现的搜索引擎。

用户通过浏览器输入查询条件或关键字(如“硬件”)后,然后将查询需求送达WWW服务器,接着WWW便调用相应的ASP文档,执行其中的服务器端脚本(通常用VBScript或JavaScript写成),到数据库中进行查找,最后,以HTML文档的形式返回查询结果。

ASP.NET的设计初衷是解决ASP程序开发过程中的“复杂”、“繁琐”等问题。

为此,ASP.NET彻底抛弃了脚本语言,而代之于编译式语言(如VB、C#),为开发者提供更加强有力的编程资源;允许用服务器端控件取代传统的HTML元素并充分支持事件驱动机制。

4.2Web页面,WebForm的概念。

Web页面处理过程。

WebForm事件模型。

WebForm概述,WebForm指用ASP.NET开发的网页。

从设计的角度看,WebForm是一个包含HTML标记、服务器端控件以及相关程序的“大杂烩”,它的后缀名是ASPX。

主窗格是一个正处于设计状态的WebForm。

在这个WebForm中,既有HTML标记(如分隔线),也包括Server控件(如文本框、按钮、标签),当然,还包括在图中看不到的程序。

WebForm概述,WebForm由“可视化组件”和“用户接口逻辑”组成。

其中,前者指包含HTML标记及Server控件声明的部分(也就是可在浏览器上看到的部分);后者则指用于实现服务器和用户交互的代码。

如果使用普通的文本编辑器进行设计,则上述两个部分共处同一文件中;如果使用VisualStudio.NET进行设计,则可视化组件与用户接口逻辑将分处不同的文件中。

在WebForm中使用的控件可以分为4类:

HTML服务器控件、Web服务器控件、Validation控件和用户自定义控件(本书重点介绍第3类控件)。

当用户请求包含这些控件的网页时,被请求网页将首先在服务器端执行,以生成HTML文档,并回送客户端,浏览器再将结果显示给用户。

此外,需要指出的是,WebForm的某些高级功能必须在特定的浏览器上方可正常运行。

例如,有些功能必须在IE5及以上版本的浏览器中才能正常运行。

4.3服务器端控件,文本输入控件按钮控件复选控件单选控件列表框控件RequiredFieldValidatorValidationSummary选择控件ImageButton控件(示例4-19)列表控件(示例4-20),Label控件,Label控件用于显示文本。

可使用下列两种语法进行声明。

标签文本下面是一个利用Label控件显示文本的例子。

Button控件,Button控件用于创建提交或命令按钮。

提交按钮的声明语法如下:

命令按钮的声明语法如下:

其中:

CausesValidation:

给出或设置按钮被单击时,是否启动验证。

Onclick:

设置按钮被单击后所运行过程的名称。

Text:

给出或设置显示在按钮上的文本。

CommandName:

给出或设置Button控件的命令名称。

CommandArgument:

给出或设置Button控件的命令参数。

OnCommand:

设置按钮被单击后所运行过程的名称。

Button控件,下面是一个与命令按钮有关的例子。

ImageButton控件,ImageButton控件主要用于响应单击图片的动作。

其声明语法如下:

下面是一个利用ImageButton控件实现图像映射的例子。

本例所展示的页面可根据用户单击位置的不同,回应适当的信息。

TextBox控件,在交互式网页应用中,TextBox是最常用的控件之一,它可用于建立单行、多行文本框以及密码输入框。

TextBox控件的声明语法如下:

其中:

Text:

给出或设置控件中的文本。

TextMode:

给出或设置控件的类型,其中Single为单行文本框,Multiline为多行文本框,Password为密码框。

该属性的默认值为Single。

Rows:

当TextMode属性为Multiline(多行文本框)时,Rows属性才有效。

用于给出或设置控件的高度,单位为行。

Columns:

给出或设置控件的宽度,单位为字符。

MaxLength:

给出或设置控件最多可容纳的字符数。

Button控件的命令参数。

ReadOnly:

给出或设置控件内容的只读性。

Wrap:

给出或设置当控件内容超过控件宽度时,是否自动换行。

AutoPostBack:

给出或设置当控件失去焦点,且内容业已改变时,是否自动上传数据。

OnTextChanged:

指定控件中的内容与最近一次上传的内容不同时,所触发事件过程的名称。

TextBox控件,下面是一个与TextBox控件应用有关的例子。

CheckBox控件,CheckBox控件用于建立复选框。

其声明语法如下:

其中:

AutoPostBack:

给出或设置当用户改变控件的选择状态时,是否自动上传数据。

该属性的默认值为False。

Checked:

给出或设置控件的选择状态(True代表选择,False代表未选择)。

下面是一个与CheckBox控件应用有关的例子。

CheckBoxList控件,CheckBoxList控件的作用与CheckBox控件类似,但功能更为强大(如支持以数据连接方式建立列表等)。

其声明语法如下:

文本下面是一个与CheckBoxList控件应用有关的例子。

RadioButton控件,RadioButton控件用于创建单选钮。

其声明语法如下:

其中:

AutoPostBack:

给出或设置当用户改变控件的选择状态时,是否自动上传数据。

该属性的默认值为False。

Checked:

给出或设置控件的选择状态(True代表选择,False代表未选择)。

GroupName:

给出或设置控件所属组的名称。

在属于同一组的控件中,只能有一个处于选择状态。

OnCheckedchanged:

指定当控件中的选择状态与最近一次上传的选择状态不同时,所触发事件过程的名称。

下面是一个与RadioButton控件应用有关的例子。

RadioButtonList控件,RadioButtonList控件的作用与RadioButton控件类似,但功能更为强大(如支持以数据连接方式建立列表等)。

其声明语法如下:

文本由一个与RadioButtonList控件应用有关的例子可以看出,与RadioButton控件相比,RadioButtonList控件更易于使用。

ListBox控件,ListBox控件用于建立可单选或多选的下拉列表。

其声明语法如下:

文本其中SelectionMode用于给出或设置控件的选择模式(Single表示只允许进行单项选择,Multiple表示可进行多重选择),该属性的默认值为Single。

下面是一个利用ListBox控件实现重定向的例子。

RequiredFieldValidator控件,RequiredFieldValidator控件用于保证非空输入。

其声明语法如下:

其中InitiaValue用于给出或设置所验证控件的初始值。

控件运行时,若发现用户欲提交的数据与初始值相同,则拒绝提交。

该属性的默认值为Nothing。

下面是一个利用RequiredFieldValidator控件保证非空输入的例子。

ValidationSummary控件,ValidationSummary控件用于展示验证结果。

其声明语法如下:

其中:

ShowSummary:

给出或设置是否将报错信息显示在页面,默认为True。

ShowMessageBox:

给出或设置是否将报错信息显示于对话框中,默认为False。

HeaderText:

给出或设置报错信息的标题。

下面是一个利用ValidationSummary控件展示验证结果的例子。

4.4自定义控件,代码和模板的分离。

自定义控件组合控件继承控件,自定义控件,在实际应用中,如果有一个控件或一些控件的集合的使用频率较高,则可以将其定义为用户控件,以随时使用。

这样可有效提高开发效率。

保存用户控件的文件,其扩展名为ascx,其中只包含ASP.NET控件或ASP.NET控件的集合。

完成用户控件的定义之后,若需在某页面中使用该控件,只需简单地注册该控件,然后就可以像使用一般控件那样使用了。

下面的例子,说明了用户控件的使用方法。

4.5数据库编程,基本概念ASP.NET程序使用ADO.NET来处理数据库.ADO.NET中的两个重要概念(ManagedProvider和DataSet)在ADO.NET中,通过MP所提供的应用程序编程接口(API),可以轻松的访问各种数据源的数据,包括OLEDB和ODBC所支持的数据库。

DataSet是ADO.NET的中心概念。

可以把DataSet想象成内存中的数据库。

ADO.NET提供了两种数据库连接方式:

ADO方式.(通常用这种)SQL方式.,ADO.NET的作用与组成,ASP.NET访问数据源的方式ADO.NET是ASP.NET与数据库的接口,其访问数据源的方式如图所示。

ADO.NET是通过.NET数据库提供程序来访问数据源的。

其中:

SQLServer.NET数据提供程序用于访问MicrosoftSQLServer7.0或更高版本的数据库,可提供很高的访问效率。

OLEDB.NET数据提供程序则用于访问Access、SQLServer6.5更低版本、DB2、Oracle或其他支持OLEDB驱动程序的数据库。

对商用系统而言,Access数据库一般是不能满足系统对性能的要求的,应考虑使用SQLServer、Oracle等专业数据库。

ADO.NET的作用与组成,ADO.NET的结构ADO.NET的对象内容如表所示。

对于复杂的数据库应用系统而言,表中比较重要的是DataSet及DataView,从数据库中取出数据后,须放到DataSet,若需将其显示在浏览器中,则应使用DataView,数据流程如图所示。

Connection对象,对于OLEDB数据库,常用参数如表所示。

下面是两个用来打开Access、SQLServer6.5或更低版本数据库的连接参数。

Provider=Microsoft.JET.OLEDB.4.0;DataSource=F:

ssyyrr.mdbProvider=SQLOLEDB;DataSource=syrwww;IntegratedSecurity=SSPI“2Connection对象的方法如下:

Open():

打开数据库。

Close():

关闭数据库连接。

当不再使用数据源时,应使用该方法关闭与数据源的连接。

Command对象用于对数据源进行各种操作(如读取、写入记录等)。

Datagrid对象用于如何显示Dataset中的数据。

显示Dataset的常用控件是datagrid.它可以很好的表现为一个表格,表格的外观可以任意控制,甚至可以分页显示。

4.5.2通过ADO.NET访问数据库,ADO.NET访问数据库的步骤:

创建一个数据库链路;请求一个记录集合;把记录集合暂存到DataSet;如果需要,返回第2步;(DataSet可容纳多个数据集合)关闭数据库链路;在DataSet上进行所需要的操作;,4.6性能优化,基本概念页面数据缓存,第5章Web数据库技术基础,学习目的和要求:

(通过本章内容的学习)了解WEB数据库的基本层次结构以及各层次之间的关系和功能。

了解几种WEB服务器和它们的性能特点。

理解WEB数据库访问模式的程序执行过程要点。

理解ODBC、ADO和WEB数据的关系,理解ODBC访问数据库的优点,理解ADO的基本概念、特性和作用机制,理解ADO不同对象的概念和功能。

掌握使用ODBC、ADO和ASP访问数据的方法,掌握用户信息和数据库交互的基本方法。

第5章Web数据库技术基础,5.1Web数据库基本概念(17点中的重点)5.2Web服务器简介(了解)5.3ODBC、ADO与Web数据库(应用)5.4ASP与数据库访问(应用),Web数据库可定义为以后台数据库为基础,通过统一的浏览器完成数据存储、查询、发布等维护管理工作的应用软件系统。

教材中图5-1是Web数据库的结构框图.模式开发的编程要点必须理解和掌握(共5步).编写HTML表单,利用表单元素通过Submit按钮向CGI脚本提交.根据传递参数的方式(POST和GET),CGI脚本从Web服务器设置的环境变量(Query-String)或标准输入(Stdin)获取用户发来的信息串.解码.CGI脚本根据用户要求,执行相应的数据库客户程序,通过约定的通路访问数据库.将数据库客户获得的执行结果返回给标准输出Stdout.,5.1Web数据库基本概念,5.2Web服务器简介,Web服务器,即为WWW浏览器提供服务的机器.它提供给用户所需的文件.CGI(通用网关接口),是Web服务器在调用外部程序时的参数规范协议,它规定了一组标准的环境变量和参数格式,借助CGI可以实现动态创建Web页面,处理HTML表单输入,并在Web和其他Internet服务之间架设沟通的渠道;CGI脚本是按CGI规范编写在服务器方可执行的程序,它负责处理从服务器请求一个动态响应所必需的所有任务.,CGI工作过程如下,Web浏览器向Web服务器发出请求Web服务器启动CGI程序打开同DBMS的连接,CGI与DBMS交互CGI程序可根据从数据库中检索所得到的数据生成动态的HTML文档Web服务器将HTML文档返回给Web浏览器,5.3ODBC、ADO与Web数据库,ODBC是微软定义的基于Windows环境的一种数据库访问接口标准,它通过相应的ODBC驱动程序实现Windows应用同多种数据库进行数据交换,微软公司在IIS/PWS中提供了ODBC接口功能。

ODBC一个最显著的优点是用它生成的程序与数据库或数据库引擎无关,因此是服务器扩展程序开发者们理所当然的选择。

它可使程序员方便地编写访问各DBMS厂商的数据库的应用程序,而不需了解其产品的细节,ODBC的体系结构,ODBC的体系结构,应用程序的主要功能是:

调用ODBC函数,处理查询结果。

驱动程序管理器,它为应用程序安装驱动程序,定义数据源。

数据库驱动程序,它处理ODBC调用,想数据源提交SQL语句,接受查询结果。

数据源,就是应用程序要访问的数据库服务器。

(它也是提供数据资源的实体,它可能是数据库应用程序中的单个文件。

),5.3.2ADO简介,ADO是微软公司为WEB开发者使用数据库而提供的开发工具。

它不但可以兼容几乎所有的数据库系统如VFP、Access等,而且可以跨越多种不同的程序语言开发环境如VB、C+等。

ADO对数据提供了应用级编程接口,对网站开发者提供了存取有关数据、保存网站有关信息的技术。

ADO真正的作用:

是提供一种数据资源的访问方法,5.4ASP与数据库访问,Web数据库系统的主要目的是要实现Web与数据库的连接以产生基于数据库的动态页面,这要通过Web访问数据库来实现,相关的技

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2