Servlet简介:
用Java 编写的服务器端程序
运行在 Web 服务器上
执行服务器端处理
用Java 编写的服务器端程序
运行在 Web 服务器上
执行服务器端处理
HTTP请求
WEB浏览器-----------> Web服务器--->Servlet <----------- HTTP响应
WEB浏览器-----------> Web服务器--->Servlet <----------- HTTP响应
Servlet的优点:
1.持久
2.速度快且性能更佳
3.跨平台
4.可扩展
5.安全
6.可用于各种客户端
1.持久
2.速度快且性能更佳
3.跨平台
4.可扩展
5.安全
6.可用于各种客户端
Servlet 体系结构 Servlet包含两个包:
javax.servlet 称为GenericServlet
javax.servlet.http 称为HttpServlet
Servlet包的层次结构
Servlet
|
GenericServlet
|
HttpServlet
|
用户自定义的 Servlet
Servlet
|
GenericServlet
|
HttpServlet
|
用户自定义的 Servlet
Servlet必须实现 javax.servlet.Servlet 接口
通过扩展这两个类实现:
javax.servlet.GenericServlet
跨协议的 Servlet:
javax.servlet.GenericServlet
跨协议的 Servlet:
javax.servlet.HttpServlet
HTTP Servlet
HTTP Servlet
抽象类
GenericServlet -----与协议无关的Servlet
ServletInputStream ----二进制输入流
ServletOutputStream ----二进制输出流
GenericServlet -----与协议无关的Servlet
ServletInputStream ----二进制输入流
ServletOutputStream ----二进制输出流
接口
ServletConfig -配置
ServletContext -与容器通讯
Servlet -定义必须实现的方法
ServletRequest -请求
ServletResponse -相应
RequestDispatcher -转发
SingleThreadModel -单线程
ServletConfig -配置
ServletContext -与容器通讯
Servlet -定义必须实现的方法
ServletRequest -请求
ServletResponse -相应
RequestDispatcher -转发
SingleThreadModel -单线程
javax.servlet.http包
类
Cookie
HttpServlet -抽象类
HttpSessionBindingEvent -会话绑定事件
Cookie
HttpServlet -抽象类
HttpSessionBindingEvent -会话绑定事件
接口
HttpServletRequest -HTTP请求
HttpServletResponse -HTTP相应
HttpSession -会话
HttpSessionBindingListener-会话绑定监听器
HttpServletRequest -HTTP请求
HttpServletResponse -HTTP相应
HttpSession -会话
HttpSessionBindingListener-会话绑定监听器
Servlet的生命周期
服务器加载 Servlet
|
服务器创建Servlet类的实例
|
调用 Servlet 实例的init( ) 方法
|
收到请求
|
Servlet 在服务器调用destroy( ) 方法后被卸载
Servlet 等待下一个请求或由服务器卸载
service( ) 方法处理请求并将输出结果返回客户端
|
调用 service( ) 方法
Servlet 生命周期
Servlet 服务器负责管理Servlet的生命周期
三个阶段
init service destroy
service阶段使用请求/响应方式进行通信
|
服务器创建Servlet类的实例
|
调用 Servlet 实例的init( ) 方法
|
收到请求
|
Servlet 在服务器调用destroy( ) 方法后被卸载
Servlet 等待下一个请求或由服务器卸载
service( ) 方法处理请求并将输出结果返回客户端
|
调用 service( ) 方法
Servlet 生命周期
Servlet 服务器负责管理Servlet的生命周期
三个阶段
init service destroy
service阶段使用请求/响应方式进行通信
init()方法
服务器构造Servlet实例后调用
执行 Servlet 初始化 – 创建或加载 Servlet 在处理请求时使用的对象
可以覆盖 init()方法,添加其他初始化内容
执行 Servlet 初始化 – 创建或加载 Servlet 在处理请求时使用的对象
可以覆盖 init()方法,添加其他初始化内容
destroy()方法
卸载 Servlet 时,调用 destroy ( ) 方法
释放获得的资源
服务器在完成所有服务调用之后,或者在经过服务器特定的秒数之后调用 destroy() 方法
释放获得的资源
服务器在完成所有服务调用之后,或者在经过服务器特定的秒数之后调用 destroy() 方法
请求和响应
可按两种方式进行:
请求的方式
ServletRequest
HttpServletRequest
请求的方式
ServletRequest
HttpServletRequest
响应的方式
ServletResponse
HttpServletResponse
ServletResponse
HttpServletResponse
HTTP Servlet 基本知识
HTTP Servlet 可生成 HTML 网页
HTTP Servlet 也可嵌入在 HTML 网页中
客户端以某种方法发送请求给 HTTP Servlet
HTTP Servlet 可生成 HTML 网页
HTTP Servlet 也可嵌入在 HTML 网页中
客户端以某种方法发送请求给 HTTP Servlet
GET 和 POST
GET 方法用于获得信息
POST 方法用于发布信息
GET 方法用于获得信息
POST 方法用于发布信息
HttpServletRequest
提供对 HTTP 头数据的访问
扩展 HttpServlet 类并覆盖处理 HTTP 请求的 Servlet 方法
方法包括:
doGet(),用于从服务器获得信息
doPost(),用于将请求发送给服务器
getQueryString()方法返回客户端的请求字符串
提供对 HTTP 头数据的访问
扩展 HttpServlet 类并覆盖处理 HTTP 请求的 Servlet 方法
方法包括:
doGet(),用于从服务器获得信息
doPost(),用于将请求发送给服务器
getQueryString()方法返回客户端的请求字符串
可用方法
HEAD:客户端查看响应头
PUT:将文档直接放置在服务器上
DELETE:删除服务器中的文档
TRACE:调试辅助程序
OPTIONS:向服务器请求支持方法
HEAD:客户端查看响应头
PUT:将文档直接放置在服务器上
DELETE:删除服务器中的文档
TRACE:调试辅助程序
OPTIONS:向服务器请求支持方法
HttpServletRequest
访问客户端数据的方法:
getParameter( ),返回指定参数的值
getParameterValues( ),用在有多个值的情况
访问客户端数据的方法:
getParameter( ),返回指定参数的值
getParameterValues( ),用在有多个值的情况
对于 POST、PUT 和 DELETE 请求
getReader( ) 返回 BufferedReader
getInputStream( ) 返回 ServletInputStream
getReader( ) 返回 BufferedReader
getInputStream( ) 返回 ServletInputStream
HttpServletResponse
提供返回数据的方法:
getWriter() 返回 Writer
getOutputStream() 返回 ServletOutputStream
提供返回数据的方法:
getWriter() 返回 Writer
getOutputStream() 返回 ServletOutputStream
ServletRequest接口可访问如下信息
客户端传递的参数的名称
正在使用的协议
远程主机的名称
ServletInputStream
输入流,用于获得使用 HTTP POST 和 PUT 方法等应用协议的客户端的数据
客户端传递的参数的名称
正在使用的协议
远程主机的名称
ServletInputStream
输入流,用于获得使用 HTTP POST 和 PUT 方法等应用协议的客户端的数据
ServletResponse接口
作为回复响应客户端
设置回复的内容长度和 MIME 类型
提供 Writer 和输出流的机制
作为回复响应客户端
设置回复的内容长度和 MIME 类型
提供 Writer 和输出流的机制
会话跟踪
对内存中可以存在的会话数量进行限制
在超过上述限制时,会话跟踪器会将近来最不常用的会话交换出去,以文件形式保存在磁盘上
会话无效在 session.invalidationinterval 属性中设置,不受会话交换的影响
会话跟踪技术
用户认证
持久 Cookie
URL 重写
隐藏表单字段
会话交换和持久
持久 Cookie
URL 重写
隐藏表单字段
会话交换和持久
会话跟踪中的用户认证
会话跟踪中用户认证的优点:
容易实现
在用户从不同机器访问站点时也有效
即使用户退出浏览器也同样有效
容易实现
在用户从不同机器访问站点时也有效
即使用户退出浏览器也同样有效
用户认证的缺点:
用户登录以访问站点的每个会话都必须注册和获得帐户
用户在同一站点上不能同时维护多个会话
用户登录以访问站点的每个会话都必须注册和获得帐户
用户在同一站点上不能同时维护多个会话
HttpSession接口
服务器的会话视图
在客户端和服务器之间提供持久的关联
在下列情况下,会话为新:
客户端首次进入页面或站点时
会话还未启动时
客户端选择不参与会话
在客户端和服务器之间提供持久的关联
在下列情况下,会话为新:
客户端首次进入页面或站点时
会话还未启动时
客户端选择不参与会话
ServletConfig接口
定义Servlet 配置对象
Servlet 引擎使用此对象将信息传递给 Servlet
包含对 ServletContext 对象的引用
定义Servlet 配置对象
Servlet 引擎使用此对象将信息传递给 Servlet
包含对 ServletContext 对象的引用
方法:
String getInitParameter( String name)
Enumeration getInitParameterNames()
ServletContext getServletContext()
String getInitParameter( String name)
Enumeration getInitParameterNames()
ServletContext getServletContext()
提供有关Servlet 引擎及其环境的信息
方法:
Object getAttribute(String name)
Enumeration getAttributeNames()
ServletContext getContext(String uripath)
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
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)-初始化过滤器
init(FilterConfig filterconfig)-初始化过滤器
doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain)-进行具体的过滤操作执行完过滤操作后,它需要执行chain.doFilter(srequest,sresponse);来把控制权转让给下一个过滤器.
destory()-销毁过滤器,可以在这里释放使用完的资源,例如设置过滤器中FilterConfig为null。
转载于:https://blog.51cto.com/youxue/49917