• 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
    
    --------------- 我每一次回头,都感觉自己不够努力,所以我不再回头。 ---------------
  • 相关阅读:
    hive mind ioc retired already
    存储系统介绍
    最后找到有源码的ORM
    DEDE在图集列表中调出图集的所有图片[首页也适用]
    客户端接收发邮件时,出现“无法连接到服务器
    4种常用扒站工具(webzip、ha_TeleportPro、Offline Explorer、wget)
    CSS3 backgroundsize图片自适应
    webzip怎么用 如何用webzip下载整个网站?
    ArrayList Vector LinkedList 区别与用法
    wish list: 考虑使用nutch给自己的博客做一个全文检索
  • 原文地址:https://www.cnblogs.com/zjw-blog/p/13896441.html
Copyright © 2020-2023  润新知