前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >十、ServletContext对象【重点】

十、ServletContext对象【重点】

作者头像
Qwe7
发布2022-08-03 14:28:44
2260
发布2022-08-03 14:28:44
举报
文章被收录于专栏:网络收集网络收集

十、ServletContext对象【重点

10.1 ServletContext概述

  • 全局对象,也拥有作用域,对应一个Tomcat中的Web应用
  • 当Web服务器启动时,会为每一个Web应用程序创建一块共享的存储区域(ServletContext)。
  • ServletContext在Web服务器启动时创建,服务器关闭时销毁。

10.2 获取ServletContext对象

  • GenericServlet提供了getServletContext()方法。(推荐) this.getServletContext();
  • HttpServletRequest提供了getServletContext()方法。(推荐)
  • HttpSession提供了getServletContext()方法。

10.3 ServletContext作用

1.获取项目真实路径

获取当前项目在服务器发布的真实路径

String realpath=servletContext.getRealPath("/");

2.获取项目上下文路径

获取当前项目上下文路径(应用程序名称)

代码语言:javascript
复制
System.out.println(servletContext.getContextPath());//上下文路径(应用程序名称)
System.out.println(request.getContextPath());

3.全局容器

ServletContext拥有作用域,可以存储数据到全局容器中

  • 存储数据:servletContext.setAttribute("name",value);
  • 获取数据:servletContext.getAttribute("name");
  • 移除数据:servletContext.removeAttribute("name");

10.4 ServletContext应用场景

  • 唯一性: 一个应用对应一个ServletContext。
  • 生命周期: 只要容器不关闭或者应用不卸载,ServletContext就一直存在。

ServletContext统计当前项目访问次数

代码语言:javascript
复制
package com.qf.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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 Servlet3
 */
@WebServlet("/servlet3")
public class Servlet3 extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		ServletContext application = request.getServletContext();
		Integer count=(Integer) application.getAttribute("count");
		if(count==null) {
			count=1;
			application.setAttribute("count", count);
		}else {
			count++;
			application.setAttribute("count", count);
		}
		
		PrintWriter out=response.getWriter();
		out.write("servlet共访问次数:"+count);
		
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doGet(request, response);
	}

}

10.5 作用域总结

  • HttpServletRequest:一次请求,请求响应之前有效
  • HttpSession:一次会话开始,浏览器不关闭或不超时之前有效
  • ServletContext:服务器启动开始,服务器停止之前有效

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 十、ServletContext对象【重点】
    • 10.1 ServletContext概述
      • 10.2 获取ServletContext对象
        • 10.3 ServletContext作用
          • 10.4 ServletContext应用场景
            • 10.5 作用域总结
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档