javaweb入门(一)——servlet-03-servletContext对象

Javaweb中servlet对象的生命周期 Servlet对象什么时候被创建。Servlet对象什么时候被销毁。Servlet对象创建了几个?即一个Servlet对象从出生在最后的死亡,整个过程是怎样的。默认情况下服务器启动的时候创建的对象并没有被实例化。 阅读详情

一.Servlet类的学习

创建一个新的子项目,在子项目中新建一个"HelloServlet"类,并且配置对应的映射。
代码如下:
HelloServlt.java

package com.kuang.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class HelloServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.print("Hello");
        resp.getWriter().print("Hello,Servlet");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

web.xml

<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation ="http://xmlns.jcp.org/xml/ns/javaee
                        http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
</web-app>

项目结构如下:
在这里插入图片描述

对HelloServlet中继承方法解析

之后我们便可以在HelloServlet类中使用this.XXX来查看HelloServlet都继承了那些方法,以及这些方法的用处。
在这里插入图片描述
在这里插入图片描述
首先我们可以先确定do…()的方法,这些方法都是Servlet.service中根据请求方法来选择运行的方法,具体有以下几个:

// 这些都是service方法中根据req请求方法而选择运行的方法
        this.doPost();
        this.doGet();
        this.doDelete();
        this.doHead();
        this.doOptions();
        this.doPut();
        this.doTrace();

这些方法我们会在之后的学习中使用到。以后使用到时可以详细的学习。
之后我们可以来看看get开头的方法。这些方法我们可以根据名字轻松的看出来它们获取的信息。这些方法如下:

		this.getInitParameter();
        this.getLastModified();
        this.getServletConfig();
        this.getServletInfo();
        this.getServletName();
        this.getInitParameterNames();
        this.getServletContext();
        this.getClass();

this.getInitParameter() 方法

其中我们需要了解this.getInitParameter()方法。根据方法名我们不能看出它是获取servlet初始化参数的方法,那么servlet初始化参数是什么?它又是怎么设置的呢?
我们在web.xml中的<servlet>标签中,我们发现它有一个<init-paramter>,我们可以在这个标签中设置初始化参数的名称以及值。

  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
<!--    设置此servlet的初始化参数-->
    <init-param>
<!--      初始化参数名称-->
      <param-name>MyName</param-name>
<!--      初始化参数的值-->
      <param-value>BugMaker2000</param-value>
    </init-param>
  </servlet>

如上我们设置了一个名称是"MyName",值是"BugMaker2000"的初始化参数。
现在我们在HelloServlet中进行测试。
在HelloServlet中添加如下代码:

resp.getWriter().println("MyName : " + this.getInitParameter("MyName"));

之后我们访问’…/hello’,结果如下:
在这里插入图片描述
初始化参数被成功获取。

其余的方法有:

        this.clone();
        this.equals();
        this.hashCode();
        this.toString();
        this.destroy();
        this.init();
        this.log();
        ...

这些方法我们可以根据字面意思快速了解其含义,在此就不一一赘述。感兴趣的小伙伴可以自己去阅读源码。

ServletContext对象

在刚刚我们对this.XX方法的分析中,我们不难发现其中有一个this.getServletContext()的方法。
看到本章节的标题,想必大家也能猜到,这个ServletContext便是本章的主角。
那么我们不禁想问:什么是ServletContext?它有什么作用?

什么是ServletContext?

ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放。

推荐阅读本篇博客:ServletContext详解

我们可以做一个总结:ServletContext是一个可以被所有客户端访问、被所有servlet共享的一个公共空间。web容器启动时,会为每个web应用创建一个ServletContext。
重点是共享数据以及与web应用在web容器中存在时间相同。
每个web应用有且仅有一个ServletContext.

ServletContext的作用

由于ServletContext作为一个共享的空间,所以servlet之间可以通过ServletContext通讯。
使用ServletContext的案例有:公共聊天室。

ServletContext使用案例

在本案例中,我们会对ServletContext的共享数据功能做出一个基本的使用。
测试方法:

  1. 创建一个SetServletContext类,此类的作用是向ServletContext中放入一条数据。
  2. 创建一个GetServletContext类,此类的作用是向ServletContext中获取SerServlet放入的数据。
  3. 配置两个类的映射
  4. 启动服务器测试。

1.创建SetServletContext类。

package com.kuang.servlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class SetServletContext extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        向ServletContext中放入一条数据
        
        String message = "我的名字是BugMaker2000";
        ServletContext servletContext = this.getServletContext();
        servletContext.setAttribute("Message",message);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

2.创建GetServletContext类。

package com.kuang.servlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class GetServletContext extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        获取servletContext中的数据
        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");
//        这两句话可以用 resp.setContentType("text/html;charset=utf-8"); 代替
        ServletContext servletContext = this.getServletContext();
        PrintWriter writer = resp.getWriter();
        writer.print("信息 : " + servletContext.getAttribute("Message"));
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

3.设置两个Servlet的映射。

  <servlet>
    <servlet-name>setServletContext</servlet-name>
    <servlet-class>com.kuang.servlet.SetServletContext</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>setServletContext</servlet-name>
    <url-pattern>/setServletContext</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>getServletContext</servlet-name>
    <servlet-class>com.kuang.servlet.GetServletContext</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>getServletContext</servlet-name>
    <url-pattern>/getServletContext</url-pattern>
  </servlet-mapping>

4.测试结果:
我们先访问’/setServletContext’
在这里插入图片描述
此时ServletContext中已经被插入了我们设置好的数据。
之后我们再访问’/getServletContext’:
在这里插入图片描述
我们可以看到数据别成功获取并且输出。

小知识:
在GetServletContext中,我们添加了两行代码:

        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");

这两行的代码的作用是:设置响应输出的内容类型以及设置响应的编码格式。如果我们响应中输出的内容带有中文,那么resp.setCharacterEncoding("utf-8");此行代码必不可缺,否则页面输出的中文将会是乱码。resp.setContentType("text/html");这行代码的作用是设置响应输出的文本内容的类型,此处设置的参数为text/html是的页面响应输出的内容中可以带有HTML格式,并且可以被页面识别。
此外,这两行代码可以用一行代码代替:

resp.setContentType("text/html;charset=utf-8"); 

本章完结。

javaWEB总结(4): ServletContext对象 介绍 ServletContext对象的一些重要方法的示例代码 立即下载

相关推荐

VSLAM框架对比

格VSLAM特点介绍: (一)ORB-SLAM2 (二)ORB-SLAM3 (三)LSD-SLAM (四)

ljtx200888的博客 2293

Servlet之ServletContext创建对象和作用

1,创建ServletConfig对象 ServletConfig对象叫servlet上下文对象。 一个网站只会创建一个ServletContext对象。代表的是整个网站的环境信息。 获取ServletContext对象必须要先获取ServletConfig对象,由此对象才可以获取ServletContext对象。          伪代码:此伪代码能够说明为什么必须先获取Servlet

guyan1111的博客 8169

OpenCv案例(七): 基于OpenCvSharp计算图像的清晰度(自动对焦)

自动对焦,其实是对相机成像的清晰值得计算,若对焦不清晰,成像的清晰度低,视觉效果模糊。若是在工业检测行业,对焦不准确,可能会造成严重后果;对焦准确的图像,其清晰度高,对比度鲜明,层次明显。

qq_37835727的博客 7113

Java Web中的ServletContext对象

创建ServletContext对象、实现数据通讯、上下文初始化参数

qq_64552181的博客 2246

SAP采购订单中项目类别B(限制)的控制逻辑

在笔者所在企业中,框架类采购订单中项目类别需要选择B(限制)。今天笔者从比较全面的角度分析了一下这个项目类别B到底可以决定些什么?控制到什么?先从后台SPRO中打开相应的配置菜单。 打开项目类别B之后,可以看到一些配置信息,这里有一点与其它配置不同的地方,即无法新增项目,也无法修改现有项目。这个疑惑今后再去解决吧。当前只研究项目类别B的控制逻辑。 下面就参考上图中的配置分段来分析和测试其控制逻辑, 1、如项目类别配置图,所需材料值为不允许;经测试,如下图在采购订单创建时,不能输入物料编号条目。

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 6032

VM与欧姆龙PLC通讯设置实战:Fins TCP/UDP协议详解

本文详细解析了VM(VisionMaster)与欧姆龙PLC通过Fins TCP/UDP协议进行通讯的实战设置。内容涵盖网络配置、协议选择(TCP可靠性与UDP实时性)、VM端地址映射与数据点添加、以及数据接收解析流程,并提供了常见错误排查与高级调试技巧,帮助视觉与自动化工程师快速实现稳定可靠的工业通讯集成。

weixin_29172963的博客 327

JavaWeb:ServletContext

ServletContext对象 1. 概念:代表整个web应用,可以和程序的容器(服务器)来通信 特点: 产生:部署了Web的服务器一启动,ServletContext对象就会创建,服务器不关闭,就会一直存在。 销毁:关闭服务器或者是从web服务器上卸载该程序的时候,该对象销毁。 功能:ServletContext对象保存着 所有用户所有请求的数据,所以可以从当前启动的Web服务器项目中Servlet类中拿去任何用户的请求数据。 2. 获取 通过request对象获取 request.getServ

Fate的博客 290

GCJ02坐标系转WGS84坐标系(已实地测试基本无偏差)

坐标系转化,GCJ02坐标系,WGS84坐标系

Xiao_XianYu_的博客 1855

java-web之ServletContext

百度百科: ServletContext接口是Servlet中最大的一个接口,呈现了web应用的Servlet视图 我的理解: ServletContext是一个容器,可以存放你在网页中,你的项目里你你所浏览过的,编写过的东西。可利用这个容器调出来使用。 以下均用代码展示: 1. 共享数据 web.xml配置: <servlet> <servlet-name>hello</servlet-name> <s.

qq_42104296的博客 624

EtherCAT主站SOEM -- 29 -- STM32F767-SOEM通过 CSP模式(周期同步位置模式)控制一个电机转圈圈

以上就是EtherCAT主站SOEM – 29 – STM32F767-SOEM通过 CSP模式(周期同步位置模式)控制一个电机转圈圈的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。

常驻客栈的博客--嵌入式EtherCAT 2239

【k8s故障处理篇】calico-node启动失败“Felix is not live: Get “http://localhost:9099/liveness” 解决办法(V1.30.3版本)

【k8s故障处理篇】calico-node启动失败“Felix is not live: Get “http://localhost:9099/liveness” 解决办法(V1.30.3版本)

jks212454的博客 1091

JavaWeb开发(五)Servlet-ServletContext

在Serv1et中如果当前的web资源不想处理请求时,可以通过forward方将当前的请求传递给其它的Web资源处理,这种方式称为请求转发。(1)请求转发的相关方法:RequestDispatcher对象,可以通过request.getRequestDispatcher()方法获取调用这个对象的foward方法就可以实现请求转发。

qq_36158551的博客 1569

采用了fluent模拟了平壁面结霜过程。udf,很经典,可以试试。

利用该模型作为FLUENT中的源项,模拟了在局部冷却下冷表面上的霜形成,以预测霜的形态、温度分布和霜的重量,结果与实验结果吻合良好。结果显示,霜首先围绕冷却块形成,然后逐渐向其他方向扩展,冷却块上方的霜密度最大。随着时间的推移,平均霜厚度逐渐增加,生长速率减慢,而平均霜密度随增长速率变快而增加。相变传递微观过程与机理、蒸发及冷凝换热、强化传热、高效传热管、热泵、制冷、节水节能新技术、电子元器件冷却、余热回收及梯级利用等。udf,很经典,可以试试。工程热物理、空调、热能、低温制冷、化工、物理等。

qq_15963745的博客 921

JavaWeb核心之ServletContext

ServletContext 是应用上下文对象。每一个应用中只有一个 ServletContext 对象。作用:可以获得应用的全局初始化参数和达到 Servlet 之间的数据共享。生命周期:应用一加载则创建,应用被停止则销毁。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I3uuVRhN-1663838647502)(assets/ServletContext.png)]

楠黎倾风的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【JavaWeb】JavaWeb三大组件之Servlet

因为现在我们的请求都是基于HTTP协议的,所以我们应该专门为HTTP请求写一个Servlet做为通用父类由上图我们可以看出,以后再写Servlet可以直接继承HttpServletServlet是一个标准GenericServlet是Servlet接口的子类HttpServlet是GenericServlet的子类,一个专门处理HTTP请求的ServletServletContext是一个全局的储存信息的空间。服务器开始,其就存在,服务器关闭,其才释放。一个用户可有多个request;

2302_78914800的博客 1332

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

JavaWeb(五)——Servlet、Mapping问题、ServletContext

1. Servlet 简介 Servlet就是sun公司开发动态web的一门技术 Sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤: 编写一个类,实现Servlet接口 把开发好的Java类部署到web服务器中 把实现了Servlet接口的Java程序叫做 Servlet 2. HelloServlet Serlvet接...

吃饭了吗 706

Javaweb03-Servlet技术1(Servlet,ServletConfig,ServletContext)

在Servlet运行期间,经常需要一些配置信息,可以在@WebServlet注解的属性中配置或者在web.xml中配置。当Tomcat初始化一个Servlet时,会将该Servlet的配置信息封装到一个ServletConfig对象中,通过调用init(ServletConfig config)方法将ServletConfig对象传递给Servlet。

XYX_888的博客 1402

JavaWeb ——servlet学习3之ServletContext

JavaWeb ——servlet学习3之ServletContext 每个web工程都只有一个ServletContext对象。 说白了也就是不管在哪个servlet里面,获取到的这个类的对象都是同一个。 作用: 获取全局配置参数 获取web工程中的资源 存取数据,servlet间共享数据 域对象 获取全局配置参数: <context-param&gt...

子敬的技术博客 293

JavaWeb学习(五)---ServletContext对象/通过servletContext对象读取配置文件

JavaWeb学习(五)—ServletContext对象/通过servletContext对象读取配置文件 01 ServletContext对象 WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的`ServletContext`对象,它代表当前web应用。一个WEB应用中的所有`Servlet`共享同一个`ServletContext`对象,`Servlet`对象之间可以通过`Ser...

DOGIOOH的博客 662

【Servlet教科书】JavaWeb中的域对象和会话技术(Cookie、Session、ServletContext、Request知识总结)

文章目录@[toc]一、状态管理介绍1.1 什么是状态管理1.2 为什么需要状态管理1.3 状态管理的两种常见模式二、状态管理之Cookie应用2.1 什么是Cookie2.2 创建Cookie对象2.2.1 关于Cookie生命周期的设置2.2.2 关于Cookie共享范围的设置2.2.3 遍历查询Cookie2.3 Cookie的编码与解码问题2.4 发送Cookie的条件2.5 设置Cook...

奈何的人生 2224

ServletContext:Servlet 的域对象

本文介绍了 Servlet 的域对象之一 ServletContext 对象的相关内容。。。

Regino的博客 950

JavaWeb之Servlet(一)Servlet入门、API(生命周期)、ServletContext对象

一、Servlet简介 1.什么是Servlet Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码,通过java的API 动态的向客户端输出内容 servlet规范:包含三个技术点 1)servlet技术 2)filter技术---过滤器 3)listener技术

麦客子 1638

JavaWeb之Servlet(三)ServletConfig与ServletContext

导航 ·JavaWeb之Servlet(一)Maven创建Servlet项目时的换源与运行时404的可能解决方案 ·JavaWeb之Servlet(二)Servlet生命周期方法与GET/POST请求分发 ·JavaWeb之Servlet(三)ServletConfig 和 ServletContext 文章目录导航前言一、ServletConfigⅠ、创建ServletConfig类对象Ⅱ、ServletConfig类对象方法Ⅲ、java程序Ⅳ、配置web.xmlⅤ、回显二、ServletContextⅠ

Ho1aAs‘s Blog 646

Servlet中的数据存放对象:Request、Session、ServletContext

Servlet中的数据存放对象:Request、Session、ServletContext

weixin_71118996的博客 2173

JavaWeb 速通Servlet(ServletConfig和ServletContext)

JavaWeb——ServletConfig 和 ServletContext 内容分享。

优快云 / 稀土掘金/ B站 / GitHub: Cyan_RA9 1928

JavaWeb——ServletContext对象及使用

文章目录JavaWeb——ServletContext对象什么是ServletContextServletContext的应用共享数据获取配置的初始化参数请求转发读取资源文件 JavaWeb——ServletContext对象 什么是ServletContext Web容器在启动时,它会为每个Web应用程序都创建一个对应的ServletContext对象,这个对象代表当前Web应用。并且它被所有客户端共享(比如你在淘宝登陆了,那你的登陆信息会被带到很多页面,就是跳到其他页面发现也是登陆上的)。 Servle

万里顾一程的博客 650
上一篇: javaweb入门(一)——servlet-02-servlet运行原理
下一篇: javaweb入门(一)——servlet-04-SerlvetContext应用
BugMaker2000
博客等级 码龄7年 84粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值