• ServletContext对象


    1.概念:代表整个web应用(整个web工程),可以和程序的容器(服务器,例如:Tomcat)通信

    2.获取

         1.通过request对象获取:request.getServletContext();

         2.通过HttpServlet获取:this.getServletContext();

    package cn.itcast.web.servletcontext;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * @author 旗木五五开
     * @create 2020-03-08 8:48
     */
    @WebServlet("/servletContextDemo1")
    public class ServletContextDemo1 extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //        servletContext获取
            ServletContext context1 = request.getServletContext();
            ServletContext context2 = this.getServletContext();
            System.out.println(context1==context2);//true
            System.out.println(context1);
            System.out.println(context2);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request,response);
        }
    }

    3.功能:

        1.获取MIE类型:在互联网通信过程中,定义的一种文件数据类型。(http协议也遵循这个类型的标准)

              格式:大类型/小类型  

                    例如:text/html:text表示纯文本,html表示内部是HTML形式的。html形式的纯文本

                           image/jpeg:图片/jpeg类型。jpeg类型的图片

              用途:http协议响应头里有Content-Type: text/html;charset=UTF-8  设置文件的MIE类型,服务器告诉浏览器,响应体的格式,浏览器用相应的解析引擎去解析

              获取:String getMimeType(String file);接收文件的名称(后缀名)返回一个string类型的值。

                  为什么能获取到,整个mime类型所有的对应关系都在服务器存储着,这个对象刚好可以服务器通信,所以可以获取到

    package cn.itcast.web.servletcontext;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * @author 旗木五五开
     * @create 2020-03-08 9:30
     */
    @WebServlet("/servletContextDemo2")
    public class ServletContextDemo2 extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //        1.通过 HttpServlet 获取
            ServletContext context = this.getServletContext();
    //        2.定义文件名称。以后是通过对应的文件动态的获取
            String filename="a.jpg";
    //        3.获取mime类型
            String mimeType = context.getMimeType(filename);
            System.out.println(mimeType);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request,response);
        }
    }

         2.域对象:共享数据

                1.设置数的名称和值:setAttribute(String name,Object value);

                2.通过名称获取对应的值:getAttribute(String name);

                3.通过名称删除对应的值:removeAttribute(String name);

              ServletContext对象范围:所有用户所有请求的数据 

              使用:要谨慎,所有用户都可以操作,不安全。而且对象的生命周期长,服务器启动就被创建了,服务器关了才能被销毁。对象驻留在内存能保持很久的时间。存储的数据多了会对内存产生压力

    package cn.itcast.web.servletcontext;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * @author 旗木五五开
     * @create 2020-03-08 9:45
     */
    @WebServlet("/servletContextDemo3")
    public class ServletContextDemo3 extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //        1.通过 HttpServlet 获取
            ServletContext context = this.getServletContext();
    //        2.设置数据
            context.setAttribute("msg","haha");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request,response);
        }
    }
    package cn.itcast.web.servletcontext;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * @author 旗木五五开
     * @create 2020-03-08 9:47
     */
    @WebServlet("/servletContextDemo4")
    public class ServletContextDemo4 extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //        1.通过 HttpServlet 获取
            ServletContext context = this.getServletContext();
    //        2.获取数据
            Object msg = context.getAttribute("msg");
            System.out.println(msg);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request,response);
        }
    }

     

         3.获取文件的真实(服务器)路径

            

            方法:String getRealPath(String path);   String path=/资源名.后缀

    package cn.itcast.web.servletcontext;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.File;
    import java.io.IOException;
    
    /**
     * @author 旗木五五开
     * @create 2020-03-09 0:58
     */
    @WebServlet("/servletContextDemo5")
    public class ServletContextDemo5 extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //        1.通过HttpServlet获取
            ServletContext context = this.getServletContext();
    //        2.获取文件的服务器路径
            String b = context.getRealPath("/b.txt");//web目录下资源访问
            System.out.println(b);
    
            String c = context.getRealPath("/WEB-INF/c.txt");//web-inf下的资源访问
            System.out.println(c);
    
            String a = context.getRealPath("/WEB-INF/classes/a.txt");//src目录下的资源访问
            System.out.println(a);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request,response);
        }
    }

     

    此目录就是:web目录下资源访问的路径。

    有了路径就可以找到文件对应的目录找到后,就可以通过流,加载它进内存。

    ClassLoader 类加载器:只能获取src下的目录不能获取web下的真实目录

    4.特点:

          1.有两种获取方式,获取的都是同一个对象。this.getServletContext();(用这个方便)

  • 相关阅读:
    Jzoj5542 董先生的钦点
    Jzoj5542 董先生的钦点
    (各种)FFT模板
    (各种)FFT模板
    Jzoj3528 图书馆
    Jzoj3528 图书馆
    Jzoj5317 Func
    Jzoj5317 Func
    Jzoj3591 数据
    【UVa11021】Tribles
  • 原文地址:https://www.cnblogs.com/rijiyuelei/p/12440943.html
Copyright © 2020-2023  润新知