Config、context、Servlet线程和会 话 跟 踪

 

一,ServletConfig和ServletContext

•         ServletConfig

–       如何给Servlet类配置初始化参数

–       如何在Servlet类中获取它的初始化参数值

•         ServletContext

–       如何配置Web应用上下文初始化参数

–       如何在Servlet类中获取Web应用上下文的初始化参数值

•         ServletContext的其他用途

–       public void setAttribute(String name, Object obj):根据指定名name把对象obj存放到应用上下文范围中。

–       public Object getAttribute(String name):根据指定名从应用上下文范围中获取到该属性对象。

–       public void removeAttribut(String name):根据指定名从应用上下文范围中移除该属性。

•         ServletConfig和ServletContext的区别

–       整个Web应用只有一个ServletContext,在部署Web应用的时候,容器会建立这一个ServletContext对象,这个上下文对Web应用中的每个Servlet和JSP都可用。

–       Web应用中的各个Servlet都有自己的ServletConfig,它只对当前Servlet有效。

二,Servlet的线程安全问题

•         使用synchronized

–       使用synchronized关键字同步操作成员变量和共享数据的代码,就可以防止可能出现的线程安全问题。

•         尽量少使用成员变量和共享数据

–       ServletContext是可以多线程同时读/写成员变量和共享数据的,线程是不安全的。

–       ServletRequest对象在service方法的范围内是有效的,不要试图在service方法结束后仍然保存请求对象的引用。

–       Servlet本身就是多线程的,在Servlet中再创建线程,将导致执行情况复杂化,出现多线程安全问题。

三,会 话 跟 踪

•         HTTP是一种无状态协议,每当用户发出请求时,服务器就做出响应,客户端与服务器之间的联系是离散的、非连续的。

•         当用户在同一网站的多个页面之间转换时,根本无法知道是否是同一个客户,会话跟踪是一种灵活、轻便的机制,它使在页面上的状态编程变为可能。当一个客户在多个页面间切换时,服务器会保存该用户的信息。

•         Web应用中的会话是指一个客户端浏览器与Web服务器之间连续发生的一系列请求和响应过程。

•         从客户端打开浏览器并连接服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。

•         Web应用的会话状态是指定Web服务器与浏览器在会话过程中产生的状态信息。

•         借助于会话状态,Web服务器能够把同一会话中的一系列的请求和响应过程关联起来,使得它们之间可以互相依赖和传递信息。例如在购物过程中,购物结算时,必须知道用户的登录结果(登录成功或失败),产品订购的结果(订购了哪些产品,订购了几件)等,所以,在购物会话中,用户的登录账户信息和订购的产品就是这个会话的状态信息

•         几乎所有的Web应用程序,客户端浏览器与Web服务器的会话过程都是要有状态的,即Web服务器程序在处理浏览器发出的请求时,能够把它和用户会话信息关联起来。

•         HTTP协议是一种无状态的协议,浏览器主动发出一个请求,Web服务器接收请求并返回一个响应,Web服务器并不能区分这个请求是从哪一个主机上的哪种浏览器发出的。Web服务器接收到一个客户端浏览器的请求时,根本无法确定该浏览器先前的访问请求信息。对于这种无状态的会话过程,浏览器每一次请求都是完全孤立的,Web服务器端根本就不认为同一个浏览器发出的请求之间有任何关联。

•         由于HTTP协议本身不具有会话状态,所以,要想在Web应用程序中维持会话状态信息和实现有状态的会话管理,必须采用一些专门的技术来进行解决。

•         要实现有状态的会话,就需要在Web服务器程序和客户端浏览器之间来回传递会话ID,以关联同一客户端浏览器向服务器发出的连续请求。实现在Web服务器程序和客户端浏览器之间来回传递会话ID的技术被称为会话跟踪技术。

•         会话跟踪技术主要有两种:

•         通过Cookie技术在请求消息首部中传递会话ID;

•         通过URL重写,即在URL的末尾添加上这个会话ID

 

阅读更多
上一篇Servlet应用
下一篇HttpServletResponse的应用
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭