ServletContext、ActionContext、ServletActionContext区别
Servlet描述这是一组接口,规范(sun公司并没有去实现它)它的实现就是由各大服务器厂商(Tomcat)去实现Tomcat是一个javaweb服务器,也是一个Servlet容器Servlet是所有创建,运行,销毁都由Servlet容器完成Servlet 默认是单例模式,在web 容器中只创建一个实例,所以多个线程同时访问servlet的时候,Servlet是线程不安全的生命周期...
Servlet
描述
这是一组接口,规范(sun公司并没有去实现它)
它的实现就是由各大服务器厂商(Tomcat)去实现
Tomcat是一个javaweb服务器,也是一个Servlet容器
Servlet是所有创建,运行,销毁都由Servlet容器完成
Servlet 默认是单例模式,在web 容器中只创建一个实例,所以多个线程同时访问servlet的时候,Servlet是线程不安全的
生命周期
- 如果是通过自动装载就在服务器启动时调用对应的servlet 中的init 方法,否则就在浏览器第一次请求访问
- 服务器的时候初始化
- 执行的服务方法(service) - 第n次访问
- 对于tomcat来说,Servlet只有一个(
它是单例的,使用的是缓存
) - 当我们正常关闭tomcat的时候,执行destroy方法
ServletContext
描述
ServletContext是Servlet上下文对象,四大作用域之一
四大作用域对象介绍
类 | 对象(叫法) | 范围 |
---|---|---|
PageContext | pageContext | 当前页面(作用不大) |
HttpRequest | request | 一次请求(请求转发必须) |
HttpSession | session | 一次会话 |
ServletContext | application | 整个应用(有且只有一个) |
生命周期
- Servlet容器启动时自动创建该对象
- Servlet容器关闭时容器销毁该对象
Action
描述
Action类是用户请求和业务逻辑之间的桥梁,每个Action充当客户的一项业务代理
Action 默认是多实例的并非单例,也就是每次请求产生一个Action的对象,因为是每次新建,所以没有线程安全问题
生命周期
每一次request请求新建一个action
request请求完毕后,会被Struts2或者spring容器销毁
ActionContext
描述
ActionContext(com.opensymphony.xwork.ActionContext)是Action执行时的上下文,上下文可以看作是一个容器(其实我们这里的容器就是一个Map而已),它存放的是Action在执行时需要用到的对象。
ActionContext里的属性只会在对应的当前请求线程中可见,从而保证它是线程安全的。
生命周期
ActionContext的生命周期是一次请求,也就是同request一样
主要方法
ActionContext.getContext().getSession()
ActionContext.getContext().getApplication()
ServletActionContext
描述
ServletActionContext(com.opensymphony.webwork.ServletActionContext),该类直接继承了ActionContext提供直接与Servlet相关对象访问的功能
ServletActionContext也线程安全
生命周期
该类直接继承了ActionContext,故生命周期和ActionContext一样
主要方法
获取Servlet的相关对象
- javax.servlet.http.HttpServletRequest:HTTPservlet请求对象
- javax.servlet.http.HttpServletResponse:HTTPservlet响应对象
- javax.servlet.ServletContext:Servlet上下文信息
- javax.servlet.ServletConfig:Servlet配置对象
- javax.servlet.jsp.PageContext:Http页面上下文
如:
ServletActionContext.getRequest()
ServletActionContext.getResponse()
更多推荐
所有评论(0)