天天看点

Servlet

Servlet简介:

用Java 编写的服务器端程序

运行在 Web 服务器上

执行服务器端处理

HTTP请求

WEB浏览器-----------> Web服务器--->Servlet <-----------   HTTP响应

Servlet的优点:

1.持久

2.速度快且性能更佳

3.跨平台

4.可扩展

5.安全

6.可用于各种客户端

Servlet 体系结构  Servlet包含两个包:

javax.servlet 称为GenericServlet

javax.servlet.http 称为HttpServlet

Servlet包的层次结构

Servlet

  |

GenericServlet

HttpServlet

用户自定义的 Servlet

Servlet必须实现 javax.servlet.Servlet 接口

通过扩展这两个类实现:

javax.servlet.GenericServlet

跨协议的 Servlet:

javax.servlet.HttpServlet

HTTP Servlet

抽象类

GenericServlet -----与协议无关的Servlet

ServletInputStream ----二进制输入流

ServletOutputStream ----二进制输出流

接口

ServletConfig -配置

ServletContext -与容器通讯

Servlet -定义必须实现的方法

ServletRequest -请求

ServletResponse -相应

RequestDispatcher -转发

SingleThreadModel -单线程

javax.servlet.http包

Cookie

HttpServlet -抽象类

HttpSessionBindingEvent -会话绑定事件

HttpServletRequest -HTTP请求

HttpServletResponse -HTTP相应

HttpSession -会话

HttpSessionBindingListener-会话绑定监听器

Servlet的生命周期

 服务器加载 Servlet

              |

 服务器创建Servlet类的实例

             |

 调用 Servlet 实例的init( ) 方法

             |

     收到请求

  Servlet 在服务器调用destroy( ) 方法后被卸载

  Servlet 等待下一个请求或由服务器卸载

  service( ) 方法处理请求并将输出结果返回客户端

              |

 调用 service( ) 方法

Servlet 生命周期

Servlet 服务器负责管理Servlet的生命周期

三个阶段

init            service              destroy

service阶段使用请求/响应方式进行通信

init()方法

服务器构造Servlet实例后调用

执行 Servlet 初始化 – 创建或加载 Servlet 在处理请求时使用的对象

可以覆盖 init()方法,添加其他初始化内容

destroy()方法

卸载 Servlet 时,调用 destroy ( ) 方法

释放获得的资源

服务器在完成所有服务调用之后,或者在经过服务器特定的秒数之后调用 destroy() 方法

请求和响应

可按两种方式进行:

请求的方式

ServletRequest

HttpServletRequest

响应的方式

ServletResponse

HttpServletResponse

HTTP Servlet 基本知识

HTTP Servlet 可生成 HTML 网页

HTTP Servlet 也可嵌入在 HTML 网页中

客户端以某种方法发送请求给 HTTP Servlet

GET 和 POST

GET 方法用于获得信息

POST 方法用于发布信息

提供对 HTTP 头数据的访问

扩展 HttpServlet 类并覆盖处理 HTTP 请求的 Servlet 方法

方法包括:

doGet(),用于从服务器获得信息

doPost(),用于将请求发送给服务器

getQueryString()方法返回客户端的请求字符串

可用方法

HEAD:客户端查看响应头

PUT:将文档直接放置在服务器上

DELETE:删除服务器中的文档

TRACE:调试辅助程序

OPTIONS:向服务器请求支持方法

访问客户端数据的方法:

getParameter( ),返回指定参数的值

getParameterValues( ),用在有多个值的情况

对于 POST、PUT 和 DELETE 请求

getReader( ) 返回 BufferedReader

getInputStream( ) 返回 ServletInputStream

提供返回数据的方法:

getWriter() 返回 Writer

getOutputStream() 返回 ServletOutputStream

ServletRequest接口可访问如下信息

客户端传递的参数的名称

正在使用的协议

远程主机的名称

ServletInputStream

输入流,用于获得使用 HTTP POST 和 PUT 方法等应用协议的客户端的数据

ServletResponse接口

作为回复响应客户端

设置回复的内容长度和 MIME 类型

提供 Writer 和输出流的机制

会话跟踪

对内存中可以存在的会话数量进行限制

在超过上述限制时,会话跟踪器会将近来最不常用的会话交换出去,以文件形式保存在磁盘上

会话无效在 session.invalidationinterval 属性中设置,不受会话交换的影响

会话跟踪技术

用户认证

持久 Cookie

URL 重写

隐藏表单字段

会话交换和持久

会话跟踪中的用户认证

会话跟踪中用户认证的优点:

容易实现

在用户从不同机器访问站点时也有效

即使用户退出浏览器也同样有效

用户认证的缺点:

用户登录以访问站点的每个会话都必须注册和获得帐户

用户在同一站点上不能同时维护多个会话

HttpSession接口

服务器的会话视图

在客户端和服务器之间提供持久的关联

在下列情况下,会话为新:

 客户端首次进入页面或站点时

 会话还未启动时

 客户端选择不参与会话

ServletConfig接口

定义Servlet 配置对象

Servlet 引擎使用此对象将信息传递给 Servlet

包含对 ServletContext 对象的引用

方法:

String getInitParameter( String  name)

Enumeration getInitParameterNames()

ServletContext getServletContext()

提供有关Servlet 引擎及其环境的信息

Object getAttribute(String name)

Enumeration getAttributeNames()

ServletContext getContext(String uripath)

过滤器(Filter)

Servlets Filter 是Servlet 2.3 规范中新增加的,它是截取用户从客户端提交的请求,在还没有到达需要访问的资源时运行的一个类。它操纵来自客户端的请求,在资源还没有初发送到客户端前截取响应,并处理这些还没有发送到客户端的响应 .

Filters的应用

Filters 有许多的应用场合。Servlet 2.3 规范建议如下的地方可以应用Filter:

authentication filters 

logging and auditing filters 

p_w_picpath conversion filters

data compression filters

encryption filters

tokenizing filters filters that trigger resource access events

XSL/T filters that transform XML content

MIME-type chain ilters

Filter的结构

自定义Filter必须要实现javax.servlet.Filter接口,这个接口只要包含了三个主要的方法:

init(FilterConfig filterconfig)-初始化过滤器

doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain)-进行具体的过滤操作执行完过滤操作后,它需要执行chain.doFilter(srequest,sresponse);来把控制权转让给下一个过滤器.

destory()-销毁过滤器,可以在这里释放使用完的资源,例如设置过滤器中FilterConfig为null。 

上一篇: servlet
下一篇: Servlet