一】重点方法:
        1》存取对象
                        void setAttribute(String name, Object object);//将object存入ServletContext对象中,并取名为name(方便取出,与Map类似)
                        Object getAttribute(String name);//获取name对应的对象
        2》解析web.xml中<context-param>标签
                        String getInitParameter(String name);//获取name标签对应的标签值
                        Enumeration getInitParameterNames();//获取所有的标签名,可以用于遍历标签值
        3》请求转发器(用于转发网页)
                        RequestDispatcher getRequestDispatcher(String path);//获取指向特定资源的一个转发器
                        void forward(ServletRequest request, ServletResponse response);//调用转发器指向的资源,并进行转发
                
    二】总结:
            1)在web应用中,由服务器创建的唯一的一个对象是ServletContext
            2)ServletContext对象在每个Servlet对象中取得的都是相同的
            3)ServletContext对象有存取方法:
                        void setAttribute(String name, Object object);//将object存入ServletContext对象中,并取名为name(方便取出,与Map类似)
                        Object getAttribute(String name);//获取name对应的对象

二、ServletContext对象有如下应用:
        一】多个Servlet对象可以通过ServletContext对象共享数据
            1》第一个Servlet对象:设置值
                    //取得客户端的请求参数
                    String username = request.getParameter("username");
                    //取得这个工程的唯一一个ServletContext对象
                    ServletContext sc = this.getServletContext();
                    //将信息存入ServletContext对象
                    sc.setAttribute("USERNAME", username);
            2》第二个Servlet对象:取出值
                    //取得唯一一个ServletContext对象
                    ServletContext context = this.getServletContext();
                    //获取ServletContext对象内容
                    String username = (String) context.getAttribute("USERNAME");
                    response.getOutputStream().write(("用户名="+username).getBytes());
                    
                    
        二】在web引用中,可以取得web应用的初始化参数
                    
                1》web.xml部分
                            <context-param>
                                <param-name>邮箱</param-name>
                                <param-value>434507250</param-value>
                            </context-param>
                            <context-param>
                                <param-name>电话号码</param-name>
                                <param-value>18381330428</param-value>
                            </context-param>
                2》Servlet对象部分
                    ServletContext context = this.getServletContext();
                    String email = context.getInitParameter("邮箱");
                    String tel = context.getInitParameter("电话号码");
                    
                    if(email!=null && tel!=null ){
                        response.setContentType("text/html;charset=utf-8");
                        response.getWriter().write("邮箱:"  +email + "<br />");
                        response.getWriter().write("电话号码" + tel + "<br />");
                    }
                
        
        三】ServletContext能够实现转发功能,即307+location。
                步骤:
                    1》获取一个ServletContext对象
                    2》获取一个定位到指定资源的转发器
                    3》利用转发器进行调度,并进行转发
        
                code:
                    // 1,获取指向fail.html的定位器
                        RequestDispatcher rd = context.getRequestDispatcher("/success.html");
                    // 2,利用此定位器进行转发
                        rd.forward(request, response);
        四】利用ServletContext对象读取资源文件--默认目录为:工程(应用)路径
                重点方法:
                        InputStream getResourceAsStream("文件路径");
                code:
                    ServletContext context = this.getServletContext();
                    InputStream is = context.getResourceAsStream("/doc/config.properties");// /代表的当前应用(工程)
                    Properties props = new Properties();
                    props.load(is);
                    System.out.println(props.getProperty("email"));
                    
                注意:
                        1》用传统方式读取文件的时候,是以相对于tomcat\bin的目录下访问的
                        2》如果以ServletContext方式读取资源文件(text/xml/properties),是相对于web服务器的当前web应用(工程)目录而言的
                                此时/:表示当前web应用(工程),即:day06
        五】通过类加载器加载文件:默认目录为WEB-INF/classes/
                注意:
                    1》类加载器只能加载IDE工具下src目录下的资源文件,其它目录无法加载。            
                    2》默认的路径为WEB-INF/classes/目录,即:此时/表示:/WEB-INF/classess/目录
                重点方法:
                    1》获得类加载器(    Class对象的方法)
                        ClassLoader getClassLoader();
                    2》获取资源输入流
                        ClassLoader getResourceAsStream(String name);
                步骤:
                    1》取得当前对象的字节码对象
                        Class clazz = this.getClass();
                    2》取得当前对象的类加载器
                        ClassLoader cl = clazz.getClassLoader();
                    3》通过类加载器加载资源
                        InputStream is = cl.getResourceAsStream("资源路径");
                code:
                        //1,获取当前对象的字节码对象
                        Class clazz = this.getClass();
                        //2,返回当前对象的类加载器
                        ClassLoader cl = clazz.getClassLoader();
                        //3,根据类加载器获取输入流
                        InputStream is = cl.getResourceAsStream("/cn/itcast/web/Servlet/config.properties");

六】将资源文件在工程中的路径转换成真实路径
            使用ServletContext()对象的String getRealPath("工程路径");方法;
            code:
                String path = this.getServletContext().getRealPath("/doc/abc.txt");
                File file = new File(path);

ServletContext对象(每个工程只有一个此对象)的更多相关文章

  1. DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢,而是说操作了这个对象后,会触发一些浏览器行为(转)

    一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大家都会这样说,在网上学习了一些资料,这边整理出来. 首先,DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢 ...

  2. Object.create() 的含义:从一个实例对象,生成另一个实例对象

    出处:https://wangdoc.com/javascript/oop/object.html#objectcreate 生成实例对象的常用方法是,使用new命令让构造函数返回一个实例.但是很多时 ...

  3. 返回一个集合对象,同时这个集合的对象的属性又是一个集合对象的处理方法(ViewModel)

    如果遇到需要返回一个集合对象,其中该集合中的属性又是一个集合.第一种:可在考虑用外键关联,比如在控制器中可以采用预先加载的方式加载关联的数据,比如 RoleManager.Roles.Include& ...

  4. Object.create 以原对象为原型创建一个新对象

    Object.create = function(o){ var Fun = function(){}; Fun.prototype = o; return new Fun(); } var peo ...

  5. java.lang.instrument: 一个Java对象占用多少字节?

    一.对象头包括两部分信息:Mark Word(标记字段)和 Klass Pointer(类型指针)   1. Mark Word 用于存储对象自身的运行时数据,如哈希码(HashCode).GC分代年 ...

  6. 如何复制一个java对象(浅克隆与深度克隆)

    在项目中,有时候有一些比较重要的对象经常被当作参数传来传去,和C语言的值传递不同,java语言的传递都是引用传递,在任何一个地方修改了这个对象的值,就会导致这个对象在内存中的值被彻底改变.但是很多时候 ...

  7. 条款21: 必须返回对象时,不要强行返回对象的reference

    总结: 绝不要返回一个local栈对象的指针或引用:绝不要返回一个被分配的堆对象的引用:绝不要返回一个静态局部对象(为了它,有可能同时需要多个这样的对象的指针或引用). 条款4中给出了“在单线程环境中 ...

  8. 1.面向过程编程 2.面向对象编程 3.类和对象 4.python 创建类和对象 如何使用对象 5.属性的查找顺序 6.初始化函数 7.绑定方法 与非绑定方法

    1.面向过程编程 面向过程:一种编程思想在编写代码时 要时刻想着过程这个两个字过程指的是什么? 解决问题的步骤 流程,即第一步干什么 第二步干什么,其目的是将一个复杂的问题,拆分为若干的小的问题,按照 ...

  9. WPF Image控件的Source属性是一个ImageSource对象

    1.固定的图片路径是可以的,如下: <Image Source="../test.png" /> 2.绑定的Path是一个String类型的图片路径,而实际情况它需要的 ...

随机推荐

  1. Android 添加子视图(addView和setView)

    我们在添加视图文件的时候有两种方式,一种是通过在xml文件定义layout,另一种方式是在java代码中动态生成布局文件. 在xml中定义的layout要想转化为view,需要使用到LayoutInf ...

  2. 【转】BT5无法找到软件安装包(提供可用的BT更新源)

    像我这种一般想起才玩玩BT5的人,跟不上讯息的变化. 偶尔想尝试某个实验,然后去安装,发现提示无法找到软件安装包. 这个时候,应该注意到,现在已经从BT5到kali了,假如想我这种人,肯定比较少留意软 ...

  3. HDU_1238——最大子串搜索

    Problem Description You are given a number of case-sensitive strings of alphabetic characters, find ...

  4. 百度系统部 在 北京市海淀区西二旗首创空间大厦 招聘 Python-交付运维系统研发工程师 - 内推网(neitui.Me)

    百度系统部 在 北京市海淀区西二旗首创空间大厦 招聘 Python-交付运维系统研发工程师 - 内推网(neitui.Me) 汪肴肴 (wa**@baidu.com) 发布了 Python-交付运维系 ...

  5. 你应该了解的 7个Linux ls 命令技巧

    在前面我们系列报道的两篇文章中,我们已经涵盖了关于‘ls’命令的绝大多数内容.本文时‘ls命令’系列的最后一部分.如果你还没有读过该系列的其它两篇文章,你可以访问下面的链接. 15 个‘ls’命令的面 ...

  6. D - Network - poj3694(LCA求桥)

    题意:有一个网络有一些边相互连接,现在有Q次操作,求每次操作后的桥的个数 分析:开始竟然不知道还有LCA这么个东西....... *********************************** ...

  7. erlang mnesia 数据库查询

    Mnesia是一个分布式数据库管理系统,适合于电信和其它需要持续运行和具备软实时特性的Erlang应用,越来越受关注和使用,但是目前Mnesia资料却不多,很多都只有官方的用户指南.下面的内容将着重说 ...

  8. 有关autoresizingMask属性遇到的一个小问题

    前言:在讲述这个小问题之前,我们有必要先了解一下UIViewAutoresizing的有关属性概念和使用详解. 参考:自动布局之autoresizingMask使用详解(Storyboard& ...

  9. IntelliJ IDEA创建web项目及异常问题解决

    IDEA配置Tomcat: 1.下载Tomcat,本次使用的是apache-tomcat-6.0.43 2.IDEA配置Tomcat 在idea中的Settings(Ctrl+Alt+s)(或者点击图 ...

  10. json对象转字符串与json字符串转对象

    1.概述: 我们在编程时进场会遇到json对象转字符串,或者字符串转对象的情况. 2.解决办法: json.parse()方法是将json字符串转成json对象. json.stringfy()方法是 ...