ServletContext对象

本文详细介绍了如何获取ServletContext对象及其主要用途,包括获取全局初始化参数、文件的MIME类型、作为域对象存储数据的方法以及如何获取Web项目下的文件资源。

1、获取ServletContext对象:

ServletContext sc = this.getServletContext();

2、作用:

    *1、获取全局初始化参数(点击查看)

sc.getInitParameter(name)

    *2、获取文件的MIME类型(获取文件的格式)

// 2.1设置Content-Type头
String type = this.getServletContext().getMimeType(filename);
response.setHeader("Content-Type", type);

    *3、作为域对象来存储数据(点击查看)

ServletContext是一个域对象

    *作用范围:整个web工程

    *创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独的ServletContext对象

    *销毁:服务器关闭的时候,或者项目从服务器中移除的时候

int count = 0;
this.getServletContext().setAttribute("count", count);	//设值
int count = (int) this.getServletContext().getAttribute("count");	//取值

    *4、获取Web项目下的文件(点击查看)

// 方式1: getResourceAsStream, 返回的是字节流
ServletContext sc = this.getServletContext();
InputStream is = sc.getResourceAsStream("文件路径");  //路径必 须是绝对路径
			
// 方式2: getRealPath,返回的是磁盘绝对路径
ServletContext sc = this.getServletContext();
String realPath = sc.getRealPath("文件路径"); 	//路径必须是绝对路径
InputStream is = new FileInputStream(realPath);
			
// 方式3: 类的加载器,只能加载src路径下的文件
InputStream iStream =  当前类.class.getClassLoader().getResourceAsStream("文件路径");

### ServletContext对象的定义与作用 #### 1. 定义 ServletContext对象代表一个Web应用的全局上下文环境,它封装了整个Web应用的信息。在一个Web应用中,无论存在多少个Servlet实例,都只有一个ServletContext对象实例[^1]。 #### 2. 功能与作用 - **获取Web应用配置参数**:通过`getInitParameter(String name)`方法可以获取在`web.xml`文件中为整个Web应用配置的初始化参数。 - **共享数据**:多个Servlet可以通过ServletContext对象共享数据。例如,使用`setAttribute(String name, Object value)`方法存储数据,并通过`getAttribute(String name)`方法获取数据[^3]。 - **资源访问**:提供对Web应用中的资源(如HTML文件、图片、配置文件等)的访问支持。例如,使用`getResource(String path)`或`getResourceAsStream(String path)`方法读取资源文件。 - **日志记录**:通过`log(String message)`方法记录日志信息,便于调试和监控应用运行状态。 - **应用生命周期管理**:ServletContext对象可以感知Web应用的启动和关闭事件,从而执行相应的初始化或清理操作。 #### 3. 获取方式 可以通过以下两种方式获取ServletContext对象: ```java // 通过request对象获取 ServletContext sc1 = request.getServletContext(); // 通过HttpServlet类获取 ServletContext sc2 = this.getServletContext(); ``` 这两种方式获取的ServletContext对象是同一个实例[^3]。 #### 4. 示例代码 以下是一个简单的示例,展示如何使用ServletContext对象获取Web应用的初始化参数并存储共享数据: ```java public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取ServletContext对象 ServletContext context = getServletContext(); // 获取Web应用的初始化参数 String loginId = context.getInitParameter("loginid"); String loginPwd = context.getInitParameter("loginpwd"); // 输出初始化参数 resp.getWriter().println("Login ID: " + loginId); resp.getWriter().println("Login Password: " + loginPwd); // 存储共享数据 context.setAttribute("msg", "登录成功!"); // 获取共享数据 String msg = (String) context.getAttribute("msg"); resp.getWriter().println("Message: " + msg); } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值