Java Web开发中关于Servlet的概念

关于Servlet一直不太明白,找了蛮多资料,摘抄如下,加深理解。

从功能的角度描述:

Servlet是一种运行在支持Java语言的服务器上的组件,用于实现多种网络服务功能,为网络客户提供安全可靠、易于移植的动态网页。Servlet容器用于处理客户端的请求,并将处理结果返回给客户端。简而言之,Servlet是为了实现Java语言的网络功能而存在的。

运行过程:

在Servlet容器中,当客户请求到来时,Servlet容器获取请求,然后调用某个Servlet,并把Servlet的执行结果返回给客户。而Tomcat就是一个典型的Servlet容器。

当客户请求某个资源时,Servlet容器使用ServletRequest对象把客户的请求信息封装起来,然后调用Servlet生命周期中的一些方法,完成客户端的请求任务。容器将Servlet执行的结果封装在ServletResponse对象中,一次返回给客户端,完成一次服务过程。

Servlet生命周期:

加载和实例化:当启动Servlet容器时,容器首先到发布目录的WEB-INF下查找一个配置文件(称为描述符文件)web.xml。这个配置文件有相关的Servlet的配置信息,主要是定义Servlet和对已定义的Servlet的映射。Servlet容器为每个配置自动装入选项的Servlet创建一个实例,而没有设置自动装入选项的Servlet,只有在第一次请求时容器才为其创建实例。

初始化:当Servlet被实例化之后,Servlet容器调用每个Servlet的init()方法来为实例初始化。其中作为init()方法参数的ServletConfig类中定义了初始Servlet需要的所有参数。

服务:Servlet被初始化之后,处于能响应请求的就绪状态。当客户端的请求到来时,服务器创建一个请求对象和响应对象。每个Servlet的请求都会产生一个ServletRequest对象,Servlet给客户端的响应由一个ServletReponse对象来完成。这两个对象以参数的形式传给service()方法。在service()内,对客户端的请求方法进行判断,如果是以GET方法提交的,则调用doGET()方法处理请求,如果是以POST方法提交的,则调用doPOST()方法处理请求。

销毁:当Servlet容器不需要某个Servlet实例时,容器会调用该Servlet的destroy()方法,在这个方法内,Servlet会释放掉所有在init()方法内申请的资源,如数据库连接等。

所属包:

Javax.servlet和Javax.servlet.http包为编写Servlet提供了借口和类。

其他:由浏览器内嵌的JVM执行的Java类叫Applet,由Web服务端的JVM执行的Java类叫Servlet程序。

简单概念:

 Servlet是sun公司提供的一门用于开发动态web资源的技术;

 Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
  1、编写一个Java类,实现servlet接口;
  2、把开发好的Java类部署到web服务器中。
通常也可以把实现了servlet接口的java程序,称之为Servlet。

运行过程:

Servlet技术的核心是Servlet,是所有Servlet类必须直接或间接需要实现的接口;

Servlet程序由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:

1、Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。

2、装载并创建该Servlet的一个实例对象。 

3、调用Servlet实例对象的init()方法。

4、创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。 

5、WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。

session(会话)

形象描述:

session也就是会话,我们在网上购物时,为了选购商品可能需要在不同的页面之间进行访问,在浏览的过程中不断的将商品添加到购物车中。所以,Servlet容器接收到客户请求之后,需要判断是哪个用户发出的请求,需要实现将商品添加到购物车中。为了跟踪用户的操作状态,Servlet容器使用了一个HttpSession对象实现这个功能,称为会话机制。

实现方式:

主要有两种实现方式:Cookie和URL重定向。

当一个会话开始时,Servlet容器为每个客户创建一个HttpSession对象,在HttpSession对象中可以存放客户状态信息(如购物车)。为了识别同一个Session对象,Servlet容器为每个Session分配一个唯一标识,称为SessionID。在客户端向服务器发送请求时,Servlet容器将生成的SessionID保存在客户端的Cookie中,如果客户端关闭了Cookie,则可以通过URL重定向保存这个SessionID。

会话创建:

在Servlet中通过request对象获得HttpSession对象:

HttpSession session = request.getSession(Boolean value);

HttpSession session = request.getSession();

会话使用:

使用setAttribute()和getAttribute()方法在HttpSession对象中设置和获取数据。

结束会话的生命周期:

1、客户端关闭浏览器;

2、调用HttpSession对象的invalidate()方法结束HttpSession对象的生命周期;

3、两次访问服务器的时间间隔大于session定义的最大非活动时间间隔。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值