Javaweb | ServletContext对象

这篇具有很好参考价值的文章主要介绍了Javaweb | ServletContext对象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Javaweb | ServletContext对象

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


ServletContext对象

概述

  • 全局对象,拥有作用域,对应Tomcat的Web应用
  • Web服务器启动时,会为每一个Web应用程序创建一块共享的存储区域(ServletContext)
  • ServletContext在Web服务器启动时创建,服务器关闭时销毁

获取ServletContext对象

  • GenericServlet提供 getServletContext(); 方法 this.getServletContext();
  • HttpServletRequest提供 getServletContext(); 方法
  • HttpSession提供 getServletContext(); 方法
//获取ServletContext对象
ServletContext servletContext = this.getServletContext();

//通过request对象,获取ServletContext对象
ServletContext servletContext1 = request.getServletContext();

//通过request获取session对象,获取ServletContext对象
HttpSession session = request.getSession();
ServletContext servletContext2 = session.getServletContext();

ServletContext 作用

  • 获取项目真实路径(获取当前项目在服务器发布的真实路径)
String realpath = servletContext.getRealPath("/")
        //获取ServletContext对象
        ServletContext servletContext = this.getServletContext();
        //获取项目真实路径
        System.out.println(servletContext.getRealPath("/"));

		/*
		输出结果
		D:\Eclipse\apache-tomcat-8.5.82-windows-x64\apache-tomcat-8.5.82\webapps\Servlet_Projects_war\
		*/
  • 获取项目上下文路径(获取当前项目上下文路径:应用程序名称)
System.out.println(servletContext.getContextPath());
System.out.println(request.getContextPath());
//获取ServletContext对象
ServletContext servletContext = this.getServletContext();
//获取项目上下文路径
System.out.println(servletContext.getContextPath());
System.out.println(request.getContextPath());
/*
输出结果:
/Servlet_Projects_war
/Servlet_Projects_war
*/
  • 全局容器

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

    • 存储数据: servletContext.setAttribute(“name”,“value”);
    • 获取数据: servletContext.getAttribute(“name”);
    • 移除数据: servletContext.removeAttribute(“name”);
  • ServletContextController类

@WebServlet(name = "ServletContextController", value = "/ctxController")
public class ServletContextController extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取ServletContext对象
        ServletContext servletContext = this.getServletContext();

        //获取项目真实路径
        System.out.println(servletContext.getRealPath("/"));

        //存储数据
        servletContext.setAttribute("context","info");
    }
}
  • ShowContextController类
@WebServlet(name = "ShowContextController", value = "/ShowController")
public class ShowContextController extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取ServletContext对象
        ServletContext servletContext = this.getServletContext();
        
        //获取数据
        String context = (String) servletContext.getAttribute("context");
        System.out.println(context);
        
         /*
        输出结果:
        D:\Eclipse\apache-tomcat-8.5.82-windows-x64\apache-tomcat-8.5.82\webapps\Servlet_Projects_war\
        info
        */
    }
}

ServletContext 特点

  • 唯一性:一个应用对应一个ServletContext
  • 生命周期:只要容器不关闭或者应用不卸载,ServletContext就一直存在

ServletContext 应用场景

  • CounterController类
@WebServlet(name = "CounterController", value = "/counterController")
public class CounterController extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取ServletContext对象
        ServletContext servletContext = request.getServletContext();

        //获取计数器
        Integer counter = (Integer) servletContext.getAttribute("counter");

        //计数器初始化
        if (counter == null) {
            counter = 1;
            //counter存入计数器
            servletContext.setAttribute("counter", counter);
        } else {
            counter++;
            servletContext.setAttribute("counter", counter);
        }
        
        System.out.println("counter:" + counter);

    }
}
  • ShowCounterController类
@WebServlet(name = "ShowCounterController", value = "/ShowCounterController")
public class ShowCounterController extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取ServletContext对象
        ServletContext servletContext = request.getServletContext();

        //获取计数器
        Integer counter = (Integer) servletContext.getAttribute("counter");
        
        //计数器初始化
        if (counter == null) {
            counter = 1;
            //counter存入计数器
            servletContext.setAttribute("counter", counter);
        } else {
            counter++;
            servletContext.setAttribute("counter", counter);
        }

        System.out.println("show:" + counter);
    }
}
  • 结果
counter:1
show:2
show:3
show:4
show:5
show:6
show:7

作用域总结

  • HttpServletRequest:一次请求,请求响应之前有效
  • HttpSession:一次会话开始,浏览器不关闭或不超时之前有效
  • ServletContext:服务器启动开始,服务器停止之前有效

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


Javaweb | ServletContext对象文章来源地址https://www.toymoban.com/news/detail-414000.html

到了这里,关于Javaweb | ServletContext对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaWeb(7)——前端综合案例1(面向对象)

    目录 一、实例需求 ❗ 二、 实现 🎯  三、代码优化 💂 + 💻 = 👴🏽 四、继续优化和总结 🌕👍 五、需要注意的 ❌ JS进阶-day3-184-综合案例-模态框构造函数写法             实现了注册、登录和删除按钮的事件监听器,并在点击按钮时弹出相应的模态框。对源代码

    2024年02月14日
    浏览(34)
  • java: 无法访问jakarta.servlet.ServletContext 找不到jakarta.servlet.ServletContext的类文件

    今天在学习springmvc的时候发现了一个关系冲突的问题,首先我不是大神,我只是一个初学者。 问题是由javax和jakerta引出来的。我的tomcat版本是9,jdk是17,spring是6.0.11,然后tomcat9使用的应该还是javax,但是在使用spring自己封装好的WebApplicaitonUtils的  getWebApplicationContext方法去优

    2024年02月04日
    浏览(39)
  • Java课题笔记~ ServletContext

    单个Servlet的配置对象  web.xml 获取单个Servlet的初始化参数

    2024年02月13日
    浏览(28)
  • HttpServletRequest、HttpServletResponse、ServletContext、ServletConfig详解

    HttpServletRequest 对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头信息等都属于客户端发来的信息,service()方法中形参接收的是 HttpServletRequest 接口的实例化对象,表示该对象主要应用在 HTTP 协议上,该对象是由 Tomcat 封装好传递过来。 Htt

    2024年01月21日
    浏览(34)
  • 【Java 进阶篇】Java ServletContext详解:在Web应用中获取全局信息

    在Java Web开发中, ServletContext 是一个重要的概念,它允许我们在整个Web应用程序中共享信息和资源。本篇博客将深入探讨 ServletContext 的作用、如何获取它,以及如何在Web应用中使用它。无论您是刚刚入门的小白还是有一定经验的开发者,都能从本文中获取有价值的信息。 S

    2024年02月06日
    浏览(40)
  • 【终极解决方案】Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]

    【❤️终极解决方案❤️】Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml] 如同上面说的,启动Tomcat之后,项目初始化找不到配置文件dispatcher-servlet.xml 。 1.1、配置文件命名问题 web.xml文件中配置的servlet名字和springmvc配置文件的名字不一样,修改成一样即可。 这里要

    2024年02月10日
    浏览(30)
  • Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)

    web 服务器 :可以被浏览器访问到的服务器 常见的 web 服务器: tomcat:中小型的服务器软件,免费开源,支持 JSP 和 Servlet apache 公司的产品 WebLogic:Oracle 公司的产品,是目前应用最广泛的 Web 服务器,支持 J2EE 规范。WebLogic 是用于开发、集成、部署和管理大型分布式 Web 应用

    2024年02月02日
    浏览(67)
  • JavaWeb期末大作业 Javaweb项目 Javaweb Servlet html

    1.进入之后是一个分页查询所有数据的内容  该页面有基础的增删改查  还有分页查询  批量删除  进行条件查询  有什么不对的地方欢迎提出  谢谢  2.增删改查 1.添加 添加成功 2.删除  将刚才添加的OPPO删除 3.修改     4.查询的话就是主页查询所有  页面所用的是分页查询

    2024年02月10日
    浏览(30)
  • JavaWeb——1.JavaWeb概述

    这是我们javaweb的第一篇文章,首先我们来介绍一下什么是Javaweb JavaWeb: 使用java语言完成服务器端程序开发 如下面这张图所示: 可能不太好理解,那么就用通俗的语言来解释一下。 任何的一个应用程序,首先它会有页面,这也就是前端的内容;然后你可以用这个应用程序来

    2024年02月03日
    浏览(28)
  • 【JavaWeb】Tomcat&JavaWeb&HTTP

    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发

    2024年02月05日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包