Ajax
Ajax的原理简单来说通过XMLHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得请求数据.
xmlHttpRequest是ajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术.简单的说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户,达到无刷新的效果.
优点:
Ajax给我们带来的好处大家基本上都深有体会
1.最大的一点是页面无刷新,在页面内与服务器通信,给用户的体验非常好.
2.使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力.
3.可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和宽带的负担,节约空间和宽带租用成本,并且减轻服务器的负担,ajax的原则是"按需取数据",可以最大程度的减少冗余请求,和响应对服务器造成的负担.
缺点:
下面所阐述的ajax的缺陷都是它先天所产生的.
1.ajax干掉back按钮,即对浏览器后退机制的破坏,后退按钮是一个标准的web站点的重要功能,但是他没法和js进行很好的合作.这是ajax所带来的一个比较严重的问题.
2.安全问题
技术同时也对IT企业带来了新的安全威胁,ajax技术就如同企业数据建立了一个之间通道.这使得开发者在不经意间会暴露比以前更多的数据和服务器逻辑.ajax的逻辑可以对客户端的安全扫描技术隐藏起来,允许黑客从远端服务器上建立新的攻击.还有ajax也难以避免一些已知的安全弱点,诸如跨站点脚步攻击,SQL注入攻击和基于credentials的安全漏洞等.
Servlet
主要分为四大选择器.分别为基本选择器.层次选择器,过滤选择器.属性过滤选择器.
常用的选择器分为以下几种.
1.基本选择器:
id选择器.class选择器.element选择器.*选择器.并列选择器.
2.层级选择器
prent>child(直系子元素)
prev+next(下一个兄弟元素,等用于next()方法)
pre~siblings(pre元素的所有兄弟元素,等同于nextAll()方法)
过滤选择器
first和last(取第一个元素或最后一个元素)
even和odd:(取偶数索引或奇数索引元素,索引从0开始,even表示偶数,odd表示奇数)
t(取非元素)
eq(x)(取指定索引的元素)
gt(x)和lt(x)(取大于x索引或小于x索引的元素)
header(取H1-H6标题元素)
Cookie&Session
回话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话,常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务端记录信息确定用户身份.
什么是cookie?
Cookie实际上是一小段的文本信息,客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie.客户端浏览器会把Cookie保存起来.当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器.服务器检查该Cookie,以此来辨认用户状态.服务器还可以根据需要修改Cookie的内容.
Cookie机制
在程序中,会话跟踪是很重要的事情,理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆.例如,用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话,不能放入用户B或用户C的购物车内,这不属于同一个会话.
而Web应用程序是使用HTTP协议传输数据的,Http协议是无状态的协议,一旦数据交换完毕,客户端和服务端的连接就会关闭,再次交换数据需要建立新的连接.这就意味这服务器无法聪哥连接上跟踪会话.即用户A购买了一件商品放入购物车内,当再次购买商品服务器已经无法判断该购买行为书属于用户A的会话还是用户B的会话了,要跟踪该会话,必须引入一种机制.
Cookie就是这样的一种机制.它可以弥补HTTP协议无状态的不足,在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话.
什么是Session?
Session是另一种记录客户端状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上.客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上.这就是Seesion.客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了.
如果说Cookie机制是通过检查客户身上的"通行证"来确定客户身份的话,那么Session机制就是通过检查服务器上的"客户明细表"来确认客户身份.Session相当于程序在服务器上建立的一份客户档案,客户来访的时候值需要查询客户档案表就可以了.
Session机制?
除了使用Cookie,Web应用程序中经常使用Session来记录客户端状态.Session是服务器端使用的一种记录客户端状态的机制.使用上比Cookie简单一些.响应的也增加了服务器的存储压力.
如何利用Cookie实现自动登录/
当用户在某个网站注册后,就会收到一个唯一用户ID的cookie.客户后来重新连接时,这个用户ID会自动返回,服务器对它进行检查,确定它是否为注册用户且选择了自动登录,从而使用户无需给出明确的用户名和密码,就可以访问服务器上的资源.
保存Session ID有几种方法?
A 保存Session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器.
B.由于Cookie可以被人为的禁止,必须有其他的机制,以便在cookie被禁止时仍然能够把Session传递会服务器.经常采用的技术叫做URL重写,就是把Session id附加在URL路径的后面,附加的方式,也有两种,一种是作为URL路径的附加信息,另一种是作为查询字符串附加在URL后面,网络在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个Session
C.另一种技术叫做表单隐藏字段.就是服务器会自动修改表单,添加隐藏字段,以便在表单提交时能够把Session id传递回服务器.
Session什么时候被创建?
一个常见的错误是以为Session在有客户端访问时就被创建,然而事实是直到某Server端程序(如Servlet)调用HttpServletRequest.getSession(true)这样的语句时才会被创建.
Session何时被删除?
A.程序调用HttpSession.invalidate();
B.举例上一次收到客户端发送的Session id时间间隔超过了Session的最大有效时间(默认是30分钟)
C.服务器进程被停止.
注意关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效.不会使服务器端的session对象失效.
Cookie机制和Session机制的区别?
具体的说cookie机制采用的是在客户端保持状态的方案,而Session机制采用的是在服务器端保持的方案,同时我们也看到,由于在服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但是实际上还有其他选择.