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

servlet的配置和上下文的更多相关文章

  1. spring容器和上下文的理解

    spring容器和上下文的理解 spring框架现在使用的很多,这说明有其独特之处----依赖注入,很简单的四个字,在我们需要对象的时候,spring就可以给我们提供所需要的对象,对象的创建.销毁.管 ...

  2. NLog路由规则和上下文信息

    NLog配置路由规则和上下文信息 rules: 规则节点 logger:一个路由规则 <rules> <!--<logger name="*" writeT ...

  3. Django 学习第十一天——中间键和上下文处理器

    一.中间键的引入: Django中间件(Middleware)是一个轻量级.底层的"插件"系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出. djang ...

  4. 理解JavaScript中的作用域和上下文

    JavaScript对于作用域(Scope)和上下文(Context)的实现是这门语言的一个非常独到的地方,部分归功于其独特的灵活性. 函数可以接收不同的的上下文和作用域.这些概念为JavaScrip ...

  5. Servlet开发技术,创建,以及Servlet的配置,web.xml的配置

    直接上图,不废话!!! 第一:首先在Eclipse的包资源管理器中,单机鼠标右键,在弹出的快捷键菜单中选择“新建”/Servlet命令,在弹出的对话框中输入新建的Servlet所在的包和类名,然后单击 ...

  6. Servlet的配置

    让 Servlet 能响应用户请求,必须将 Servlet 配置在 Web 应用中. Servlet 3.0 中有两中配置方式:        1. 在 Servlet 类中使用 @WebServle ...

  7. paip.spring3 mvc servlet的配置以及使用最佳实践

    paip.spring3 mvc servlet的配置以及使用最佳实践 1. Web.xml 1 2. springMVC.xml 2 1. mvcAction .mvcAction 2 2. Res ...

  8. JavaWeb核心编程之(三.3)Servlet Init 配置

    Servlet初始化 可以传入一些参数 通过 <init-param>来配置 新建 servletinit项目 新建包 com.xiaoan.test->new Class(Test ...

  9. servlet笔记,配置与 http相关

    tomcat配置环境变量:        JAVA_HOME= 指向你的jdk的主目录(bin目录的上一层) server.xml: <Context path="/myweb2&qu ...

随机推荐

  1. Objective-C协议与非正式协议

    http://blog.csdn.net/siemenliu/article/details/7836499

  2. C语言中的++和--

    这个问题是老生常谈的问题了,虽然诸多大牛都深恶痛绝的告诉所有人不要那样写,但这永远挡不住学校的老师和考试. 今天我们来辨析一下这个东西. 首先我们来名词辨析一下吧: ++i 这个叫   前自增 i++ ...

  3. 关于Android6.0之后的权限问题

    https://github.com/mylhyl/AndroidAcp AndroidAcp 使用: 加入 compile 'com.mylhyl:acp:1.1.7' PermisionUtils ...

  4. VC++ 使用WebBrowser控件中html文件以资源形式加载

    . . . . //加载资源文件中的HTML,IDR_HTML1就是HTML文件在资源文件中的ID wchar_t self_path[MAX_PATH] = { }; GetModuleFileNa ...

  5. Quick Trick About Using Dbms_Metadata With Forms_DDL In Oracle Forms

    Example is given below to fetch any Oracle objects DDL script using DBMS_Metadata.Get_DDL command in ...

  6. ubuntu1604安装体验

    昨天安装了ubuntu 16 安装成了双系统,这样的速度才能接受. 各种软件支持的都还算不错.除了启动时候原始的气息,启动之后挺稳定的. 最让人开心的是新的unity的设置更加丰富了,可以自动隐藏,更 ...

  7. 一个异常与Android Studio系列教程参考

    由于编译过程中遇到了错误:

  8. Android中四种OnClick事件的写法

    package com.example.dailphone; import android.support.v7.app.ActionBarActivity; import android.suppo ...

  9. BestRW团队项目创意以及NABCD

    一.写在前面 这次的团队项目我们队选到的是自由选题,与其说是选,不如说是分配.毕竟我们组游戏排名倒数第二···其实当我第一次听说我们队排倒数第二的时候我是有点不爽的,毕竟在这后面能够抽到的题目都是剩下 ...

  10. eclipse 技巧

    1. eclipse中xml中提示需有xsd文档 如在线eclipse将自动网络获取.xsd 否则 手动本地添加(在xml catalog参数设置选项) 2.当明确实现功能时,可将已有方法抽取成接口, ...