




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 HTTP 协议请求报文以及响应报文 2 JAVA Socket 编程 Socket 以及 ServerSocket 3 WEB 服务器概念 Tomcat 服务器目录结构和基本配置 server xml 文件 4 什么是 Servlet 怎样实现一个自定义 Servlet 5 Servlet 基本配置 6 ServletAPI 包括 HttpServlet HttpServletRequest HttpServletResponse ServletConfig ServletContext 7 service 方法以及 doGet 和 doPost 方法 8 servlet 生命周期 9 怎样获取网页提交的参数 10 会话 HttpSession 和 Cookie 11 调用一个已定义好的 Servlet 有哪些方式 12 表单提交数据到 Servlet 中文乱码处理 13 客户端页面向服务端 servlet 传递参数有哪些方式 14 JSP 的运行原理以及基本语法 15 JSP 隐式对象 16 JavaScript 基本语法 17 JavaScript 中的对象 18 JavaScript 与 AJAX 19 基于对象的 Javascript 以及继承的实现 客户端客户端 服务器的优势在于 服务器的优势在于 服务器和客户端分摊任务 分别负责部分处理工作 服务器可以同时为多台客户端服务 多个客户端可以同时访问服务器上的相同数据 IP 网络 ID 网络 ID 标识了计算机或网络设备所在的网段 主机 ID 主机 ID 标识了特定的主机或网络设备 特殊特殊 IP 地址地址 0 0 0 0 和 127 0 0 1 就是两个此类地址 第一个称为缺省路由 后一个是环回地址 127 0 0 1 被保留用于用户主机的本地 IP 话务 它被分配给一个特殊接口 即起到闭合电路 作用的环回接口 端口端口 端口使用一个 16 位的数字来表示 它的范围是 0 65535 1024 以下的端口号保留给预定 义的服务 如 http 使用 80 端口 包包 包可以实现 Java 的网络功能 InetAddress InetAddress getByName String host 在给定主机名的情况下确定主机的 IP 地址 注 host 可以是主机名 IP 地址 或者域名 InetAddress getLocalHost 返回本地主机的 InetAddress 对象 InetAddress getAllByName String host 在给定主机名的情况下 根据系统上配置的名称服 务返回其 IP 地址所组成的数组可能一个主机名对应多个服务器 负载均衡 JAVA Socket 编程 socket 用于描述 IP 地址和端口 应用程序通过套接字向网络发出请求或者应答网络请求 套接字会因为网络的连接中断而失效 所以对它的操作都有可能抛出 IOException Socket 以及 ServerSocket 客户端流程 向服务端请求 获取输入输出流 进行收发数据 关闭 io 流 关闭套接字 服务器流程 创建套接字 获得客户端请求 获得输入输出流 收发信息 关闭 io 流 关 闭套接字 包装以提高效率 用 BufferedReader 包装输入流 用 PrintWriter 包装输出流 BufferedReader in new BufferedReader new InputStreamReader socket getInputStream PrintWriter OutputStream out boolean autoFlush 利用现有的 OutputStream 构造格式打印 流 由参数 autoFlush 指定是否带自动刷新缓存的功能 进程与线程的区别进程与线程的区别 进程是指系统中正在运行中的应用程序 它拥有自己独立的内存空间 线程是指进程中一个执行流程 一个进程中允许同时启动多个线程 他们分别执行不同的 任务 线程与进程的主要区别在于 每个进程都需要操作系统为其分配独立的内存地址空间 而 同一进程中的所有线程在同一块地址空间中 这些线程可以共享数据 因此线程间的通信 比较简单 消耗的系统开销也相对较小 在在 Java 中实现线程有两种方式 分别是 中实现线程有两种方式 分别是 扩展 java lang Thread 类 实现 java lang Runnable 接口 线程 start 调用 run 方法 重写的是 run 线程生命周期线程生命周期 线程状态 线程状态 新建状态 New 使用 new 关键字创建线程对象 仅仅被分配了内存 就绪状态 Ready 线程对象被创建后 等待它的 start 方法被调用 以获得 CPU 的使用 权 运行状态 Running 执行 run 方法 此时的线程的对象正占用 CPU 睡眠状态 Sleeping 调用 sleep 方法 线程被暂停 睡眠时间结束后 线程回到就绪状 态 睡眠状态的线程不占用 CPU 死亡状态 Dead run 方法执行完毕后 线程进入死亡状态 阻塞状态 Blocked 线程由于某些事件 如等待键盘输入 放弃 CPU 暂停运行 直到 Comment A1 表示客户端可以接收 的文件类型 包括图片文件 Flash 文 件等等 Comment A2 表示客户端默认的语 言 zh cn 指中国大陆 Comment A3 表示客户端主机使用 的处理器类型 Comment A4 表示客户端是否支持 以压缩格式传输 Comment A5 表示客户端的浏览器 类型 线程重新进入就绪状态 才有机会转到运行状态 Yield 和 join 的不同 HTTP 协议协议 HTTP HyperText Transfer Protocol 协议即超文本传输协议 是基于网络应用层的协议 它建立在 TCP IP 协议的基础上 该协议使用可靠的 TCP 连接 默认端口是 80 HTTP 协议基于客户端 服务器模式 客户端主动发出 HTTP 请求 服务器接收 HTTP 请求 返回 HTTP 响应结果 HTTP 协议是指超文本传输协议 专门用于在 Internet 上传输信息的协议 目前的版本是 1 1 HTTP 是应用层的协议 它基于请求 响应模式 HTTP 协议默认使用 80 端口进行通讯 HTTP 协议是无状态的的协议 请求报文实例 请求报文实例 请求报文是指客户端浏览器向网络服务器请求页面时 发送到服务器端的字符串 必须符 合 HTTP 协议的格式要求 它可能包含如下组成部分 GET index html HTTP 1 1 Accept image gif image x xbitmap image jpeg Accept Language zh cn UA CPU x86 Accept Encoding gzip deflate User Agent Mozilla 4 0 compatible MSIE 7 0 Windows NT 5 1 Comment A6 表示客户端是否与服 务器持续连接 Comment A7 表示服务器接收请求 发送回应的时间 Comment A8 表示服务器的类型 Comment A9 表示服务器是以何种 方式将数据发回给客户端 Host 80 Connection Keep Alive 请求报文中的大部分项目是可选的 只有 GET 和 Host 部分是必需的 GET 部分的格式是 GET 请求的 URL HTTP 协议版本号 如 GET index html HTTP 1 1 Host 部分的格式是 Host 服务器域名或 IP 地址 端口号 如 Host 80 换言之 请求报文中只要包含以上两部分 就可以向网络站点服务器请求到页面 拼凑请求报文 String strHttp GET HTTP 1 1 r n strHttp Host hostName WEB PORT r n 响应报文实例 响应报文实例 响应报文是指网络服务器收到来自客户端的请求后 发回到客户端的字符串 它用来告诉 客服端 服务器已经接受请求 随后跟随的是被请求的网页内容 响应报文可能包含如下组成部分 HTTP 1 1 200 OK Date Sat 11 Aug 2007 11 58 37 GMT Server Apache 1 3 37 Unix Accept Ranges bytes Comment A10 表示服务器发回给客 户端的数据的长度 Content Length 11503 Content Type text html 响应报文中也有两部分是必需的 HTTP 协议版本号状态码OK 状态码是一个 3 位整数 用来表示不同的状态 200 表示响应成功 如 HTTP 1 1 200 OK 状态码的具体描述请参阅本课件最后的附表 Content Type text html charset 字符集编码 用来描述服务器发回响应的文件类型以及字符集编码 text html 说明是文本文件或超 文本文件 如 Content Type text html charset GB2312 模拟 out println Http 1 1 200 OK out println Content Type text html charset GB2312 状态码 Web 应用的优势应用的优势 相对于传统的 C S 结构 Client 客户端 Server 服务器 的应用程序而言 B S 结构的 Web 应用程序具备以下优势 集中部署 无需安装客户端程序 集中管理 业务逻辑在服务端进行维护 数据共享 所有客户端访问同一服务器的数据 覆盖面广 只要有 Internet 覆盖的区域都可通过浏览器享受服务 更强的平台无关性 不必关心客户端的软硬件平台 只要遵循 HTTP 协议 都可获得支持 WEB 服务器概念服务器概念 Web 服务器可以解析 handles HTTP 协议 当 Web 服务器接收到一个 HTTP 请求 request 会返回一个 HTTP 响应 response 例如送回一个 HTML 页面 为了处理一个请求 request Web 服务器可以响应 response 一个静态页面或图片 进行页面跳转 redirect 或者把动态 响应 dynamic response 的产生委托 delegate 给一些其它的程序例如 CGI 脚本 JSP JavaServer Pages 脚本 servlets ASP Active Server Pages 脚本 服务器端 server side JavaScript 或者一些其它的服务器端 server side 技术 无论它们 译者注 脚本 的目的如 何 这些服务器端 server side 的程序通常产生一个 HTML 的响应 response 来让浏览器可以 浏览 Tomcat 服务器目录结构和基本配置服务器目录结构和基本配置 server xml 文件文件 博客 tomcat 环境变量的设置 首先添加 TOMCAT HOME 的环境变量 值为 d Program Files tomcat7 添加 CATALINA HOME 环境变量 值为 TOMCAT HOME 添加 CATALINA BASE 环境变量 值为 TOMCAT HOME TomcatTomcat 是以面向对象的方式运作的 在执行期间 它会基于配置文件的设定动是以面向对象的方式运作的 在执行期间 它会基于配置文件的设定动 态地组建其对象结构 态地组建其对象结构 Server xmlServer xml 文件中的每个主要元素都会创建软件文件中的每个主要元素都会创建软件 对象对象 排序及进程管道 排序及进程管道 中设置的这些元素嵌套方 让您能执行过滤 分组等工作 中设置的这些元素嵌套方 让您能执行过滤 分组等工作 什么是什么是 Servlet 怎样实现一个自定义怎样实现一个自定义 Servlet Servlet 是用 Java 语言编写的程序 它运行在 Web 服务器上 用以处理来自客户端的 请求 它一般会把处理的结果以为 HTML 的形式返回 在客户端形成动态网页 Servlet 的优点的优点 Servlet 运行在 Web 服务器中 可以扩展服务器的功能 Servlet 可以和其他资源交互 从而生成返回给客户端响应的内容 即动态网页 使用 Java 编写 所以能够跨平台 Java 的所有优点都可以在 Servlet 中体现 Servlet 很安全 因为访问 Servlet 的唯一途径是通过服务器 只要符合 Servlet 规范的 Servlet 容器都可以运行 Servlet 自定义自定义 servlet 一个类继承 HttpServlet 重写 doGet 和 doPost 方法 如果需要看到创建和销毁的过 程 可以重写 init 和 destroy 方法 Servlet 基本配置基本配置 在 web xml 中加入 servlet 的配置 LoginServlet com tkclm servlet LoginServlet servlet LoginServlet login 将 action 与 class 对应起来 ServletAPI 包括包括 HttpServlet HttpServletRequest HttpServletResponse Se rvletConfig ServletContext HttpServletRequest HttpServletResponse Javaweb 容器的四种作用域容器的四种作用域 几乎所有 web 应用容器都提供了四种类似 Map 的结构 application session request page Jsp 或者 Servlet 通过向着这四个对象放入数据 从而实现 Jsp 和 Servlet 之间数 据的共享 application 整个应用 对应 servlet 中 ServletContext session 会话 对应 servlet 中 HttpSession request 一次请求 对应 servlet 中的 HttpServletRequest page 当前页面 ServletConfig 此接口定义 Servlet 配置对象 以便于容器将信息传递给 Servlet ServletContext 此接口定义了一组方法 用于 Servlet 与容器进行通信 service 方法以及方法以及 doGet 和和 doPost 方法 方法 public void service HttpServletRequest request HttpServletResponse response throws ServletException IOException service 方法是接口中的方法 servlet 容器把所有请求发送到该方法 该方法默认行为是 转发 http 请求到 doXXX 方法中 如果你重载了该方法 默认操作被覆盖 不再进行转发 操作 此方法用来调度客户端的请求 API 文档中明确规定 请勿重写该方法 servlet 生命周期生命周期 怎样获取网页提交的参数怎样获取网页提交的参数 String str request getParameter 参数名称 方法可以获得参数值 对于复选框类的数据 可以通过 String str request getParameterValues 参数名称 方法获得 会话会话 HttpSession 和和 Cookie Cookie 通过在客户端记录信息确定用户身份通过在客户端记录信息确定用户身份 Session 通过在服务器端记录信息确通过在服务器端记录信息确 定用户身份定用户身份 Cookie 由服务器产生 给客户端颁发的通行证 每一个 Cookie 只能保存一 个变量 若需要修改 包括删除 需要服务器重新颁发 Cookie 会话对象会话对象 它主要解决了 HTTP 协议是无状态的问题 所谓的会话是指 在一段时间内 某客户端与服务器之间的一连串的请求与响应 会话对象可以使用户访问一个站点的多个页面时共享信息 javax servlet http HttpSession 接口用来提供会话对象 如果我们在程序中需要操作会话 就可以使用它 可以通过 HttpServletRequest 的 getSession 方法获得 或创建 HttpSession 对象 调用一个已定义好的调用一个已定义好的 Servlet 有哪些方式有哪些方式 发送请求 包括表单 a 标签 js 的 重定向 重定向跟转发 重定向 response sendRedirect success jsp r 转发 equest getRequestDispatcher success jsp forward request response 1 转发在服务器端完成的 重定向是在客户端完成的 2 转发的速度快 重定向速度慢 3 转发的是同一次请求 重定向是两次不同请求 4 转发不会执行转发后的代码 重定向会执行重定向之后的代码 5 转发地址栏没有变化 重定向地址栏有变化 6 转发必须是在同一台服务器下完成 重定向可以在不同的服务器下完成 表单提交数据到表单提交数据到 Servlet 中文乱码处理中文乱码处理 可以通过字符集转码来解决此问题 对于 get new String request getParameter name getBytes ISO 8859 1 UTF 8 对于 post request setCharacterEncoding UTF 8 客户端页面向服务端客户端页面向服务端 servlet 传递参数有哪些方式传递参数有哪些方式 表单 a 标签 Ajax 即 js JSP 的运行原理以及基本语法的运行原理以及基本语法 Jsp 执行过程 JSP 页面内容 JSP 元素包括 JSP 脚本元素 包括注释 声明 表达式 scriptlet 指令元素 page include taglib 动作元素 Jsp 声明 声明 需求 某系统计算的金额中有两种形式 一种是带有两位小数的 另一种是整数 现 在要求你在 JSP 页面将不带小数的金额转换为带两位小数的金额 Jsp 注释注释 不会显示在网页上 html注释会显示在网页 中 Jsp 指令包括指令包括 page include taglib 例 例 格式 page 指令用于设置 JSP 页面的属性 这个属性将被用于和容器通信 指令作用于整个 JSP 页面 同样包括静态的包含文件 无论你把指令放在 JSP 的文件的哪个地方 它的作用范围都是整个 JSP 页面 language java 主要指定 JSP 容器要用什么语言来编译 JSP 的元素 import package class package JSP 程序可以使用哪些包 pageEncoding UTF 8 Jsp 程序用什么编码格式编码 include 指令 用来在 JSP 文件被编译时导入一个指定的文件 语法形式 include 指令告诉编译器在编译当前的 JSP 程序时 将由 relativeURLspec 所指定的外部文 件代码插入到 include 编译指令所在的位置 并把它作为当前 JSP 程序的一部分编译 如果被 嵌入文件在包含它们的主 JSP 程序被装载到内存之后被修改 那么主 JSP 程序连同被嵌入的 文件将在下一次请求产生时被重新编译 这个包含的过程是静态的 而包含的文件可以是 HTML 文件 JSP 页面 文本文件或是 一段 java 程序 Taglib 指令 taglib 指令允许用户创建自定义标签 jstl 总结 JSP 脚本由三个元素组成 即 JSP 表达式 JSP Scriptlet 和 JSP 指令 JSP 表达式包括在 内 Scriptlet 包含在内 声明包含在内 JSP 指令共有三种类型 即 page include 和 taglib JSP 指令包括在 内 page 指令用于设置 JSP 页面的属性 include 指令用于在 JSP 页面嵌入其他文件 JSP 隐式对象隐式对象 request 表示客户端对网页的请求 response 实现 javax servlet http HttpServletResponse 接口使用 HTTP 协议将响应发送 给客户端 out 表示输出流 Session Application 表示 JSP 页面所属的应用程序 pageContext 使用户可以访问页面作用域中定义的所有隐式对象它的作用范围是在同一 页面 Page 使用 page 对象可以访问 Servlet 类的所有变量和方法 config 实现 javax servlet ServletConfig 接口 表示 Servlet 的配置 其常用方法有 getInitParameter 获取初始化的参数 getServletContext 获取环境 getServletName 获取 Servlet 名字 exception 对象用于处理 JSP 页面中的错误 JavaScript 基本语法基本语法 Js 特点特点 脚本语言 基于对象 事件驱动 平台无关 将将 JavaScript 嵌入网页 三种方式 嵌入网页 三种方式 1 使用 标签将语句嵌入文档 2 将 外部 JavaScript 源文件链接到 html 文档中 可使多个网页共享一个脚本文件内的代码 一般在其中定义一系列在多个网页中都可能要用到的函数 3 作为网页元素的事件处理程序 当事件触发时自动运行 JavaScript 基本语法部分 基本语法部分 语句 一条由计算机完成的 帮助你达到某种目的的指令 JavaScript 中的每一行都可 认为是一条语句 变量 一个代表某个值的名字就是变量 表达式 A 1 B 就是表达式 函数 具有一定功能的程序段 数据类型 数据类型 变量变量 JS 是弱类型的语言 即声明变量时不需指定数据类型 为它赋值时其类型才确定 而且再 次为其赋值可改变它的数据类型 变量的命名 只能包含数字 字母 下划线 但不能以数字开头 不能是保留字 关键字 JS 区分大小写 用 var 声明变量 函数的声明与调用函数的声明与调用 方式一 function 函数名 参数 参数 return 方式二 函数名 function 参数 参数 方式三 较不常用 Function 类 函数名 new Function 参数名 参数名 函数体 arguments 对象对象 1 arguments 是收到的实参副本 在词法分析中 首先按形参形成 AO 的属性 值为 undefined 当实参传来时 再修改 AO 的相应属性 2 并把所有收到实参收集起来 放到一个 arguments 对象里 t a b c 调用时 t 1 2 3 4 5 5 个参数 此时 AO 属性只有 a bc 3 个属性 arguments 里有 1 2 3 4 5 所有的值 对于超出形参个数之外的实参 可以通过 arguments 来获得 3 arguments 的索引 从 0 1 2 递增 与实参逐个对应 4 arguments length 属性代表实参的个数 5 arguments 一定不是数组 是长的比较像数组的一个对象 虽然也有 length 属性 6 arguments 每个函数都会有 因此 arguemnts 只会在内部找自身的 arguments 无法引用到外层的 arguments 求圆形面积 矩形面积 三角形面积 function area if arguments length 1 alert 3 14 arguments 0 arguments 0 else if arguments length 2 alert arguments 0 arguments 1 else if arguments length 3 alert arguments 0 arguments 1 arguments 2 else return null area 10 20 30 内部函数内部函数 function a d var i 0 Function c function b c alert i return b var c a c 闭包 允许使用内部函数 即函数定义和函数表达式位于另一个函数的函数体内 而且 这些内部函数可以访问它们所在的外部函数中声明的所有局部变量 参数和声明的 其他内部函数 类型转换类型转换 强制类型转换 ECMAScript 中可用的 3 种强制类型转换 Boolean value Number value String value NaN 不是一个数字类型 NaN 值非常特殊 因为它 不是数字 所以任何数跟它都不相等 甚至 NaN 本身 也不等于 NaN isNaN testValue 计算一个参数 检查它是否为数值 var iNum 10 var snum iNum toString 8 12 进制 var iNum1 parseInt 12 6 12 var iNum2 parseInt hello NaN var iNum3 parseInt 123world 123 var fNum4 parseFloat 25 12 6 25 12 var b1 Boolean false var b2 Boolean undefined false var b3 Boolean 0 false var iNum Number 25 12 6 NaN var bl isNaN Number 13f true JavaScript 中的对象中的对象 本地对象 Object Function Array String Boolean Number Date RegExp Error EvalError RangeError TypeError ReferenceError SyntaxError URIError 内置对象 Global Math 宿主对象 自定义对象 对象是用关键字 new 后跟要实例化的类的名字创建 例如 var oObj new Object 如果构造 函数无参数 括号可省略 var oObj new Object Object 对象 可以对 object 对象增加函数属性 判断对象是否有某个属性 alert oPerson hasOwnProperty age 字符串对象字符串对象 String 属性 属性 length 数组对象数组对象 Array 创建数组对象 myArr new Array myArr 10 array MyArray 数组的长度为 10 myArr new Array 3 可存放三个元素 myArr new Array a c d 存放了三个元素的数组 myArr a b c 存放了三个元素的数组 下标从 0 开始编号 数学对象数学对象 Math max 方法 返回各个参数中最大的数 min 方法 返回各个参数中最小的数 abs 方法 返回绝对值 sin 方法 返回参数的正弦值 参数为弧度 sqrt 方法 求输入参数的平方根 round 四舍五入为整数 random 返回 0 1 的随机小数 返回 n 到 m 之间的随机整数 var iNum Math floor Math random m n 1 n floor 取整 返回比参数小的最大整数 ceil 返回大于或等于参数的最近整数 Grobal 对象 对象从不直接使用 并且不能用 new 运算符创建 它在 Scripting 引擎 被初始化时创建 并立即使其方法和属性可用 日期时间对象日期时间对象 Date 日期对象的创建 mydate new Date 创建代表当前日期时间的日期对象 mydate new Date October 1 2005 12 00 00 创建代表 2005 年国庆午时的日期对象 Mydate new Date 2005 9 1 创建代表 2005 年 10 月 1 日的日期对象 日期对象以系统内存中以数值表示 以 1970 年 1 月 1 日 0 时 0 分 0 秒 0 毫秒为起始点 每过一毫秒增加一 get 方法组 从日期对象中分解出它所处的年月日 星期几 时分秒 毫秒值 getYear 返回年份数 getMonth 返回月份数 0 11 应加上 1 getDate 返回当前 Date 对象的日期数 1 31 getDay 返回星期几 0 6 0 代表星期日 getHours 返回小时数 0 23 getMinutes 返回分钟数 0 59 getSeconds 返回秒数 0 59 getTime 返回毫秒数 自起始时刻开始 set 方法组 设置 改变 日期对象的某一部分 setYear 设置年份数 setMonth 设置月份数 参数 0 11 setDate 设置日期数 参数 1 31 setHours 设置小时数 参数 0 23 setMinutes 设置分钟数 参数 0 59 setSeconds 设置秒数 参数 0 59 JavaScript 与与 AJAX 1 1XMLHttpRequst 对象的概述 在使用 XMLHttpRequest 对象发送请求和处理响应之前 必须先调用 JavaScript 创 建一个 XMLHttpRequest 对象 由于 XMLHttpRequest 不是一个 W3C 标准 所以可以 采用很多 JavaScript 方法来创建 XMLHttpRequest 的实例 IE 把 XMLHttpRequest 实现为一个 ActiveX 对象 其他浏览器则把它实现为一个本地的 JavaScript 对象 由于 存在这些差别 JavaScript 必须包含有关的逻辑 从而使用 ActiveX 技术与使用本地的 JavaScript 对象技术创建 XMLHttpRequst 的一个实例 很多人可能还记得从前的那段日子 那时不同浏览器上的 JavaScript 与 DOM 简直 千差万别 听了这段话后有人可能不寒而栗 幸运的是 在这里为了明确该如何创建 XMLHttpRequst 对象的实例 并不需要那么详细的编写代码来区别浏览器的类型 你要 做的只是检查浏览器是否提供对 ActiveX 对象的支持 如果浏览器支持 ActiveX 对象 就 可以使用 ActiveX 对象来创建 XMLHttpRequest 对象 否则 就要使用本地的 JavaScript 对象技术来创建 下面的代码展示了编写跨浏览器的 JavaScript 代码来创建 XMLHttpRequst 是多么的简单 创建 XMLHttpRequest 的一个实例 var xmlHttp function createXMLHttpRequst if window ActiveXObject xmlHttp new ActiveXObject Microsoft XMLHTTP else if window XMLHttpRequst xmlHttp new XMLHttpRequest 可以看到 创建一个 XMLHttpRequest 相当容易 首先 要创建一个全局作用域变 量 xmlHttp 来保存这个对象的引用 createXMLHttpRequst 方法完成创建 XMLHttpRequst 对象的具体工作 这个方法中只有简单的分支逻辑 选择逻辑 来确定 如何创建对象 对 window ActiveXObject 的调用会返回一个对象 也可能返回一个 null if 语句会把调用返回的结果看作是 true 或 false 如果返回对象则为 true 返回 null 则为 false 以此指示浏览器是否支持 ActiveX 控件 相应地得知浏览器是不是 IE 如果确实是 则通过实例化一个 ActiveX 的一个新实例来创建 XMLHttpRequst 对象 并传入一个串指令指示要创建何种类型的 ActiveX 对象 在这个例子中为构造函数提供的字符串是 Microsoft XMLHTTP 这说明你想创建一个 XMLHttpRequst 的一个实例 如果 window ActiveXObjec 调用失败 返回 null JavaScript 就会转到 else 语 句的分支确定浏览器是否把 XMLHttpRequst 实现为一个本地的 JavaScript 对象 如果 存在 window XMLHttpRequest 就会创建 XMLHttpRequst 的一个实例 由于 ajax 具有动态类型特性 而且 XMLHttpRequst 在不同浏览器上的实现是兼容 的 所以可以用同样的方式访问 XMLHttpRequst 实例的属性和方法 而不论这个实例创 建的方法是什么 这就大大地简化了开发过程 而且在 JavaScript 中也不必编写特定于 浏览器的逻辑 1 2 方法和属性 abort 停止当前请求 getAllResponseHeaders 把 HTTP 请求的所有响应首部作为键值对返回 getResponseHeader header 返回指定首部的串值 open method url 建立对服务器的调用 method 参数可以使 GET POST 或 PUT url 可以使相对 url 或绝对 url 这个方法还包括三个可选的参数 send content 向服务器发送请求 setRequstHeader header value 把指定首部设置为所提供的值 在设置 任何首部之前必须先调用 open 下面来更详细地讨论这些方法 void open string method string url boolean asynch string usename string password 这个方法会建立对服务器的调用 这是初始化一个请求的纯脚本方 法 它有两个必要的参数三个可选的参数 要提供调用的特定方法 get post put 还 要提供所调用资源的 url 另外还可以传递一个 Boolean 值 这是这个调用是异步的还是 同步的 默认值为 true 表示本质上是异步的 如果这个参数为 false 处理就会等待 知 道服务器返回响应为止 由于异步调用是 ajax 主要优势之一 所以倘若这个参数设为 false 从某种程度上讲与使用 XMLHttpRequst 对象的初衷不太相符 不过在某些情况下 见这个参数设为 fals 也是有用的 比如持久存储页面之前可以先验证用户的输入 最后两 个参数不说自明 允许你指定一个特定的用户名和密码 void send content 这个方法具体向服务器发送请求 如果请求声明为异步的 这 个方法就会立即返回 否则它会等到直到接收到响应为止 可选参数可以是 DOM 对象的 实例 输入流 或串 传入这个方法的内容会作为一个请求体的一部分发送 void setRequstHeader string header string value 这个方法为为 HTTP 请求中 一个给定的首部设置值 它有两个参数 第一个串表示要设置的首部 第二个串表示要在 首部中放置的值 注意 这个方法必须在调用 opend 之后才能调用 在所有的这些方法中 最有可能用到的就是 opend 和 send XMLHttpRequest 对象还有很多属性 在设计 Ajax 交互时这些属性非常有用 void abort 顾名思义 这个方法就是要停止请求 string getAllResponseHeaders 这个方法的核心功能对开发人员应该很熟悉 它 返回一个串 其中包含 HTTP 请求的所有响应首部 首部包括 Content Length Data 和 URI string getReponseHeader string header 这个方法与 getAllResponseHeaders 是对应的 不过它有一个参数表示您希望的指定收不到的值 并把这个值作为串返回 除了这些标准方法 处理 XMLHttpRequst 可以大量使用这些属 性 onreadystatechange 每个状态改变时都会触发这个事件处理器 通常会调用一个 javacript 函数 readyState 请求状态 有 5 个可取的值 0 未初始化 1 正在加载 2 已加载 3 交互中 4 完成 responseText 服务器的响应 表示为一个串 responseXML 服务器的响应 表示为 XML 这个对象可解释为 DOM 对象 status 服务器 HTTP 状态码 200 对应 Ok 404 对应 not found 等 statusText HTTP 状态码的相应文本 ok 或 not found 等 1 3AJAX 交互设计 1 一个客户端事件触发一个 Ajax 事件 从简单的 onchange 事件到某个特定的用户 动作 很多这样的事都可以触发 Ajax 事件 2 创建 XMLHttpRequst 对象的一个实例 使用 open 方法建立调用 并调用 url 及所希望的 HTTP 方法 通常是 post get 请求实际上是通过一个 send 方法调用触 发 代码如下 var xmlHttp function validateEmail var email document getElementById email var url validate email escape email value if window ActiveObject xmlHttp new ActiveObject Microsoft XMLHTTP else if window XMLHttpRequst xmlHttp new XMLHttpRequst xmlHttp open get url xmlHttp onreadystatechange callback xmlHttp send null 3 向服务器做出请求 可能调用 servlet CGI 脚本 或者任何服务器端技术 4 服务器可以做你想做的事情 包括访问时数据库 甚至访问另一个系统 5 请求返回到浏览器 content type 设置为 text xml XMLHttpRequst 的对象只 能处理 text html 类型的结果 在另外一些更复杂的示例中 6 在这个 demo 中 XMLHttpRequst 对象配置为处理返回结果时要调用 callback 函数 这个函数会检查 XMLHttpRequst 对象的 readyState 属性 然后查看服务器返回 的状态码 如果一切正常 callback 函数就会在客户端做一些有意思的工作 一下就是 一个典型的回调方法 function callback if xmlHttp readyState 4 if xmlHttp status 200 do something interesting here 可以看到 正常的请求 响应模式有所不同 但对于 web 开发人员来说 并不是完全 陌生的 显然 在创建和建立 XMLHttpRequst 对象时还可以做些事情 另外当 回调 函 数完成状态检查之后也可以有所作为 一般的 你会把这些标准调用包装在一个库中 一 便在整个应用中使用 或者可以使用 web 上提供的库 基于对象的基于对象的 Javascript 以及继承的实现以及继承的实现 关键字关键字 thisthis 指向调用该方法的 当前 对象 this 使用的几种场合 用在对象的方法中 构造函数 事件处理函数 原型 原型 prototype objectName prototype objectName 是对象的名称 objectName prototype 本身也是对象 Comment A11 缺点 容易重复生成 函数副本 如果不生成函数副本 需 要在工厂函数外定义 不像构造自定义对象的方法 不能 new 用 prototype 属性提供对象的类的一组基本功能 对象的新实例 继承 赋予该对象原 型的操作 prototype 对象是个模板 要实例化的对象都以这个为基础 prototype 对象的任何属性和方法都被传递给那个类的所有实例 利用利用 prototype 修改本地对象修改本地对象 个本地对象也有 prototype 属性 通过 prototype 属性创建新方法 通过 prototype 属性重定义已有方法 var books new Array java C VB Array prototype hasItem function oItem for i 0 i books length i if oItem books i return true return false var books new Array java C VB Array prototype pop function return pop object var o books pop 原本为 VB 重载后 pop object 自定义对象的自定义对象的 4 种方式种方式 1 通过工厂方式创建通过工厂方式创建 此工厂创建的对象各属性都一样 function createPerson var oPerson new Object oPerson name 张三 oPerson age 22 oPerson showAge function alert this age return oPerson var oPerson1 createPerson var oPerson2 createPerson 此工厂根据传参的不同 创建不同的属性 function createPerson sName iAge var oPerson new Object oPerson name sName oPerson age iAge oPerson showAge function 或者函数外定义 alert this age return oPerson var oPerson1 createPerson 张三 22 Comment A12 缺点 如果有内部函 数 重复生成函数副本 优点 使用 new 创建 Comment A13 缺点 不能构造函数 传参 对象被多个实例共享 优点 原型的所有属性被赋予新对象 避免创建多个副本 var oPerson2 createPerson 李四 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨境电商直播背景板租赁与产品展示解决方案合同
- 亲子乐园内场摊位租赁与管理合同
- 地震后桥梁裂缝排查技术与管理体系
- 智慧医院门禁一卡通解决方案
- 专科护理人才队伍的建设
- 店铺安全生产培训
- 客户沟通技巧培训体系构建
- 二个月婴儿护理
- CRRT护理质量持续改进
- 自己的事情自己做心理健康教育
- 网络与信息安全管理员(高级技师)资格理论考试题库大全(附答案)
- 养老院临终护理
- 国开《铸牢中华民族共同体意识》形考任务1-3
- 内分泌科血糖监测制度
- 工厂车间流水线承包合同协议书范文
- 人教版小学六年级全册体育教案
- 植被图与地形因子碳汇关系
- 青海省西宁市(2024年-2025年小学三年级语文)人教版期末考试(下学期)试卷(含答案)
- 河北省秦皇岛市(2024年-2025年小学三年级语文)人教版能力评测(下学期)试卷(含答案)
- 数字化转型与非织造布制造
- 计算机系统设计及计算机网络专业毕业论文
评论
0/150
提交评论