servlet工作原理与过滤器原理

[b]Servlet工作原理:[/b]

Servlet是和平台无关的服务器组件,运行在Servlet容器中的。Servlet容器
负责Servlet和客户的通信及调用Servlet的方法。Servlet与客户通信采用的是请求/响应模式。

[b]Servlet多线程[/b]
Servlet采用多线程处理多个请求访问,Servlet容器维护一个线程池来访问请求。
当容器收到一个Servlet请求,调度者线程从线程池中选一个工作者线程,将请求传递给该线程然后由这个线程来执行Servlet中的service 方法.当线程正在执行时,容器收到另一个请求,调度者线程将从池中选出另外一个工作者线程来服务新请求.
容器并不关心这个请求是否访问的是同一个Servlet。
当容器同事收到对同一个Servlet的多个请求,这个Servlet中的Service方法将在多线程中并发执行。
Servlet容器默认采用[b]单实例多线程[/b]方式来处理,这样减少产生Servlet实例的开始,
提升对请求的响应时间。对应Tomcat可以再Servlet.xml配置<connector>元素设置线程池中的线程数目.

[b]Servlet生命周期:[/b]
Servlet整个生命周期可以分为四个阶段:类装载及实例创建Servlet实例、实例初始化阶段、请求服务处理阶段和实例销毁阶段。

[b]Servletq请求处理流程[/b]

1. 接收到访问某个servlet的http请求后,servlet引擎首先检查是否已经装载并创建该servlet实例对象。如果已经装载并创建了该实例对象,servlet引擎直接执行第5步;否则执行第2步。

2. 装载并创建了该实例对象。

3. 调用servlet实例对象的init()方法,执行servlet的初始化工作。

5. 创建一个用于封装http请求的HttpRequest对象和一个封装http相应信息的HttpResponse对象,然后调用servlet的service()方法(并将请求和相应对象传入方法)

6. 在一个web应用被停止或重新启动web服务器前,servlet引擎将卸载其中运行的servlet。servlet在被卸载前servlet引擎调用其destroy()方法执行一些清理工作,释放该servlet占用的资源。(servlet引擎卸载servlet后,servlet对象占用的[b]内存空间[/b]将被java的垃圾回收器回收)。

[b]Servlet优点:[/b]

1、运行速度上比CGI快,因为使用了多线程

2、servlet使用了标准的api,可被许多web服务支持

3、与系统无关性,一次编译多次使用。

[b]Servlet过滤器[/b]
过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请求信息。

过滤器可以作如下的选择:
①以常规的方式调用资源(即,调用servlet或JSP页面)。
②利用修改过的请求信息调用资源。
③调用资源,但在发送响应到客户机前对其进行修改。
④阻止该资源调用,代之以转到其他的资源,返回一个特定的状态代码或生成替换输出。

[b]Servlet过滤器的基本原理[/b]
Servlet作为过滤器使用时,它可以对客户的请求进行处理。处理完成后,它会交给下一个过滤器处理,客户的请求在过滤链里逐个处理,直到请求发送到目标为止。

[b]Servlet过滤器开发步骤[/b]
①编写实现Filter接口的Servlet类。
②在web.xml中配置Filter。
开发一个过滤器需要实现Filter接口,Filter接口定义了以下方法:
①destory()由Web容器调用,初始化此Filter。
②init(FilterConfig filterConfig)由Web容器调用,初始化此Filter。
③doFilter(ServletRequest request,ServletResponse response,FilterChain chain)具体过滤处理代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值