六祎:ServletContext

一个项目只有一个ServletContext对象
我们可以在 N 多个Servlet 中来获取这个唯一的对象,使用它可以给多个Servlet传递数据!

课时13:https://edu.aliyun.com/lesson_1700_13650#_13650


1.ServeltContext概述


服务器为每个应用创建一个ServeltContext对象
1) ServletContext对象创建是在服务器启动时完成的
2) ServletContext对象的销毁实在服务器关闭时完成的

1.1 ServletContext 对象的作用时在整个web应用的动态资源之间共享数据
例如在Aservlet中向ServletContext对象中保存一个值,然后再BServlet中就可以获取这个值,这就是
共享数据

2. 获取ServletContext


 在Servlet中获取ServletContext对象
 1)在 void init( ServletConfig config)中:SerevletContext context = config.getServletContext();
--ServletConfig类的getServletContext()方法可以用来获取ServletContext对象
2)在GenericServlet或HttpServlet中获取Servlet对象
--GenericServlet类由getServletContext()方法,
所以可以直接使用 this.getServletContext()来获取

3.域对象的功能


域:对象就是用来在多个Servlet中传递数据的
      必须有存储数据功能
      必须要有取数据的功能
      
ServletContext时 javaweb四大域对象之一、
PageContext
ServletRequest
HttpSession;
ServletContext;
所有域对象都有存取数据的功能,因为域对象内部有一个Map,用来存储数据,下面时ServletContext对象
用来操作数据的方法
 1) void setAttibute(String name,Object value) : 用来存储一个对象,也可以称之为存储一个域属性
例如: servletContext.setAttribute("xxx","XXX"),在ServletContext中保存了一个域属性
域属性名称为xxx,域属性的值为XXX
请注意,如果多次调用该方法,并且使用相同的name,那么会覆盖上一次的值,这一特性和Map相同;
 2)Oject getAttribute(String name) : 用来获取ServletContext中的数据,当前在获取之前需要先去存储
,例如:String vlaue=(String)serletContext.getAttribute("xxx");--->获取名为 xxx的域属性
 3)void remoteAttribute(String name) : 用来以移除 ServletContext中的域属性,如果参数 name
指定的域属性不存在,那么本方法什么都不做
 4)Enumeration getAttributeName():获取所有域属性的名称

3.1实操上代码:
新建一个Web项目,创建一个AServlet类,并继承HttpServlet,使用doGet()方法

 

* 演示ServletContext中保存数据
 * 
 * @author 肖龙鸿
 * 2019年9月28日
 *
 */
public class AServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		/**
		 * 1.获取ServletContext对象
		 * 2.调用setAttribute()方法保存数据
		 */
		
		ServletContext application =this.getServletContext();
		application.setAttribute("name","张三");
	}
	

}

 3.2创建一个BSservlet类,

 

package cn.lystudio.Servlet;

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;

/**
 * 
 * @author 肖龙鸿
 *
 *
 *2019年9月28日
 *
 */
public class BServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		/**
		 * 1.获取SerevletContext对象
		 * 2.调用getAttribute()方法完成获取数据
		 */
		ServletContext application = this.getServletContext();
		String name = (String) application.getAttribute("name");
		System.out.println(name);
	}

	
}

-----------------------------------------------------------------------------------------
web.xml配置文件 :

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	
	<servlet>
		<servlet-name>xxx</servlet-name>
		<servlet-class>cn.lystudio.Servlet.AServlet</servlet-class>
				
	</servlet>
  
  
    <servlet-mapping>
    	<servlet-name>xxx</servlet-name>
    	<url-pattern>/AServlet</url-pattern>
    </servlet-mapping>
    
    <!-- HttpServlet -->
    	<servlet>
		<servlet-name>bservlet</servlet-name>
		<servlet-class>cn.lystudio.Servlet.BServlet</servlet-class>
				
	</servlet>
  
  
    <servlet-mapping>
    	<servlet-name>bservlet</servlet-name>
    	<url-pattern>/BServlet</url-pattern>
    </servlet-mapping>
    
    


</web-app>













浏览器先访问AServlet,后再访问BServlet,可在控制台查看获取数据成功!

恭喜你,已完成使用ServletContext获取数据!

下一步,4.获取应用初始化参数

新建一个CServlet类,继承HttpServlet类,doGet()方法
并配置web.xml

 

package cn.lystudio.Servlet;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * 演示ServletContext获取公共的初始化参数
 * @author 肖龙鸿
 *
 *
 *2019年9月28日
 *
 */
public class CServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		/**
		 * 1.得到ServletCo'n'text
		 * 2.调用它getInitParameter(String )得到参数
		 */
		ServletContext application = this.getServletContext();
		String value = application.getInitParameter("context-param");
		System.out.println(value);
	}
	

}
-----------------------------------------------------------------------------------------
配置web.xml


 <!-- HttpServlet CServlet-->
    	<servlet>
		<servlet-name>cservlet</servlet-name>
		<servlet-class>cn.lystudio.Servlet.CServlet</servlet-class>
		</servlet>
  
  
    <servlet-mapping>
    	<servlet-name>cservlet</servlet-name>
    	<url-pattern>/CServlet</url-pattern>
    </servlet-mapping>
     //这里配置获取初始化参数的配置
    <context-param>
    	<param-name>context-param</param-name>
    	<param-value>context-value</param-value>
    </context-param>

 

浏览器访问CServlet,然后再控制台输出context-param

 

恭喜,你已完成使用ServletContext获取初始化参数

 

全部评论

相关推荐

10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-27 10:48
点赞 评论 收藏
分享
评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
443331次浏览 4520人参与
# 春招别灰心,我们一人来一句鼓励 #
42187次浏览 537人参与
# 阿里云管培生offer #
120447次浏览 2220人参与
# 地方国企笔面经互助 #
7973次浏览 18人参与
# 同bg的你秋招战况如何? #
77166次浏览 569人参与
# 实习必须要去大厂吗? #
55811次浏览 961人参与
# 北方华创开奖 #
107472次浏览 600人参与
# 虾皮求职进展汇总 #
116310次浏览 887人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11683次浏览 289人参与
# 实习,投递多份简历没人回复怎么办 #
2454962次浏览 34861人参与
# 提前批简历挂麻了怎么办 #
149927次浏览 1978人参与
# 在找工作求抱抱 #
906124次浏览 9423人参与
# 如果公司给你放一天假,你会怎么度过? #
4762次浏览 55人参与
# 你投递的公司有几家约面了? #
33209次浏览 188人参与
# 投递实习岗位前的准备 #
1196037次浏览 18550人参与
# 机械人春招想让哪家公司来捞你? #
157648次浏览 2267人参与
# 双非本科求职如何逆袭 #
662384次浏览 7397人参与
# 发工资后,你做的第一件事是什么 #
12806次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35906次浏览 384人参与
# 简历中的项目经历要怎么写? #
86937次浏览 1516人参与
# 参加完秋招的机械人,还参加春招吗? #
20153次浏览 240人参与
# 我的上岸简历长这样 #
452074次浏览 8089人参与
牛客网
牛客企业服务