对象作用域
Servlet中三个对象作用域
上下文
ServletContext
请求
ServletRequest
会话
HttpServlet
作用域对象
ServletContext(上下文)
HttpSession(会话)
ServletRequest(请求)
属性操作方法
void setArrribute(String ,Object)
Object getArribute(String)
void removeAttribute(String)
Enumeration getAttributeNames()
作用域范围说明
整个Web应用程序
一个会话交互过程
一次请求过程
ServletContext应用上下文
对ServletContext对象得到初始化参数通过web.xml文件中<context-param>标签设置
由于继承了HttpServlet所以可以在自定义Servlet中直接调用getServletContext()方法
上下文作用域中设置的属性在整个Web应用中被共享,只要服务器不被关闭,Web应用中任何一部分能访问到该属性。所以线程是不安全的
会话作用域
每一个会话只能访问当前会话作用域中设置的属性。但是我们可以使用特殊的浏览器窗口打开方式,使用相同的Session来访问设置的属性。也就是存在夺冠的线程访问相同的会话属性
请求作用域
在请求作用域范围内设置的属性,存储时间比上下文作用域和会话作用域短,在请求结束后,对象就会被垃圾回收
监听器概述
数据类型
ServletContext事件
生命周期
Servlet上下文刚被创建并可以开始为第一次请求服务,或者Servlet 上下文将要被关闭发生的事件
ServletContextListener
Listener接口
描述
属性改变
Servlet上下文内的属性被增加、删除或者替换时发生的事件
ServletContxtAttributel istener
HttpSession事件
生命周期
HttpSession被创建、无效或超时时发生
HttpSessionListener
会话迁移
HttpSession被激活或钝化时发生
HtpSessionActivationListener
属性改变
在HttpSession中的属性被增加、删除、替换时发生
HttpSessionAttributeListener
对象绑定
对象被绑定到或者移出HttpSession时发生。
HttpSessionBindingL istener
ServletRequest事件
生命周期
在Servletr 请求开始被Web组件处理时发生
ServletRequestListener
属性改变
在ServletRequest对象中的属性被增加、删除、替换时发生。
ServletRequestAttributeListener
URL重写
URL重写方法
encodeURL()
URL重写是容器自动完成的,但是需要我们对URL进行编码才有效