ServletContext

本文详细介绍了ServletContext的概念及使用方式,包括其作用域、生命周期、配置参数的读取方法、资源文件的加载途径,以及作为全局变量的具体应用场景等。

ServletContext:

    1)是服务器端的一块公共存储区域,可供所有客户存取数据(全局区域);

        模型图:


    2)一个web应用程序只有一个ServletContext;

    3)在Servlet中,获取ServletContext:(2种方法)

ServletContext servletContext = this.getServletContext();
ServletContext servletContext1 = req.getSession().getServletContext();

    4)设值/取值和删除:

servletContext.setAttribute("count", 1); //设值
servletContext.getAttribute("count"); //取值
servletContext.removeAttribute("count"); //删除

    5)ServletContext用法:

        a、可以读取全局配置文件:

        配置文件:

<context-param> <!-- 配置全局变量 所有ServletContext都可以访问 -->
    <param-name>name</param-name>
    <param-value>char</param-value>
</context-param>

        Servlet中代码:

String value = this.getServletContext().getInitParameter("name");
        b、读取资源文件:

            资源文件放于根目录下,和WEB-INF同级:

InputStream is = this.getServletContext().getResourceAsStream("db.properties");
Properties pros = new Properties();
pros.load(is);

            如果资源文件在src下:

InputStream is = ContextServlet.class.getClassLoader().getResourceAsStream("db.properties");
Properties pros = new Properties();
pros.load(is);

        c、作为全局变量的应用:网站计数器/网络聊天室;

    6)servlet局部变量:

<servlet>
    <servlet-name>configServlet</servlet-name>
    <servlet-class>servlet.ConfigServlet</servlet-class>
  	<!-- 局部变量设置 -->
  	<init-param>
  		<param-name>name</param-name>
  		<param-value>char</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>configServlet</servlet-name>
    <url-pattern>/config</url-pattern>
  </servlet-mapping>

Servlet代码:

public class ConfigServlet extends HttpServlet{
	@Override
	public void init(ServletConfig config) throws ServletException {
		String value = config.getInitParameter("name");
		System.out.println(value);
	}
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
	}

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

    7)ServletContext生命周期:和服务器一致,即服务器启动时自动创建该对象,服务器关闭后自动销毁该对象;

    8)三种存储数据的方式:request/session/ServletContext:

        存储时间长短:ServletContext > session(会话时间范围内) > request(请求时间范围内)

        

ServletContext是Java Web中的一个重要接口,它代表了Web应用程序在服务器中的上下文环境。在一个Web应用程序中,每个Servlet都可以访问同一个ServletContext对象,从而实现Servlet之间的数据共享和通信。 在Java中,可以使用ServletConfig对象的getServletContext()方法来获取ServletContext对象,然后使用该对象的方法来实现一系列操作,例如: 1. 获取Web应用程序的初始化参数:可以使用ServletContext对象的getInitParameter()方法来获取Web应用程序的初始化参数,例如数据库连接等配置信息。 ```java String username = context.getInitParameter("username"); ``` 2. 获取Web应用程序的真实路径:可以使用ServletContext对象的getRealPath()方法来获取Web应用程序的真实路径,例如获取Web应用程序中的一个文件的绝对路径。 ```java String path = context.getRealPath("/WEB-INF/config.properties"); ``` 3. 在ServletContext中保存数据:可以使用ServletContext对象的setAttribute()方法来在ServletContext中保存数据,从而实现Servlet之间的数据共享。 ```java context.setAttribute("key", value); ``` 4. 从ServletContext中获取数据:可以使用ServletContext对象的getAttribute()方法来从ServletContext中获取数据,例如获取其他Servlet保存的数据。 ```java Object value = context.getAttribute("key"); ``` 需要注意的是,ServletContext对象的作用域为整个Web应用程序,因此需要注意数据的安全性和可靠性。另外,ServletContext对象是在Web应用程序启动时创建的,因此可以在Servlet的init()方法中获取ServletContext对象并进行初始化操作,例如读取配置文件等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值