zoukankan      html  css  js  c++  java
  • servlet ServletContext

    ServletContext概述

    • 全局对象,也拥有作用域,对应一个Tomcat中的Web应用

    • 当Web服务器启动时,会为每一个Web应用程序创建一块共享的存储区域(ServletContext)。

    • ServletContext在Web服务器启动时创建,服务器关闭时销毁。

    获取ServletContext对象

    GenericServlet提供了getservletContext()方法。(推荐)this.getservletContext();

    HttpServletRequest提供了getServletContext()方法。(推荐)

    HttpSession提供了getServletContext()方法。

    ServletContext作用

    获取项目真实路径

    获取当前项目在服务器发布的真实路径

    String realpath=servletContext.getRealPath("/");
    

    获取项目上下文路径

    获取当前项目上下文路径(应用程序名称)

    System.out.println(servletContext.getContextPath());//上下文路径(应用程序名称)
    System.out.println(request.getContextPath());
    

    全局容器

    servletContext拥有作用域,可以存储数据到全局容器中

    //存储数据
    servletContext.setAttribute("name",value);
    //获取数据
    servletContext.getAttribute("name");
    //移除数据
    servletContext.removeAttribute("name");
    

    ServletContext特点

    • 唯一性:一个应用对应一个servlet上下文。

    • 生命周期:只要容器不关闭或者应用不卸载,servlet上下文就一直存在。

    ServletContext应用场景

    ServletContex统计当前项目访问次数

    使用

    package com.zjw;
    
    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;
    
    @WebServlet(name = "ServletContextServlet" , value = "/context")
    public class ServletContextServlet extends HttpServlet {
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //获取ServletContext对象
            ServletContext servletContext1 = this.getServletContext();
            ServletContext servletContext2 = request.getServletContext();
            ServletContext servletContext3 = request.getSession().getServletContext();
            //获取的是同一个对象
            System.out.println(servletContext1);
            System.out.println(servletContext2);
            System.out.println(servletContext3);
    
            //获取项目真实路径
            System.out.println(servletContext1.getRealPath("/"));
    
            //获取项目上下文路径
            System.out.println(servletContext1.getContextPath());
            System.out.println(request.getContextPath());
    
            //全局容器
            servletContext1.setAttribute("name","张三");
        }
    }
    
    

    运行结果

    org.apache.catalina.core.ApplicationContextFacade@9665db
    org.apache.catalina.core.ApplicationContextFacade@9665db
    org.apache.catalina.core.ApplicationContextFacade@9665db
    E:codeIdeaProjectsservletservlet	argetservlet-1.0-SNAPSHOT
    /servlet_war_exploded
    /servlet_war_exploded
    
    --------------- 我每一次回头,都感觉自己不够努力,所以我不再回头。 ---------------
  • 相关阅读:
    preprocessing
    hist
    RabbitMQ
    线程池
    springmvc功能以及源码实现分析
    西瓜书第二章--模型评估与选择
    西瓜书第一章--绪论
    基于python的递归简述
    python小白学习之旅5
    python小白学习之旅4
  • 原文地址:https://www.cnblogs.com/zjw-blog/p/13896441.html
Copyright © 2011-2022 走看看