• 重温Servlet学习笔记--servletContext对象


      一个项目中只有一个ServletContext对象,我们可以在多个servlet中获取这个唯一的对象,使用它可以给多个servlet传递数据,我们通常成servletContext为上下文对象.这个对象在tomcat启动时就创建,在tomcat关闭时才被销毁.有时候我们也把这个对象叫做application.

      ServletContext对象的作用就是在整个web应用的动态资源之间共享数据,比如在AServlet中向ServletContext中保存一个数据,然后在Bservelt中获取这个数据,这就是共享数据了.

    • 获取ServletContext对象

    在servlet中获取:

    @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            //通过servletconfig获取servletContext
            ServletContext servletContext1 = this.getServletConfig().getServletContext();
            //直接通过当前对象获取servletContext对象,这与上面是同一个对象
            ServletContext servletContext2 = this.getServletContext();
            
        }
    • 作为javaWeb四大域对象之一:具有存取数据的功能
    1.   servletContext.setAttribute("name","zhangSan"):    保存一个域属性
    2. String name=(String)servletContext.getAttribute("name"): 获取域属性,返回值默认为Object类型,需要强转
    • 获取应用程序初始化参数(即获取在web.xml中配置的初始化数据)

        servlet也可以获取初始化参数,但它是局部的参数;也就是说,一个Servlet只能获取自己的初始化参数,不能获取别人的,即初始化参数只为一个Servlet准备!

    例如Aservlet只能获取Aservlet配置下的初始化参数:

    <servlet>
        <servlet-name>AServlet</servlet-name>
        <servlet-class>com.wang.servlet.AServlet</servlet-class>
        <init-param>
            <param-name>name</param-name>
            <param-value>张三</param-value>
        </init-param>
     </servlet>

    而servletContext可以配置公共的初始化参数:

    <context-param>
         <param-name>name</param-name>
         <param-value>李四</param-value>
     </context-param>

    在doPost方法中获取代码为:

    @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            ServletContext servletContext2 = this.getServletContext();
            String name = servletContext1.getInitParameter("name");
        }
    • 获取资源路径

     

    1.  获取a.txt的真实路径:String realPath = servletContext.getRealPath(“/a.txt”),realPath的值为a.txt文件的绝对路径:F: omcat6webappshelloa.txt;
    2.   获取b.txt的真实路径:String realPath = servletContext.getRealPath(“/WEB-INF/b.txt”);
    •  获取资源流

      不只可以获取资源的路径,还可以通过ServletContext获取资源流,即把资源以输入流的方式获取:

    1.  获取a.txt资源流:InputStream in = servletContext.getResourceAsStream(“/a.txt”);
    2.  获取b.txt资源流:InputStream in = servletContext.getResourceAsStream(“/WEB-INF/b.txt”);
  • 相关阅读:
    帧同步与状态同步
    撸个服务端出来系列(五)
    撸个服务端出来系列(四)
    撸个服务端出来系列(三)
    撸个服务端出来系列(二)
    新博客手机适配的问题
    撸个服务端出来系列(一)
    高性能事件分发器,lua 版
    cocos2dx lua UI栈
    cocos2dx3.x+cocostudio多屏幕分辨率适配解决方案(干货)
  • 原文地址:https://www.cnblogs.com/fingerboy/p/5175412.html
Copyright © 2020-2023  润新知