这两天刚刚回顾了一下servlet中的配置对象ServletConfig、上下文对象ServletContext、多线程相关的知识点,做了一下笔记,如下:

一、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()方法同步。

出处:http://blog.csdn.net/cl05300629/article/details/9362601 作者:伫望碧落

Servlet容器模型(四)ServletConfig、ServletContext的更多相关文章

  1. java web分享ppt大纲 -- servlet容器简介

    今天在公司分享了java web的ppt,把ppt大纲放在这里,希望可以帮助需要的人 servlet容器简介 定义 狭义上的,servlet容器为java Web应用提供运行时环境,负责管理servl ...

  2. Servlet学习(二):ServletConfig获取参数;ServletContext应用:请求转发,参数获取,资源读取;类装载器读取文件

    转载:http://www.cnblogs.com/xdp-gacl/p/3763559.html 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件 ...

  3. JavaWeb -- 服务器传递给Servlet的对象 -- ServletConfig, ServletContext,Request, Response

    1.  ServletConfig  有一些东西不合适在程序中写死,应该写在web.xml中,比如 文字怎么显示, 访问数据库名 和 密码, servlet要读取的配置文件 等等.. l在Servle ...

  4. 一、HttpServletRequest接口 二、HttpServletReponse接口 三、POST和GET请求方式及其乱码处理 四、ServletContext对象和ServletConfig对象

    一.HttpServletRequest接口 内部封装了客户端请求的数据信息 接收客户端的请求参数.HTTP请求数据包中配置参数 ###<1>常用方法 getContextPath()重要 ...

  5. Servlet开发(三)之ServletConfig,ServletContext

    1. ServletConfig Servlet是开发动态web的技术,而web.xml是Tomcat工程中最基础也最重要的配置文件,Tomcat启动项目的时候会加载并读取这个文件,其中web.xml ...

  6. Server,Servlet,ServletConfig,ServletContext,Session,Request,Response

    Server流程 解析URL->找到应用->找到Servlet->实例化Servlet->调用init->调用service->返回响应->调用destroy ...

  7. Servlet容器的启动(Tomcat为例)

    一.容器简介 在tomcat容器等级中,context容器直接管理servlet在容器中的包装类Wrapper,所以Context容器如何运行将直接影响servlet的工作方式. tomcat容器模型 ...

  8. servlet学习笔记四

    Servlet 主要内容: 1)servlet初始化参数与上下文参数 2)过滤器 3)监听器一.servlet初始化参数与上下文参数 1)servlet初始化参数 把某些变量放在web.xml配置,到 ...

  9. JavaWeb开发之详解Servlet及Servlet容器

    自JavaEE诞生伊始,Servlet容器和Servlet技术,就构成了JavaEE应用的核心,配合其它组件,它们完善了Java企业级开发的全套解决方案.小到一个静态博客网站,大到分布式的集群应用,都 ...

随机推荐

  1. 解决Win7下一个VC++6.0您不能直接打开多个project问题

    于Win7操作系统,只需双击打开多个VC ++6.0的project当文件,前方和后方的工作区将关闭工作区,这项.VC++6.0仅仅通过文件-->开放式工作区-->找到磁盘project档 ...

  2. mvc中动态给一个Model类的属性设置验证

    原文:mvc中动态给一个Model类的属性设置验证 在mvc中有自带的验证机制,比如如果某个字段的类型是数字或者日期,那么用户在输入汉字或者英文字符时,那么编译器会自动验证并提示用户格式不正确,不过这 ...

  3. - C#编程大幅提高OUTLOOK的邮件搜索能力!

    原文:[原创] - C#编程大幅提高OUTLOOK的邮件搜索能力! 使用OUTLOOK, 你有没有遇到过上图的问题? 多达18419封邮件! 太多了, 每次想找一个邮件都非常耗时, 想办法解决这个问题 ...

  4. ORACLE经常使用的命令

    一个.ORACLE启动和关机 1.在独立环境中 要启用或禁用ORACLE该系统必须切换到ORACLE用户,例如以下 su-oracle a.启动ORACLE系统 oracle>svrmgrl S ...

  5. C# 我的注册表操作类

    using System; using System.Collections.Generic; using System.Text; using Microsoft.Win32; using Syst ...

  6. JS获取字符串实际长度

    JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: function strLength(str) { var realLength = 0 ...

  7. Web前端框架与类库

    Web前端框架与类库的思考 说起前端框架,我也是醉了.现在去面试或者和同行聊天,动不动就这个框架碉堡了,那个框架好犀利. 当然不是贬低框架,只是有一种杀鸡焉用牛刀的感觉.网站技术是为业务而存在的,除此 ...

  8. C#编程实践—EventBroker简单实现

    前言 话说EventBroker这玩意已经不是什么新鲜货了,记得第一次接触这玩意是在进第二家公司的时候,公司产品基础架构层中集成了分布式消息中间件,在.net基础服务层中使用EventBroker的模 ...

  9. oracle实现自加力id

    --oracle实现自加力id --创建一个T_StudentInfo表 create table T_StudentInfo ( "id" integer not null pr ...

  10. Windows Server 服务器安全配置

    Windows Server 服务器安全配置 好吧,我标题党了.我只了解一些基本的安全配置.如果你是大湿,请绕道或者给予我严厉的批评让我进步谢谢. 编辑这篇文章用的编辑器编辑的,当我单击查看的时候发现 ...