第17周 第2章Session与ServletContext原理 ---ServletContext与三大作用域对象

Servlet context是外部应用程序的全局对象,用于存储在整个应用程序中需要持久保存的数据。它随着应用程序的启动而创建,并在应用程序重启或关闭时销毁。通过servlet context,可以方便地实现全局数据的共享和持久化,如网站的备案信息等。

package com.imooc.servlet.servletcontext;

// 引入必要的Java类
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;
import java.io.IOException;

// 使用@WebServlet注解来配置Servlet的访问路径为 "/servletcontext/init"
@WebServlet("/servletcontext/init")
public class ServletContextInitServlet extends HttpServlet {
    
    // 重写HttpServlet的doGet方法,用于处理GET请求
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        // 获取当前请求的ServletContext对象
        // ServletContext代表整个Web应用的上下文,所有的Servlet和JSP共享这个对象
        ServletContext servletContext = request.getServletContext();
        
        // 使用ServletContext对象的setAttribute方法设置一个全局属性
        // 属性名为"copyright",属性值为网站的版权信息字符串
        servletContext.setAttribute("copyright", "Copyright© 2021 imooc.com  京ICP备 12003892号-11 京公网安备11010802030151号");
        
        // 设置响应的内容类型和字符编码,表示返回HTML格式的文本内容
        response.setContentType("text/html;charset=utf-8");
        
        // 向客户端返回一个HTML格式的文本响应,通知ServletContext已经初始化
        response.getWriter().println("ServletContext已初始化");
    }
}

package com.imooc.servlet.servletcontext;

// 引入必要的Java类
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;
import java.io.IOException;
import java.io.PrintWriter;

// 使用@WebServlet注解来配置Servlet的访问路径为 "/servletcontext/index"
@WebServlet("/servletcontext/index")
public class IndexServlet extends HttpServlet {
    
    // 重写HttpServlet的doGet方法,用于处理GET请求
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        // 设置响应的内容类型和字符编码,表示返回HTML格式的文本内容
        response.setContentType("text/html;charset=utf-8");
        
        // 获取当前请求的ServletContext对象
        // ServletContext代表整个Web应用的上下文,所有的Servlet和JSP共享这个对象
        ServletContext context = request.getServletContext();
        
        // 从ServletContext中获取名为"copyright"的全局属性值,并将其转换为字符串类型
        // 如果该属性不存在,则返回null
        String copyright = (String) context.getAttribute("copyright");
        
        // 获取响应对象的输出流,用于向客户端输出文本内容
        PrintWriter out = response.getWriter();
        
        // 输出导航栏的HTML内容
        out.println("导航栏");
        
        // 输出一个水平线的HTML标记,用于分隔内容
        out.println("<hr/>");
        
        // 输出首页正文的HTML内容
        out.println("首页正文");
        
        // 再次输出一个水平线的HTML标记,用于分隔内容
        out.println("<hr/>");
        
        // 输出从ServletContext中获取的版权信息
        out.println(copyright);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值