JSP内置对象详细介绍(下)
来源:互联网 发布:无主之地2人工智能 编辑:程序博客网 时间:2024/06/05 12:46
原文链接:http://www.strutshome.com/index.php/archives/58
第四个问题:Servlet的生命周期是什么呢?
Servlet的生命周期,简单的概括分为四步:servlet类加载—>实例化—>服务—>销毁。
Servlet实例化的步骤:
1、Servlet容器启动时:读取Web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象的init方法。
2、在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会 判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建HttpRequest、 HttpResponse对象,从而调用Servlet对象的service方法。
3、Servlet的类文件被更新后,重新创建Servlet
Servlet容器在启动时自动创建Servlet,这是由在Web.xml文件中为Servlet设置的<load-on-startup>属性决定的,并且从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的形式存在。
如果没有设置loadOnStartup,则第一次请求的时候实例化。如果设置loadOnStartup则分三种情况:
loadOnStartup < 0
即负数的情况下,web容器启动的时候不做实例化处理,servlet首次被调用时做实例化。这种情况和没有设置loadOnStartup是一样的。
loadOnStartup > 0
web容器启动的时候做实例化处理,顺序是由小到大,正整数小的先被实例化。
loadOnStartup = 0
web容器启动的时候做实例化处理,相当于是最大整数,因此web容器启动时,最后被实例化。
例如下面的例子:
<servlet>
<servlet-name>action<servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>name</param-name>
<param-value>wangsan</param-value>
</init-param>
<init-param>
<param-name>address</param-name>
<param-value>beijing</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
下面对上面的配置节信息进行解析
servlet-name:Servlet对象的名称
servlet-class:创建Servlet对象所要调用的类
param-name:参数名称
param-value:参数值
load-on-startup:Servlet容器启动时加载Servlet对象的顺序
servlet-mapping/servlet-name:要与servlet中的servlet-name配置节内容对应
url-pattern:客户访问的Servlet的相对URL路径
当Servlet容器启动的时候读取<servlet>配置节信息,根据<servlet-class>配置节信息创建 Servlet对象,同时根据<init-param>配置节信息创建HttpServletConfig对象,然后执行Servlet对象 的init方法,并且根据<load-on-startup>配置节信息来决定创建Servlet对象的顺序,如果此配置节信息为负数或者没有配置,那么在Servlet容器启动时,将不加载此Servlet对象。当客户访问Servlet容器时,Servlet容器根据客户访问的URL地址,通过<servlet-mapping>配置节中的<url-pattern>配置节信息找到指定的Servlet对象,并调用此Servlet对象的service方法。
第五个问题:pageContext与其他JSP内置对象的关系?
pageContext对象是JSP中很重要的一个内置对象,不过在一般的JSP程序中,很少用到它。它是 javax.servlet.jsp.PageContext类的实例对象,可以使用PageContext类的方法。实际上,pageContext对象提供了对JSP页面所有的对象及命名空间的访问。pageContext对象能够存取其他隐含对象。
方法
返回值
方法说明
getException()
Exception
获取当前的exception内置对象, 不过此网页要为error page
getOut()
JspWriter
获得网页的输出流
getPage()
Object
获得页面Servlet 实体
getRequest()
ServletRequset
获得网页的请求
getResponse()
ServletResponse
获得网页的响应
getServletConfig()
ServletConfig
获得网页的ServletConfig 对象
getServeltContext()
ServletContext
获得网页的执行环境
getSession()
HttpSession
获得和网页有联系的会话
getAttribute(String name,int scope)
Object
获取指定范围的name属性值
getAttributeNamesInScope(int scope)
Enumeration
获取指定范围所有属性名称
getAttributesScope(String name)
int
获取属性名称为name的属性范围
removeAttribute(String name)
void
移除属性名称为name的 属性
removeAttribute(String name,int scope)
void
移除指定范围的属性名称为name的 属性
setAttribute(String name,Object value,int scope)
void
设置指定范围的name属性
findAttribute(String name)
Object
寻找所有范围的属性名称为name的属性
第六个问题:request属性的特点?
request:指属性在一次请求范围内有效。如果页面从给一个页面跳转到另一个页面,那么该属性就失效了。这里所指的跳转是指客户端跳转,比如客户单击超链接跳转到其他 页面或者通过浏览器地址栏浏览其他页面。如果使用服务器端跳转<jsp:forward>,则该属性仍然生效。同理使用request对象的 setAttribute()和getAttribute()。
参考内容:
讲解servlet生命周期的文章:
http://www.cnblogs.com/AaronLi/archive/2011/09/02/2164355.html
详细讲解jsp内置对象的文章,此文章排版不错,尤其表格是使用将知识讲解的十分合理,但是内容比较多需要狠狠吃透才行的。
http://www.blogjava.net/RoyPayne/archive/2012/01/05/367930.htm
- JSP内置对象详细介绍(下)
- JSP内置对象详细介绍(下)
- JSP九大内置对象详细介绍
- JSP内置对象详细介绍(上)
- JSP内置对象详细介绍(上)
- jsp内置对象及方法详细介绍
- JSP内置对象介绍
- JSP内置对象介绍
- jsp内置对象介绍
- JSP内置对象介绍
- JSP内置对象下
- JSP内置对象(下)
- JSP内置对象(下)
- JSP内置对象(下)
- 九大jsp内置对象[详细]
- JSP九大内置对象详细分析
- application、session、request、page 4个JSP内置对象详细介绍
- JSP 9 大内置对象介绍
- Spring3环境下,ajax提交后台校验验证码
- jquery validate用法
- ActiveRecord OR TableGateway
- Android中的Paint类属性介绍
- C++ string 使用心得详解
- JSP内置对象详细介绍(下)
- 对技术的态度
- Linux下tomcat的配置
- 照片如何转换成pdf
- 黑马程序员——Java概述,基础学习第一天总结
- 分布式内存缓存系统memcached的安装配置及基本命令
- 还原数据库出错的解决方法
- Android布局注意事项
- Win7实现内录声音