Servlet学习(七)Application

本文介绍如何使用ServletContext在Web应用程序的整个生命周期中记录访问次数。通过示例代码展示如何实现跨客户端的访问计数器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Session是服务器内,针对某个特定客户端(浏览器)的特定内存区域。

而Application是在webapp生命周期内,提供给所有客户端的服务器内的内存区域。


Application在API中对应类ServletContext。

context:上下文,一个context相当一个webapp的运行环境。两者一一对应。

servletContext通过HttpServlet的getServletContext()方法就可以拿到,

通过ServletContext的getAttribute()和setAttribute()方法获取/设置相关属性。


测试程序:

package com.vin.application;

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

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

/**
 * Application测试
 * 用于保存整个web应用的生命周期内都可以访问的数据
 * 可供多个不同窗口访问,可作为某一页面被总共访问次数的计数器(比如网站首页的访问量)
 * @author Pigeon
 *
 */
public class TestServletContext extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        response.setContentType("text/html;charset=gb2312");
        PrintWriter out = response.getWriter();
        
        // Returns a reference to the ServletContext in which this servlet is running. 
        ServletContext application = this.getServletContext();
        // 从当前application中读取属性accessCount的值
        Integer accessCount = (Integer)application.getAttribute("accessCount");
        if(accessCount == null) {
            accessCount = new Integer(0);
        } else {
            accessCount = new Integer(accessCount.intValue() + 1);
        }
        // 向当前application中插入键(key,属性)值(value)对
        application.setAttribute("accessCount", accessCount);
        
        out.println("<html><head><title>ServletContext测试</title></head><br>"
                + "<body><td>" + accessCount +"</td>/n"
                + "</body></html>");
        
    }

}
结果:每次刷新,访问次数+1.

与session不同的是,session刷新页面,访问次数+1。但重新打开页面,访问次数归零。(关闭页面即关闭旧session,打开新session)

application刷新页面,访问次数+1;重新打开页面,访问次数不归零。(application的context上下文存货于整个webapp的生命周期)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值