(转)ServletConfig与ServletContext
出处:http://blog.csdn.net/cl05300629/article/details/9362601 作者:伫望碧落
一、Servlet配置对象(ServletConfig):Servlet初始化时,容器调用其init(ServletConfig)方法,传递该对象。
1、获得对象方法:
(1)、直接使用getServletConfig()方法:
ServletConfig config = getServletConfig();
(2)、覆盖Servlet的init()方法,把容器创建的ServletConfig对象保存到一个成员变量中:
public void init(ServletConfig config){
super.init(config);
this.config = config;
}
2、ServletConfig的4个常用方法:
(1)、public String getInitParameter(String name):返回指定名称的初始化参数值;
(2)、public Enumeration getInitParameterNames():返回一个包含所有初始化参数名的Enumeration对象;
(3)、public String getServletName():返回在DD文件中<servlet-name>元素指定的Servlet名称;
(4)、public ServletContext getServletContext():返回该Servlet所在的上下文对象;
3、从ServletConfig对象中使用初始化参数初始化一个Servlet的过程可以实现Servlet的重用性
二、Servlet上下文对象(ServletContext):每个Web应用程序在被启动时都会创建一个唯一的上下文对象,Servlet可通过其获得Web应用程序的初始化参数或Servlet容器的版本等信息,也可被Servlet用来与其他Servlet共享数据。
1、获得ServletContext应用:
(1)、直接调用getServletContext()方法
ServletContext context = getServletContext();
(2)、使用ServletConfig应用,再调用它的getServletContext()方法
ServletContext context = getServletConfig.getServletContext();
2、获得应用程序的初始化参数:
(1)、public String getInitParameter(String name):返回指定参数名的字符串参数值,没有则返回null;
(2)、public Enumeration getInitParameterNames():返回一个包含多有初始化参数名的Enumeration对象;
3、通过ServletContext对象获得资源
(1)、public URl getResource(String path):返回由给定路径的资源的URL对象,以“/”开头,为相对路径,相对于Web应用程序的文档根目录;
(2)、public InputStream getResourceAsStream(String path):从资源上获得一个InputStream对象,等价于getResource(path).oprenStream();
(3)、public String getRealPath(String path):返回给定的虚拟路径的真实路径;
4、登陆日志:使用log()方法可以将指定的消息写到服务器的日志文件中
(1)、public void log(String msg):参数msg为写入日志文件消息
(2)、public void log(String msg,Throwable throwable):将msg指定的消息和异常的栈跟踪信息写入日志文件
5、使用RequestDispatcher实现请求转发
(1)、RequestDispatcher getRequestDiapatcher(String path):必须以"/"开头相对于应用程序根目录,而ServletRequest可以传递一个相对路径
(2)、RequestDipatcher getNamedDiapatcher(String name):参数name为一个命名的Servlet对象
6、使用ServletContext对象存储数据
(1)、public void serAttribute(String name,Object object):将给定名称的属性值对象绑定到上下文对象上;
(2)、public Object getAttribute(String name):返回绑定到上下文对象的给定名称的属性值;
(3)、public Enumeration getAttributeNames():返回绑定到上下文对象上的所有属性名的Enumeration对象;
(4)、public void removeAttribute(String name):删除绑定到上下文对象指定名称的属性;
ServletRequest共享的对象仅在请求的生存周期中可以被访问;
HttpSession共享的对象仅在会话的生存周期中可以被访问;
ServletContext共享的对象在整个Web应用程序启动的生存周期中可以被访问;
7、检索Servlet容器的信息
(1)、public String getServletInfo():返回Servlet所运行容器的名称和版本;
(2)、public int getMajorVersion():返回容器所支持的Servlet API的主版本号;
(3)、public int getMinorVersion():返回容器所支持的Servlet API的次版本号;
(4)、public String getServletContext():返回ServletContext对应的web应用程序名称<display-name>元素定义的名称;
三、Servlet的多线程问题
1、当涉及到Servlet需要共享资源是,需保证Servlet是线程安全的
2、注意事项:
(1)、用方法的局部变量保持请求中的专有数据;
(2)、只用Servlet的成员变量来存放那些不会改变的数据;
(3)、对可能被请求修改的成员变量同步(用Synchronized关键字修饰);
(4)、如果Servlet访问外部资源,那么需要同步访问这些资源;
3、实现SingleThreadModel接口的Servlet在被多个客户请求时一个时刻只能有一个线程运行,不推荐使用。
4、如果必须在servlet使用同步代码,应尽量在最小的范围上(代码块)进行同步,同步代码越少,Servlet执行才能越好,避免对doGet()或doPost()方法同步。
(转)ServletConfig与ServletContext的更多相关文章
- ServletConfig与ServletContext
ServletConfig与ServletContext对象详解 一.ServletConfig对象 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为s ...
- ServletConfig和ServletContext
ServletConfig和ServletContext Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为Servle ...
- JavaEE:Servlet简介及ServletConfig、ServletContext
Servlet简介 1.Servlet是sun公司提供的一门用于开发动态web资源的技术*静态web资源:固定数据文件*动态web资源:通过程序动态生成数据文件2.Servlet技术基于Request ...
- day05 Servlet 开发和 ServletConfig 与 ServletContext 对象
day05 Servlet 开发和 ServletConfig 与 ServletContext 对象 1. Servlet 开发入门 - hello world 2. Servlet 的调用过程和生 ...
- JaveWeb学习之Servlet(二):ServletConfig和ServletContext
原文同步发表至个人博客[夜月归途] 原文链接:http://www.guitu18.com/se/java/2018-07-26/20.html 作者:夜月归途 出处:http://www.guitu ...
- ServletConfig、ServletContext 的应用
一.ServletConfig对象及其应用(用的不多) 1. Context和ContextPath:一个web工程,若名为JavaWeb,访问的路径为:http://localhost:8080/J ...
- JavaWeb学习笔记:ServletConfig()和ServletContext()
ServletConfig()和ServletContext() 1.ServletConfig() ServletConfig是一个接口,它由server提供商来实现. ServletConfig封 ...
- ServletConfig和ServletContext 区别
ServletConfig和ServletContext 1.ServletContext在整个web应用程序生命周期内存在,用来保存全局对象,整个web应用都可以使用其获取context参数.当 ...
- 谈谈 ServletConfig 和 ServletContext
目录 一.ServletConfig 和 ServletContext 的概念 二.ServletConfig 和 SerlvetContext 代码表示 一.ServletConfig 和 Serv ...
- Servlet技术之——概述、实现、细节、获取资源、ServletConfig、ServletContext
Servlet概述.实现.细节.获取资源.ServletConfig.ServletContext (一) Setvlet基本概述 (1) 什么是Servlet ? Servlet(Server Ap ...
随机推荐
- chrome浏览器截图
1.F12 打开开发者工具台 2.ctrl + shift + p,弹出搜索框之后输入: full 3.选中Mobile-- Capture fullsize screenshot ,成功保存图片.
- Solon详解(六)- 定制业务级别的验证注解
在业务的实现过程中,尤其是对外接口开发,我们需要对请求进行大量的验证并返回错误状态码和描述.lombok 框架有很多很赞的注解,但是人家是throw一个异常,这与有些需求不一定能匹配. 该文将基于So ...
- VMD的相关命令(转载)
转载自:http://blog.sina.com.cn/s/blog_b48a7ac30102w6xg.html 自我学习总结: 1.打开VMD main上Extensions中的TkConsole这 ...
- Spring是如何解决循环依赖的
前言 在面试的时候这两年有一个非常高频的关于spring的问题,那就是spring是如何解决循环依赖的.这个问题听着就是轻描淡写的一句话,其实考察的内容还是非常多的,主要还是考察的应聘者有没有研究过s ...
- Lombok 作者因兼容问题讨伐 IntelliJ IDEA(官方已妥协)
今天(08/26),你看到本文应该是昨天了. 栈长上班打开电脑,按往常一样打开 IntelliJ IDEA 正准备撸码,突然收到 IDEA 2020.2.1 的更新提醒: 我现在用的还是 2020.1 ...
- javascript正则用法
一.元字符 . 匹配除了换行符以外的字符. \w 匹配字母或者数字或者下划线 \W 匹配不是字母.数字.下划线 \d 匹配数字,相当于[0-9] \D 匹配不是数字的字符 \s ...
- Python画图库Turtle库详解篇
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...
- RabbitMQ高级之消息限流与延时队列
人生终将是场单人旅途,孤独之前是迷茫,孤独过后是成长. 楔子 本篇是消息队列RabbitMQ的第五弹. 上篇本来打算讲述RabbitMQ的一些高级用法: 如何保证消息的可靠性? 消息队列如何进行限流? ...
- Java Android程序员软件开发知识:枚举的介绍,以及代码的编写教程。
Java枚举 Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值.使用枚举可以减少代码中的bug. 例如,我们为果汁店设计一个程序,它将限制果汁为小杯.中杯.大杯.这就意味着它不允许顾客点除 ...
- Mac OSX上安装Nginx
1. 通过brew instal nginx安装 ==> Downloading https://homebrew.bintray.com/bottles/nginx-1.10.1.el_cap ...