您的位置:首页 > 其它

(五)Servlet就是这样-ServletConfig和ServletContext对象

2016-10-05 14:12 316 查看
Servlet读书笔记系列文《Servlet就是这样》第五篇:ServletConfig和ServletContext对象

一、ServletConfig -- 代表当前Servlet在web.xml中的配置信息

在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。

当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息

StringgetServletName()  -- 获取当前Servlet在web.xml中配置的名字

StringgetInitParameter(String name) -- 获取当前Servlet指定名称的初始化参数的值

EnumerationgetInitParameterNames()  -- 获取当前Servlet所有初始化参数的名字组成的枚举

ServletContextgetServletContext()  -- 获取代表当前web应用的ServletContext对象

二、*ServletContext -- 代表当前web应用

1、做为域对象可以在整个web应用范围内共享数据

域对象:在一个可以被看见的范围内共享数据用到对象

作用范围:整个web应用范围内共享数据

生命周期:当服务器启动web应用加载后创建出ServletContext对象后,域产生。当web应用被移除出容器或服务器关闭,随着web应用的销毁域销毁。

voidsetAttribute(String,Object);

ObjectgetAttribute(String);

voidremoveAttribute(String);

2、用来获取web应用的初始化参数

请求参数 parameter --- 浏览器发送过来的请求中的参数信息

初始化参数 initparameter--- 在web.xml中为Servlet或ServletContext配置的初始化时带有的基本参数

域属性 attribute --- 四大作用域中存取的键值对

3、实现Servlet的转发

重定向 : 302+Location

请求转发 : 服务器内不进行资源流转

*请求转发是一次请求一次响应实现资源流转.请求重定向两次请求两次响应.

4、加载资源文件

在Servlet中读取资源文件时:

a)       如果写相对路径和绝对路径,由于路径将会相对于程序启动的目录--在web环境下,就是tomcat启动的目录即tomcat/bin--所有找不到资源

b)       如果写硬盘路径,可以找到资源,但是只要一换发布环境,这个硬盘路径很可能是错误的,同样不行.

为了解决这样的问题ServletContext提供了getRealPath方法,在这个方法中传入一个路径,这个方法的底层会在传入的路径前拼接当前web应用的硬盘路径从而得到当前资源的硬盘路径,这种方式即使换了发布环境,方法的底层也能得到正确的web应用的路径从而永远都是正确的资源的路径

this.getServletContext().getRealPath("config.properties")

如果在非Servlet环境下要读取资源文件时可以采用类加载器加载文件的方式读取资源
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息