JavaWeb入门—ServletContext与三大作用域对象

ServletContext与三大作用域对象

1.ServletContext(Servlet上下文对象),是Web应用全局对象。一个Web应用只会创建一个ServletContext对象。ServletContext随着Web的启动而创建,随着Web的关闭而销毁

 

2.代码

ServletContextInit.java

package com.imooc.ServletContextFile;

import java.io.IOException;

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;

/**
 * 用于初始化网址Servlet基本信息
 */
@WebServlet("/ServletContextInit")
public class ServletContextInit extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletContextInit() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		
		//获取全局对象
		ServletContext context = request.getServletContext();
		
		//向应用程序设置全局属性
		context.setAttribute("copyright", " 2003-2018 TMALL.COM 版权所有");
		context.setAttribute("title", "天猫");
		response.getWriter().println("<h1>init success</h1>");
	}

}

ServletContextDefaulServlet.java

package com.imooc.ServletContextFile;

import java.io.IOException;

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;

/**
 * Servlet implementation class ServletContextDefaulServlet
 */
@WebServlet("/ServletContextDefaulServlet")
public class ServletContextDefaulServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletContextDefaulServlet() {
        super();
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		
		//获取应用程序全局对象
		ServletContext context = request.getServletContext();
		String copyright = (String) context.getAttribute("copyright");
		String title = (String) context.getAttribute("title");
		
		//防止乱码
		response.setContentType("text/html;charset=utf-8");
		
		response.getWriter().println("<h1>"+copyright+"</h1>");
		response.getWriter().println("<h1>"+title+"</h1>");
	}

}

比起Session,即使关闭当前浏览器窗口,打开新的窗口重新输入地址,也能获取到信息,这就是ServletContext全局变量,只有当Web关闭后才失效。

 3.三大作用域(从小到大)

HttpServletRequest——请求对象:请求和响应都是属于HttpServletRequest对象,当浏览器发送请求给服务器,服务器把信息响应给浏览器,这时请求对象就会被销毁。所以说请求对象是瞬时对象,用完就扔

HttpSession——用户会话对象:用于保存与浏览器窗口对应的数据。Session是第一次用户发来请求被创建的,默认情况下,30分钟没有被访问就会被自动销毁

ServleContext——Web应用全局变量:Web程序启动时就被创建了,当Web程序重启或销毁就销毁。

版权声明:本文为WildestDeram原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/WildestDeram/article/details/87868840

智能推荐

JSP 9大作用域

1. 九大内置对象 1.2 为什么可以直接使用? Jsp解析成.java,会自动生成方法参数和局部变量.   对象名 类型 Servlet中获取方式 解释 request HttpServletRequest 方法参数 方法参数 请求对象 response HttpServletResponse 方法参数 响应对象 session HttpSession request.getSessi...

servlet的监听器和三大作用域

servlet的八大监听器 Servlet三大作用域 1、request  2、session 3、ServletContext 举例 监听三大作用域 监听request作用域 request的作用范围:请求响应后马上销毁  传递的参数 或者请求转发跳转数据传递  写入HttpServletRequest   应用比较多 在web.xml中注册re...

Servlet(下)——ServletConfig、ServletContext、作用域对象、请求转发与重定向、注解、XML && 练习

文章目录 Ⅰ、ServletConfig Ⅱ、ServletContext 总结0 Ⅲ、作用域对象0 总结0 Ⅳ、请求转发与重定向0 Ⅴ、注解 Ⅵ、XML Ⅶ、练习题——学生管理系统3(+新增学生信息的操作) Ⅰ、ServletConfig 就是Servlet的配置信息 在运行Servlet程序时,可能需要一些辅助信息,例如:文件使用的编码、使用Servlet程序的共享信息...

Linux内核之进程调度3:进程调度

1. 吞吐率和响应 吞吐:单位时间内做的有用功; 响应:低延迟。 吞吐追求的整个系统CPU做有用功,响应追求的是某个特定任务的延迟低; 1GHZ的CPU切换线程保存恢复现场约几个微妙级别,看似消耗不了太多时间,但是由于系统的局部性原理,会保存当前线程数据的缓存,切换线程会打乱局部性引起cache miss,而CPU访问cache速度远大于内存访问,这样综合看来上下文切换花销还是很大的。无用功占用较...

restful+ci框架 实践

restful架构: 是就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。具体理论请看我上一篇写的restful理论。本篇主要记录下关于restful的实践。 restful实践: 工具: 这次在ci框架+restful 主要文件: 在控制器中添加控制器类:Restful.php。 在头部包含REST_Controller.php文件并继承...

猜你喜欢

Configuration, ConfigurationProperties和EnableConfigurationProperties用法

最近刚刚解决了个错误,突然又发现这个类在spring容器中找不到, 于是我就加一个 @Component的注解,哈哈直接启动成功,那我如果吧这个注解去掉,加上一个@Configuration的注解呢,哈哈还是可以的,毕竟里面已经有这个@Component的注解了。所以我就整理下Configuration,ConfigurationProperties,EnableConfigurationProp...

备战蓝桥杯--贪心算法刷题整理5

翻硬币(贪心算法) 看了一下网上的题解,感觉挺强,网友的做题思想值得借鉴,这里分享一下网友的链接,同时再分享一下自己的解题方案 链接:https://blog.csdn.net/qq_34594236/article/details/60326782 题目描述: 小明正在玩一个“翻硬币”的游戏。 桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母...

部署高可用RabbitMQ

安装 准备工作 这里我们使用三个RabbitMQ节点: 开通端口(具体见官方文档): 安装ErLang和RabbitMQ Server 安装文档见:https://www.rabbitmq.com/install-rpm.html。 采用RPM包而不是Repo的安装命令如下(以下的版本号可根据实际情况修改): 安装管理插件 安装文档见:https://www.rabbitmq.com/manage...

Opencv常用代码总结

文章目录 读取显示图像 保存图片 查看图片信息 读取视频 截取部分图像数据 颜色通道提取、融合与保留 边界填充 数值计算 图像融合 图像阈值 图像平滑(降噪) 形态学-腐蚀操作 形态学-膨胀操作 开运算与闭运算 梯度运算 礼帽与黑帽 图像梯度 Sobel算子 Scharr算子 laplacian算子 Canny边缘检测 图像金字塔 高斯金字塔:向下采样(缩小) 高斯金字塔:向上采样(放大) 拉普拉...

Numpy实现LDA

LDA与PCA的区别如下表: LDA的原理如下: 代码实现如下,这里使用的a,b是Nx2的二维点集合,经过LDA后,二维的点变为一维。更高维度的也是可以做到的。函数里的dim是原始数据的维度,d是想要降到的维度。  初始的数据如下图,红色点和蓝色点代表不同的分类。 经过LDA后,投影的一维数值如下图所示。 可见LDA实现了降维,而且两种分类的间距较大,类内的散度较小。...