HTTP的生命周期是什么?
1、新客户端向服务器第一次发送请求的时候,request中并无sessionID
2、此时server端会创建一个session对象,并分配一个sessionID,serssion对象会保存在服务器端。此时session的状态处于new state状态,如果调用sessionisNew(),则返回true
3、当服务器段处理完毕后,将此sessionID,同response一同传回到客户段,并将其存入到cookie中。
4 、当客户段再次发送请求时,会将sessionID 同request一起发送,传递给服务器端。
5 、服务器端可以根据传递过来的sessionID将这次请求(request)与保存在服务器端的session对象联系起来,此时的session已不处于new state状态,如果调用sessionisNew(),则返回false
6 、循环3-5 ,直到session超时或销毁。
Servlet生命周期是指:Servlet实例从创建到响应客户请求直至销毁的过程。Servlet容器控制着Servlet的生命周期。首次调用Servlet时由Servlet容器创建Servlet实例。
Servlet生命周期的3个方法:
·init():创建Servlet实例后进行初始化。实现ServletConfig接口的对象作为参数进行传递。在初始化过程中,Servlet容器使用ServletConfig接口将信息传递给Servlet,如Servlet参数名称,初始化参数的值,Servlet实例名称等。
语法:public void init(ServletConfig config) throws ServletException
注:config作为参数传递给init()方法实现ServletConfig接口的对象。
·service():响应客户端发出的请求。service()方法接受ServletRequest接口和ServletResponse接口的对象来处理请求和发送响应。
语法:public void service(ServletRequest request,ServletResponse response) throws ServletException,IOException
·destroy():释放Servlet实例,清楚所持有的资源,如内存和文件处理线程。
语法:public void destroy()
注:要实例化一个Servlet,Servlet容器必须先找到Servlet类,加载Servlet类并创建Servlet对象。然后调用init()方法初始化Servlet。ServletConfig接口对象作为参数传递给init()方法,ServletConfig接口对象提供对ServletContext接口的访问。Servlet容器使用ServletContext接口与Servlet容器进行通信。
如果初始化Servlet失败,则抛出UnavailableException或ServletException异常,并再次常识实例化和初始化Servlet。然后将ServletRequest和ServletResponse接口对象作为参数传递给service()方法,该方法将处理请求并返回异常。如果响应请求是引发异常,则调用destroy()方法来卸载Servlet实例,以确保在内存中所有的持续状态和Servlet的当前状态是同步的。
Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。
其中Session的生命周期时间可以在webxml配置,默认为30分钟,在webxml配置:[html]session-configsession-timeout20/session-timeout//设置session的生命周期,默认为30分钟。
可调用requestgetSession(true)强制生成Session。Session什么时候失效?服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Tomcat中Session的默认失效时间为20分钟。调用Session的invalidate方法。
Servlet的生命周期分为5个阶段:
实例化:Servlet容器创建Servlet类的实例。
初始化:该容器调用init()方法,通常会申请资源。
服务:由容器调用service()方法,(也就是doGet()和doPost())。
破坏:在释放Servlet实例之前调用destroy()方法,通常会释放资源。
不可用:释放内存的实例。
概括来讲,Servlet可以完成和CGI相同的功能。
CGI(Common Gateway Interface通用网关接口)程序来实现数据在Web上的传输,使用的是如Perl这样的语言编写的,它对于客户端作出的每个请求,必须创建CGI程序的一个新实例,这样占用大量的内存资源。由此才引入了Servlet技术。
Servlet是一个用java编写的应用程序,在服务器上运行,处理请求信息并将其发送到客户端。对于客户端的请求,只需要创建Servlet的实例一次,因此节省了大量的内存资源。Servlet在初始化后就保留在内存中,因此每次作出请求时无需加载。
CGI应用开发比较困难,因为它要求程序员有处理参数传递的知识,这不是一种通用的技能。CGI不可移植,为某一特定平台编写的CGI应用只能运行于这一环境中。每一个CGI应用存在于一个由客户端请求激活的进程中,并且在请求被服务后被卸载。这种模式将引起很高的内存、CPU开销,而且在同一进程中不能服务多个客户。
Servlet提供了Java应用程序的所有优势——可移植、稳健、易开发。使用Servlet Tag技术,Servlet能够生成嵌于静态HTML页面中的动态内容。
Servlet对CGI的最主要优势在于一个Servlet被客户端发送的第一个请求激活,然后它将继续运行于后台,等待以后的请求。每个请求将生成一个新的线程,而不是一个完整的进程。多个客户能够在同一个进程中同时得到服务。一般来说,Servlet进程只是在Web Server卸载时被卸载。
税务局报运维是指因税务征管系统给纳税人造成的错误,而需要上报省级国税部门通过后台处理这条错误。运维,按照字面意思就是运行维护。运维,本质上是对网络、服务器、服务的生命周期各个阶段的运营与维护,在成本、稳定性、效率上达成一致可接受的状态。
0条评论