六、ServletContext和ServletConfig学习

一、servletContext图解

这里写图片描述

正如上图所示:因为ServletContext数据长期保存在服务器,会占用内存,因此建议不要像服务器中添加过大的数据。

二、ServletContext与session、cookie有什么异同

1,servletContext和session一样保存在服务端。
2,servletContext在服务器单独为它开辟内存空间,可以被所有用户共享。
3,ServletContext当web应用启动的时候自动被创建。
4,ServletContext当tomcat关闭,或者web应用reload的时候,servletContext自动销毁。

三、ServletContext使用场景

1,网页计数器
2,在线用户显示
3,简单的聊天系统等。

总之:如果是不同页面共享数据,而这些数据量不大,同时又不想操作数据库我们就可以考虑使用ServletContext。

四、ServletContext如何使用?

1,得到ServletContext

this.getServletContext();或 this.getServletConfig().getServletContext();

2,添加属性

servletContext.setAttribute(String,Object);

3,获取属性

servletContext.getAttribute("属性名");

4,删除属性

servletContext.removeAttribute("属性名");

五、ServletContext特殊使用

1,获取web应用初始化参数

<context-param>
        <param-name>username</param-name>
        <param-value>scott</param-value>
    </context-param>

2,使用ServletContext实现跳转

this.getServletContext().getRequestDispatcher("/login").forward(req, resp);

3,读取文件
(1)【web目录或WEB-INF下的文件

InputStream inputStream=this.getServletContext().getResourceAsStream("dbinfo.Properties");
        //创建Properties
        Properties pp=new Properties();
        pp.load(inputStream);
        String username=pp.getProperty("username");
        String password=pp.getProperty("password");
        out.println("username="+username+" password="+password);

(2)如果文件放在src目录下则用类加载器进行加载

InputStream is =Servlet5.class.getClass().getResourceAsStream("dbinfo.Properties");

(3)获取文件全路径,加载文件

String path = getServletContext().getRealPath("/imag/bg.jpg");
        System.out.println("path = "+path);
        InputStream inputStream = this.getServletContext().getResourceAsStream(path);

六、ServletConfig

(1)servletConfig主要用于读取servlet的配置信息(即:读取web.xlm)

<servlet>
    <servlet-name>ConfigTest</servlet-name>
    <servlet-class>com.hsp.model.ConfigTest</servlet-class>
    <!-- 这里可以给servlet配置信息,这里配置的信息只能被该servlet读取  -->
    <init-param>
    <param-name>encoding</param-name>
    <param-value>gbk</param-value>
    </init-param>
    <!-- 1表示该servlet被初始化的顺序 -->
    <load-on-startup>1</load-on-startup>
  </servlet>

针对上面配置,读取配置信息。

String encoding=this.getServletConfig().getInitParameter("encoding");

(2)针对某个servlet配置,读取该servlet所有配置参数信息

Enumeration<String> names=this.getServletConfig().getInitParameterNames();
        while(names.hasMoreElements()){
            String name=names.nextElement();
            System.out.println(name);
            System.out.println(this.getServletConfig().getInitParameter(name));
        }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值