Java web学习整理相关.docx_第1页
Java web学习整理相关.docx_第2页
Java web学习整理相关.docx_第3页
Java web学习整理相关.docx_第4页
Java web学习整理相关.docx_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JavaJava ScriptjqueryAjaxJsonJavaScript 框架: jQuery Prototype MooToolsHTML DOM (文档对象模型)当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。API是应用程序编程接口(Application Programming Interface)的缩写B/S和C/S一、C/S 架构1、 概念C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据;另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信。C/S 架构也可以看做是胖客户端架构。因为客户端需要实现绝大多数的业务逻辑和界面展示。这种架构中,作为客户端的部分需要承受很大的压力,因为显示逻辑和事务处理都包含在其中,通过与数据库的交互(通常是SQL或存储过程的实现)来达到持久化数据,以此满足实际项目的需要。2 、优点和缺点优点:2.1 C/S架构的界面和操作可以很丰富。2.2 安全性能可以很容易保证,实现多层认证也不难。2.3 由于只有一层交互,因此响应速度较快。缺点:2.4 适用面窄,通常用于局域网中。2.5 用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户。2.6 维护成本高,发生一次升级,则所有客户端的程序都需要改变。二、B/S架构1、概念B/S架构的全称为Browser/Server,即浏览器/服务器结构。Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现,Browser客户端,WebApp服务器端和DB端构成所谓的三层架构。B/S架构的系统无须特别安装,只有Web浏览器即可。B/S架构中,显示逻辑交给了Web浏览器,事务处理逻辑在放在了WebApp上,这样就避免了庞大的胖客户端,减少了客户端的压力。因为客户端包含的逻辑很少,因此也被成为瘦客户端。2 、优点和缺点优点:1)客户端无需安装,有Web浏览器即可。2)BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。3)BS架构无需升级多个客户端,升级服务器即可。缺点:1)在跨浏览器上,BS架构不尽如人意。2)表现要达到CS程序的程度需要花费不少精力。3)在速度和安全性上需要花费巨大的设计成本,这是BS架构的最大问题。4)客户端服务器端的交互是请求-响应模式,通常需要刷新页面,这并不是客户乐意看到的。(在Ajax风行后此问题得到了一定程度的缓解)三、B/S对C/S的改进和扩展正如前文所说,C/S和B/S都可以进行同样的业务处理,但是B/S随着Internet技术的兴起,是对C/S结构的一种改进或者扩展的结构。相对于C/S,B/S具有如下优势:1、分布性:可以随时进行查询、浏览等业务2、业务扩展方便:增加网页即可增加服务器功能3、维护简单方便:改变网页,即可实现所有用户同步更新4、开发简单,共享性强,成本低,数据可以持久存储在云端而不必担心数据的丢失。四、主流的Web程序应用平台一个动态网站服务器平台至少要包括:操作系统+Web服务器+应用程序服务+数据库。一个优秀的网站服务器是由多方面因素决定的,如个人喜好、部署费用、安全机制等。而现在主流的三种Web平台:ASP.NET、JavaEE和LAMP各有优缺点,以满足不同的需要和用户。三者比较如下:三种平台的各部分组合:ASP.NET:Windows Server+IIS+SQL Server+ASPJavaEE:UNIX+Tomcat+Oracle+JSPLAMP:Linux+Apache+MySQL+PHP五、三张图告诉你Web工作原理1、服务器不带应用程序和数据库,直接请求HTML文件2、服务器带应用程序(如php)3、服务器带应用程序和数据库IISIIS(Internet Information Server,互联网信息服务)是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。Jquery1. jQuery 元素选择器$(this).hide() 隐藏当前的 HTML 元素。$(#test).hide() 隐藏 id=test 的元素。$(p).hide() 隐藏所有 元素。$(.test).hide() 隐藏所有 class=test 的元素。 jQuery 元素选择器jQuery 使用 CSS 选择器来选取 HTML 元素。$(p) 选取 元素。$(ro) 选取所有 class=intro 的 元素。$(p#demo) 选取所有 id=demo 的 元素。 jQuery 属性选择器jQuery 使用 XPath 表达式来选择带有给定属性的元素。$(href) 选取所有带有 href 属性的元素。$(href=#) 选取所有带有 href 值等于 # 的元素。$(href!=#) 选取所有带有 href 值不等于 # 的元素。$(href$=.jpg) 选取所有 href 值以 .jpg 结尾的元素。 jQuery CSS 选择器$(p).css(background-color,red);$(this)当前 HTML 元素$(p)所有 元素$(ro)所有 class=intro 的 元素$(.intro)所有 class=intro 的元素$(#intro)id=intro 的元素$(ul li:first)每个 的第一个 元素$(href$=.jpg)所有带有以 .jpg 结尾的属性值的 href 属性$(div#intro .head)id=intro 的 元素中的所有 class=head 的元素2. jQuery 事件方法Event 函数绑定函数至$(document).ready(function)将函数绑定到文档的就绪事件(当文档完成加载时)$(selector).click(function)触发或将函数绑定到被选元素的点击事件$(selector).dblclick(function)触发或将函数绑定到被选元素的双击事件$(selector).focus(function)触发或将函数绑定到被选元素的获得焦点事件$(selector).mouseover(function)触发或将函数绑定到被选元素的鼠标悬停事件方法描述bind()向匹配元素附加一个或更多事件处理器blur()触发、或将函数绑定到指定元素的 blur 事件change()触发、或将函数绑定到指定元素的 change 事件click()触发、或将函数绑定到指定元素的 click 事件dblclick()触发、或将函数绑定到指定元素的 double click 事件delegate()向匹配元素的当前或未来的子元素附加一个或多个事件处理器die()移除所有通过 live() 函数添加的事件处理程序。error()触发、或将函数绑定到指定元素的 error 事件event.isDefaultPrevented()返回 event 对象上是否调用了 event.preventDefault()。event.pageX相对于文档左边缘的鼠标位置。event.pageY相对于文档上边缘的鼠标位置。event.preventDefault()阻止事件的默认动作。event.result包含由被指定事件触发的事件处理器返回的最后一个值。event.target触发该事件的 DOM 元素。event.timeStamp该属性返回从 1970 年 1 月 1 日到事件发生时的毫秒数。event.type描述事件的类型。event.which指示按了哪个键或按钮。focus()触发、或将函数绑定到指定元素的 focus 事件keydown()触发、或将函数绑定到指定元素的 key down 事件keypress()触发、或将函数绑定到指定元素的 key press 事件keyup()触发、或将函数绑定到指定元素的 key up 事件live()为当前或未来的匹配元素添加一个或多个事件处理器load()触发、或将函数绑定到指定元素的 load 事件mousedown()触发、或将函数绑定到指定元素的 mouse down 事件mouseenter()触发、或将函数绑定到指定元素的 mouse enter 事件mouseleave()触发、或将函数绑定到指定元素的 mouse leave 事件mousemove()触发、或将函数绑定到指定元素的 mouse move 事件mouseout()触发、或将函数绑定到指定元素的 mouse out 事件mouseover()触发、或将函数绑定到指定元素的 mouse over 事件mouseup()触发、或将函数绑定到指定元素的 mouse up 事件one()向匹配元素添加事件处理器。每个元素只能触发一次该处理器。ready()文档就绪事件(当 HTML 文档就绪可用时)resize()触发、或将函数绑定到指定元素的 resize 事件scroll()触发、或将函数绑定到指定元素的 scroll 事件select()触发、或将函数绑定到指定元素的 select 事件submit()触发、或将函数绑定到指定元素的 submit 事件toggle()绑定两个或多个事件处理器函数,当发生轮流的 click 事件时执行。trigger()所有匹配元素的指定事件triggerHandler()第一个被匹配元素的指定事件unbind()从匹配元素移除一个被添加的事件处理器undelegate()从匹配元素移除一个被添加的事件处理器,现在或将来unload()触发、或将函数绑定到指定元素的 unload 事件3. jQuery效果 隐藏/显示$(“p”).hide(speed,callback)$(“p”).show(speed,callback)$(“p”).toggle(speed,callback) 淡入淡出$(“p”).fadeIn(speed,callback)$(“p”).fadeOut(speed,callback)$(“p”).fadeToggle(speed,callback)$(“p”).fadeTo(speed,callback) 滑动$(“p”).slideDown(speed,callback)$(“p”).slideUp(speed,callback)$(“p”).slideToggle(speed,callback) 动画$(“p”).animate(params,speed,callback);必需的 params 参数定义形成动画的 CSS 属性Callback 函数在当前动画 100% 完成之后执行$(“p”).stop(stopAll,goToEnd);可选的 stopAll 参数规定是否应该清除动画队列。默认是 false,即仅停止活动的动画,允许任何排入队列的动画向后执行。可选的 goToEnd 参数规定是否立即完成当前动画。默认是 false。 Chaining 允许我们在一条语句中允许多个 jQuery 方法(在相同的元素上)。$(#p1).css(color,red).slideUp(2000).slideDown(2000);4. jQuery HTML 获取和设置三个简单实用的用于 DOM 操作的 jQuery 方法: 获取 设置text() - 设置或返回所选元素的文本内容 $(#test).text() $(#test1).text(world!)html() - 设置或返回所选元素的内容(包括 HTML 标记)val() - 设置或返回表单字段的值 attr() 方法用于获取属性值。回调函数由两个参数:被选元素列表中当前元素的下标,以及原始(旧的)值。然后以函数新值返回您希望使用的字符串$(#btn1).click(function() $(#test1).text(function(i,origText) return Old text: + origText + New text: Hello world! (index: + i + ); );); 添加和删除我们将学习用于添加新内容的四个 jQuery 方法: append() - 在被选元素的结尾插入内容 prepend() - 在被选元素的开头插入内容 after() - 在被选元素之后插入内容 before() - 在被选元素之前插入内容function appendText()var txt1=Text.; / 以 HTML 创建新元素var txt2=$().text(Text.); / 以 jQuery 创建新元素var txt3=document.createElement(p); / 以 DOM 创建新元素txt3.innerHTML=Text.;$(p).append(txt1,txt2,txt3); / 追加新元素如需删除元素和内容,一般可使用以下两个 jQuery 方法:remove() - 删除被选元素(及其子元素)empty() - 从被选元素中删除子元素 获取并设置CSS类jQuery 拥有若干进行 CSS 操作的方法。我们将学习下面这些: addClass() - 向被选元素添加一个或多个类 removeClass() - 从被选元素删除一个或多个类 toggleClass() - 对被选元素进行添加/删除类的切换操作 css() - 设置或返回样式属性 $(p).css(background-color:yellow,font-size:200%); 获取并设置CSS类jQuery 提供多个处理尺寸的重要方法: width() 设置或返回元素的宽度(不包括内边距、边框或外边距)。 height() 设置或返回元素的高度(不包括内边距、边框或外边距)。 innerWidth() 返回元素的宽度(包括内边距)。 innerHeight() 返回元素的高度(包括内边距)。 outerWidth() 返回元素的宽度(包括内边距和边框)。 outerHeight() 返回元素的高度(包括内边距和边框)。5. jQuery 遍历这些 jQuery 方法很有用,它们用于向上遍历 DOM 树: parent() 被选元素的直接父元素 parents() 返回被选元素的所有祖先元素,它一路向上直到文档的根元素 ()。 parentsUntil() 返回介于两个给定元素之间的所有祖先元素。$(span).parentsUntil(div);下面是两个用于向下遍历 DOM 树的 jQuery 方法: children() 返回被选元素的所有直接子元素。 find() 返回被选元素的后代元素,一路向下直到最后一个后代。有许多有用的方法让我们在 DOM 树进行水平遍历: siblings() 返回被选元素的所有同胞元素。 next() 返回被选元素的下一个同胞元素。 nextAll() 返回被选元素的所有跟随的同胞元素。 nextUntil() 方法返回介于两个给定参数之间的所有跟随的同胞元素。 prev() 返回被选元素的前一个同胞元素。 prevAll() 返回被选元素的所有前面的同胞元素。 prevUntil() 方法返回介于两个给定参数之间的所有前面的同胞元素。三个最基本的过滤方法是:它们允许您基于其在一组元素中的位置来选择一个特定的元素first() 返回被选元素的首个元素。 last() 返回被选元素的最后一个元素。eq() 被选元素中带有指定索引号的元素。其他过滤方法,比如:允许您选取匹配或不匹配某项指定标准的元素。filter() 不匹配这个标准的元素会被从集合中删除,匹配的元素会被返回。not() 返回不匹配标准的所有元素。6. jQuery Ajax ajax加载AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。简短地说,在不重载整个网页的情况下,AJAX 通过后台加载数据,并在网页上进行显示。通过 jQuery AJAX 方法,您能够使用 HTTP Get 和 HTTP Post 从远程服务器上请求文本、HTML、XML 或 JSON - 同时您能够把这些外部数据直接载入网页的被选元素中。load() 方法从服务器加载数据,并把返回的数据放入被选元素中。$(selector).load(URL,data,callback);必需的URL参数规定您希望加载的 URL。可选的data参数规定与请求一同发送的查询字符串键/值对集合。可选的callback参数是 load() 方法完成后所执行的函数名称。可选的 callback 参数规定当 load() 方法完成后所要允许的回调函数。回调函数可以设置不同的参数: responseTxt- 包含调用成功时的结果内容 statusTXT- 包含调用的状态 xhr- 包含 XMLHttpRequest 对象$(button).click(function() $(#div1).load(demo_test.txt,function(responseTxt,statusTxt,xhr) if(statusTxt=success) alert(外部内容加载成功!); if(statusTxt=error) alert(Error: +xhr.status+: +xhr.statusText); );); get/postjQuery get() 和 post() 方法用于通过 HTTP GET 或 POST 请求从服务器请求数据。两种在客户端和服务器端进行请求-响应的常用方法是:GET 和 POST。 GET- 从指定的资源请求数据 POST- 向指定的资源提交要处理的数据GET 基本上用于从服务器获得(取回)数据。注释:GET 方法可能返回缓存数据。POST 也可用于从服务器获取数据。不过,POST 方法不会缓存数据,并且常用于连同请求一起发送数据。$.get(URL,callback);必需的URL参数规定您希望请求的 URL。可选的callback参数是请求成功后所执行的函数名。$.post(URL,data,callback);必需的URL参数规定您希望请求的 URL。可选的data参数规定连同请求发送的数据。可选的callback参数是请求成功后所执行的函数名。7. jQuery noConflict()在页面上同时使用 jQuery 和其他框架。如果你的 jQuery 代码块使用 $ 简写,并且您不愿意改变这个快捷方式,那么您可以把 $ 符号作为变量传递给 ready 方法。这样就可以在函数内使用 $ 符号了 - 而在函数外,依旧不得不使用 jQuery:$.noConflict();jQuery(document).ready(function($) $(button).click(function() $(p).text(jQuery 仍在运行!); ););AjaxAJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。AJAX 不是新的编程语言,而是一种使用现有标准的新方法。AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。 Ajax HXRl 创建 XMLHttpRequest 对象if (window.XMLHttpRequest) / code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); else / code for IE6, IE5 xmlhttp=new ActiveXObject(Microsoft.XMLHTTP); l 向服务器发送请求如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:xmlhttp.open(GET,test1.txt,true);xmlhttp.send();GET 还是 POST?与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。然而,在以下情况中,请使用 POST 请求: 无法使用缓存文件(更新服务器上的文件或数据库) 向服务器发送大量数据(POST 没有数据量限制) 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠true(异步)或 false(同步): true(异步):AJAX 指的是异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。XMLHttpRequest 对象如果要用于 AJAX 的话,其 open() 方法的 async 参数必须设置为 true:通过 AJAX,JavaScript 无需等待服务器的响应,而是: 在等待服务器响应时执行其他脚本 当响应就绪后对响应进行处理当使用 async=true 时,请规定在响应处于 onreadystatechange 事件中的就绪状态时执行的函数:当使用 async=true 时,请规定在响应处于 onreadystatechange 事件中的就绪状态时执行的函数:xmlhttp.onreadystatechange=function() if (xmlhttp.readyState=4 & xmlhttp.status=200) document.getElementById(myDiv).innerHTML=xmlhttp.responseText; xmlhttp.open(GET,test1.txt,true);xmlhttp.send(); true(异步):请记住,JavaScript 会等到服务器响应就绪才继续执行。如果服务器繁忙或缓慢,应用程序会挂起或停止。注释:当您使用 async=false 时,请不要编写 onreadystatechange 函数 - 把代码放到 send() 语句后面即可:xmlhttp.open(GET,test1.txt,false);xmlhttp.send();document.getElementById(myDiv).innerHTML=xmlhttp.responseText;l 服务器响应如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。属性描述responseText获得字符串形式的响应数据。responseXML获得 XML 形式的响应数据。l onreadystatechange 事件当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当 readyState 改变时,就会触发 onreadystatechange 事件。readyState 属性存有 XMLHttpRequest 的状态信息。下面是 XMLHttpRequest 对象的三个重要的属性:属性描述onreadystatechange存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。readyState存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。 0: 请求未初始化 1: 服务器连接已建立 2: 请求已接收 3: 请求处理中 4: 请求已完成,且响应已就绪status200: OK404: 未找到页面JSONJSON:JavaScript 对象表示法(JavaScriptObjectNotation)。JSON 是存储和交换文本信息的语法。类似 XML。JSON 比 XML 更小、更快,更易解析。什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScriptObjectNotation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言* JSON 具有自我描述性,更易理解*JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。类似 XML JSON 是纯文本 JSON 具有“自我描述性”(人类可读) JSON 具有层级结构(值中存在值) JSON 可通过 JavaScript 进行解析 JSON 数据可使用 AJAX 进行传输相比 XML 的不同之处 没有结束标签 更短 读写的速度更快 能够使用内建的 JavaScript eval() 方法进行解析 使用数组 不使用保留字为什么使用 JSON?对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:使用 XML 读取 XML 文档 使用 XML DOM 来循环遍历文档 读取值并存储在变量中使用 JSON 读取 JSON 字符串 用 eval() 处理 JSON 字符串JSON 语法是 JavaScript 对象表示法语法的子集。 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:TCP/IP、Http、Socket的区别应用层 HTTP协议,FTP,TELNET表示层会话层传输层 TCP协议 socket对TCP/IP协议的封装和应用网络层 IP协议 本身不是协议,是一个调用接口(API)数据链路层物理层实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。下面是一些经常在笔试或者面试中碰到的重要的概念,特在此做摘抄和总结。一、什么是TCP连接的三次握手第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客户端交互,最终确定断开)2、HTTP连接HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。2)在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。 由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。二、利用Socket建立网络连接的步骤建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。1、服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。2、客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。3、连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。三、HTTP链接的特点HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。5、Socket连接与HTTP连接由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。而HTTP连接使用的是“请求响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。四、TCP和UDP的区别(考得最多。快被考烂了我觉得- -)1、TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性;而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议。2、也正由于1所说的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。知道了TCP和UDP的区别,就不难理解为何采用TCP传输协议的MSN比采用UDP的QQ传输文件慢了,但并不能说QQ的通信是不安全的,因为程序员可以手动对UDP的数据收发进行验证,比如发送方对每个数据包进行编号然后由接收方进行验证啊什么的,即使是这样,UDP因为在底层协议的封装上没有采用类似TCP的“三次握手”而实现了TCP所无法达到的传输效率。Java三大框架MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器),一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。设计创建 Web 应用程序的模式:1 Model(模型)表示应用程序核心(比如数据库记录列表)。 View(视图)显示数据(数据库记录)。 Controller(控制器)处理输入(写入数据库记录)。MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。框架模式、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。框架模式有哪些?MVC、MTV、MVP、CBD、ORM等等;框架有哪些?C+语言的QT、MFC、gtk,Java语言的SSH、SSI,php语言的 smarty(MVC模式),python语言的django(MTV模式)等等设计模式有哪些?工厂模式、适配器模式、策略模式等等简而言之:框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。Java Web应用程序是采用JSP+Servlet+Javabean来实现的,这种模式实现了最基本的MVC分层,使的程序结构分为几层,有负责前台展示的JSP负责流程逻辑控制的Servlet负责数据封装的JavabeanJava三大框架: Structs: (负责显示层)有一个中央控制类(一个Servlet),针对不同的业务,我们需要一个Action类负责页面跳转和后台逻辑运算,一个或几个JSP页面负责数据的输入和输出显示,还有一个Form类负责传递Action和JSP中间的数据。JSP中可以使用Struts框架提供的一组标签,就像使用HTML标签一样简单,但是可以完成非常复杂的逻辑。Hibernate:(负责持久层) 需要你创建一系列的持久化类,每个类的属性都可以简单的看做和一张数据库表的属性Spring: (负责中间的业务层)的作用就是完全解耦类之间的依赖关系。只要拿到一个实现了这个接口的类,就可以轻松的通过xml配置文件把实现类注射到调用接口的那个类里。所有类之间的这种依赖关系就完全通过配置文件的方式替代了。所以Spring框架最核心的就是所谓的依赖注射和控制反转。这个结构是目前国内最流行的Java Web应用程序架构了。另外,由于Spring使用的依赖注射以及AOP(面向方面编程),所以它的这种内部模式非常优秀,以至于Spring自己也实现了一个使用依赖注射的MVC框架,叫做Spring MVC,同时为了很好的处理事物,Spring集成了Hibernate,使事物管理从Hibernate的持久层提升到了业务层,使用更加方便和强大1应用服务器有哪些:weblogic,jboss,tomcat2 Hibernate优于JDBC的地方1)对jdbc访问数据库进行了封装,简化了数据访问层的重复代码2)Hibernate 操作数据库是面向对象的操作3介绍下Struts2的工作原理1 读取配置文件。加载struts控制器2 用户请求 用户提交表单或调用URL向WEB应用程序服务器提交请求,请求的数据用HTTP协议上传给WEB服务器。3 通过struts控制器进行处理4 经过一系列的拦截器处理5 进行业务逻辑的处理6 响应给用户JSP将结果展现给用户为什么要用?1)JSP,Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的烦乱2)基于Struts开发的应用:不用考虑公共问题专心在业务实现上结构统一,易于学习、维护新手也可以写出好程序4 struts框架提供了哪些辅助功能1)自动收集数据(成员变量)2)支持类型转换3)国际化4)异常处理5)标签5 hibernate的工作原理1 读取并解析配置文件2 读取并解析映射信息,创建SessionFactory3 打开Session4 创建事务Transaction5 持久化操作6 提交事务7 关闭Session8 关闭SessionFactory为什么要用?1 对JDBC访问数据库的代码做了封装,大大简化了数据访问繁琐的重复性代码。2 Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作3 hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。6 hibernate的对象状态有哪几种,并简单介绍下1临时状态:内存对象,并没有保存在数据库2 持久化状态:已经保存在数据库并纳入了session缓存中3 游离状态:已经保存在数据库中,但没有纳入session缓存中7 J2EE共有23种设计模式,说出其中几个常用的:工厂模式(Factory)单例模式(Singleton)适配器模式(Adapter) 代理模式(Proxy)模板方法模式(Template Method)8 spring的优点1.降低了组件之间的耦合性,实现了软件各层之间的解耦2.可以使用容易提供的众多服务,如事务管理,消息服务等3.容器提供单例模式支持4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能5.容器提供了众多的辅助类,能加快应用的开发6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等7.spring属于低侵入式设计,代码的污染极低8.独立于各种应用服务器9.spring的DI机制降低了业务对象替换的复杂性10.spring的高度开发性,并

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论