ServletContext

ServletContext概述

服务器会为每个应用创建一个ServletContext对象,ServletContext:

  • 它是servlet三大域对象之一.
  • ServletContext它是只有一个实例的对象,一个web应用只有一个ServletContext。
  • ServletContext对象的创建是在服务器启动时完成的。
  • ServletContext对象的销毁是在服务器关闭时完成的。

ServletContext的功能

1、域功能,内部有Map,可以用来存取数据。

servletContext.setAttributr("name","zhangsan");//在ServletContext域中保存了一个名为name的数据。
servletContext.setAttributr("name","lisi");//替换名为name的数据。
String name=(String)servletContext.getAttributr("name");//获取ServletContext中名为name的数据。
servletContext.removeAttribute("name");//移除ServletContext中名为name的属性。
Enumeration e=servletContext.getAttributNames();//获取所有ServletContext域所有属性名称。

在ServletContext中保存的数据可以供当前应用程序中任何动态资源共享。
2、访问当前web应用的资源
String getRealPath(String path);//获取指定资源的真实路径。
将路径/WEB-INF/abc.txt自动识别补全:F:/a/b/c/webapps/hello/WEB-INF/abc.txt,省去了一系列麻烦。
3、获取资源流
可以通过ServletContext获取资源流,即把资源以输入流的方式获取。

  • 获取a.txt资源流:InputStream in=servletContext.getResourceAsStream("/a.txt");当前项目路径。
  • 获取b.txt资源流:InputStream in=servletContext.getResourceAsStream("/WEB-INF/b.txt");

4、获取指定目录下所有资源路径
例如获取/WEB-INF下所有资源的路径:

Set set=context.getResourcePath("/WEB-INF");
System.out.println(set);

5、获取web.xml中配置的应用初始化参数。
String xx=servletContext.getInitParameter("xxx");
6、获取ServletContext对象

  • ServletContext context=servletConfig.getServletContext()
  • GenericServlet类本身也有getServletContext()方法,如果你的Servlet是它的子类,那么可以使用this.getServletContext();

访问量统计

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /*
         * 1、获取application
         * 2、获取application中的count
         * 3、判断count是否存在
         * 4、如果为null,说明还没开始计数,说明是第一次访问,设置count的值
         * 5、如果不为null,说明不是第一次访问,那么count保存的值加一即可
         * 6、输出count给客户端
         * 7、把count保存在application中
         */
        ServletContext application = this.getServletContext();
        Integer count = (Integer) application.getAttribute("count");
        if(count !=null) {
            count++;//让访问次数加一
        } else {
            count = 1;
        }
        /*
         * 下面方法两个功能
         * 1、设置getWrite()这个字符流的编码为utf-8
         * 2、在响应中添加Coutent-Type这个头,指定为utf-8
         * 
         * 
         * setContentType("text/html;charset=UTF-8");
         * 等同于
         * response.setHeader("ContentType",text/html;charset=UTF-8");
         */
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().print("本页面是第"+count+"次访问");
        application.setAttribute("count", count);

    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值