Java Web中的ServletContext对象

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

目录

 ServletContext对象

 获取上下文初始化参数的相关方法

 创建ServletContext对象

 1)通过 GenericServlet 提供的 getServletContext() 方法

2)通过 ServletConfig 提供的 getServletContext() 方法

3)通过 HttpSession 提供的 getServletContext() 方法

4)通过 HttpServletRequest 提供的 getServletContext() 方法

上下文初始化参数

局部参数

 全局参数

 获取ServletContext的全局参数

ServletContext 属性与上下文初始化参数对比

实现数据通讯

 数据通讯的程序实例:

 在浏览器中的操作


 ServletContext对象

Web 应用中的所有 Servlet 共享同一个 ServletContext 对象,不同 Servlet 之间可以通过 ServletContext 对象实现数据通讯,因此 ServletContext 对象也被称为 Context 域对象。

域对象是服务器在内存上创建的存储空间,该空间用于不同动态资源(例如 Servlet、JSP)之间传递与共享数据。

 获取上下文初始化参数的相关方法

String getInitParameter(String name) 根据初始化参数名 name,返回对应的初始化参 数值。
Enumeration getInitParameterNames() 返回 Web 应用所有上下文初始化参数名的枚举 集合,如果没有上下文初始化参数,则返回一个空的枚举集合。

 创建ServletContext对象

 1)通过 GenericServlet 提供的 getServletContext() 方法

//通过 GenericServlet的getServletContext方法获取ServletContext对象
ServletContext servletContext = this.getServletContext();

2)通过 ServletConfig 提供的 getServletContext() 方法

//通过 ServletConfig的 getServletContext方法获取ServletContext对象
ServletContext servletContext = this.getServletConfig().getServletContext();
//通过 Config的 getServletContext方法获取ServletContext对象
ServletContext context = config.getServletContext();

3)通过 HttpSession 提供的 getServletContext() 方法

//通过 Session的 getServletContext方法获取ServletContext对象
ServletContext context = req.getSession().getServletContext();

4)通过 HttpServletRequest 提供的 getServletContext() 方法

//通过 HttpServletRequest的 getServletContext方法获取ServletContext对象
ServletContext servletContext = req.getServletContext();

上下文初始化参数

局部参数

    <servlet>
        <init-param>
            <param-name>name</param-name>
            <param-value>Lungcen</param-value>
        </init-param>
        <init-param>
            <param-name>password</param-name>
            <param-value>110120130</param-value>
        </init-param>
    </servlet>

 全局参数

    <context-param>
        <param-name>姓名</param-name>
        <param-value>Lungcen</param-value>
    </context-param>
    <context-param>
        <param-name>年龄</param-name>
        <param-value>19</param-value>
    </context-param>

 获取ServletContext的全局参数

Enumeration<String> names = this.context.getInitParameterNames();
        
        while (names.hasMoreElements())
        {
            String s = names.nextElement();
            writer.write(s + "->" + context.getInitParameter(s) + "<br/>");
        }

ServletContext 属性与上下文初始化参数对比

不 同 点 ServletContext 的属性 上下文初始化参数
创 建 方 式 ServletContext 的属性通过调用 ServletContext 接口的 setAttribute() 方法 创建 上下文初始化参数通过 web.xml 使用 元素配置
可 进 行 的 操 作 ServletContext 的属性可以通过 ServletContext 接口的方法进行读取、新 增、修改、移除等操作 上下文初始化参数在容器启动后只能被 读取,不能进行新增、修改和移除操作
生 命 周 期 ServletContext 中属性的生命周期从创建开 始,到该属性被移除(remove)或者容器关 闭结束 上下文初始化参数的生命周期,从容器 启动开始,到 Web 应用被卸载或容器 关闭结束
作 用 使用 ServletContext 中的属性可以实现 Servlet 之间的数据通讯 使用上下文初始化参数无法实现数据通讯

实现数据通讯

在 Servlet 中,调用 ServletContext 接口的 setAttribute() 方法可以创建一些属性,这些属性被存 放在 ServletContext 对象中。应用中所有 Servlet 都可以对这些属性进行访问和操作,通过它们可以实现应用内不同 Servlet 之间的数据通讯。

void setAttribute(String name, Object object) 把一个 Java 对象与一个属性名绑定,并将它作为一个属 性存放到 ServletContext 中。 参数 name 为属性名,参数 object 为属性值。
void removeAttribute(String name) 从 ServletContext 中移除属性名为 name 的属性。
Object getAttribute(String name) 根据指定的属性名 name,返回 ServletContext 中对应 的属性值。

 数据通讯的程序实例:

package com.zpark.servlet;

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;
import java.io.PrintWriter;

@WebServlet(urlPatterns = "/LLL.do")
public class MyServlet04 extends HttpServlet {

    @Override
    public void init() throws ServletException {
        getServletContext().setAttribute("count", 0);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        Integer count = (Integer) getServletContext().getAttribute("count");
        count++;
        getServletContext().setAttribute("count", count);

        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.write("欢迎来到界面" + count);
        writer.close();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        doGet(req, resp);
    }
}
package com.zpark.servlet;

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;
import java.io.PrintWriter;

@WebServlet("/Lun5.do")
public class MyServlet05 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        Integer count = (Integer) getServletContext().getAttribute("count");
        writer.write("今天是一个好日子" + count);
        writer.close();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException {
        resp.setCharacterEncoding("utf-8");
        doGet(req, resp);
    }
}

 在浏览器中的操作

Java Web中的ServletContext对象

Java Web中的ServletContext对象文章来源地址https://www.toymoban.com/news/detail-408036.html

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

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

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

相关文章

  • Servlet p7 ServletContext对象

    每一个 web 应用都有且仅有一个 ServletContext 对象 ,又称为 Application 对象,从名称中可知,该对象是与应用程序相关的。在WEB 容器启动时,会为每一个 WEB 应用创建一个对应的 ServletContex对象。 该对象有两大作用: 作为域对象来共享数据,此时数据在整个应用程序中共享;

    2024年02月12日
    浏览(28)
  • 049-WEB攻防-文件上传&存储安全&OSS对象&分站&解析安全&解码还原&目录执行

    1、文件上传-安全解析方案-目录权限解码还原 2、文件上传-安全存储方案-分站存储OSS对象 演示案例: ➢文件-解析方案-执行权限解码还原 ➢文件-存储方案-分站存储OSS对象 ➢实例-解析存储-传输分站OSS存储 将源码复制到对应目录下,并创建image.wusuowei.com文件夹,存储源码

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

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

    2024年02月13日
    浏览(28)
  • 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 web应用的目录结构

    详情可以参考: https://tomcat.apache.org/tomcat-10.1-doc/appdev/deployment.html https://jakarta.ee/specifications/servlet/6.0/jakarta-servlet-spec-6.0.html#directory-structure Java web应用根目录下包含如下内容: *.html, *.jsp等:html、jsp文件及其它必须对客户端浏览器可见的文件(如JavaScript、样式文件、图片文件

    2024年02月05日
    浏览(28)
  • 【终极解决方案】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中的类和对象

    在学习java语言的时候,经常听说java是一门 面向对象 的语言;在java里面也有 一切皆对象 这样的说法。那么到底什么是类,什么又是对象呢? 以洗衣服为例,给大家介绍面向对象和面向过程 1.1.1面向过程 我们传统的洗衣服得经历一下步骤: 注重的是洗衣服的过程 1.1.2面向对

    2024年04月28日
    浏览(29)
  • Java中的类与对象

    类: 是共同特征的描述(设计图) 对象: 是真实存在的具体实例 Javabean类: 用来描述一类事物的类,在Javabean类里是不写main方法的 注意: 类名首字母要大写,见名知意,(驼峰模式) 注意: 在实际开发中,建议一个文件定义一个class类 代码: 是面向对象三大特征 (封装 继承 多态) 对象代表

    2024年03月23日
    浏览(33)
  • 【Java编程教程】详解Java 中的对象和类

    在本页中,我们将了解 Java 对象和类。在面向对象的编程技术中,我们使用对象和类来设计程序。 Java中的对象既是物理实体又是逻辑实体,而Java中的类只是逻辑实体。 具有状态和行为的实体称为对象,例如椅子、自行车、记号笔、笔、桌子、汽车等。它可以是物理的或逻辑

    2024年02月16日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包