1.ServletContext实现功能
(1),显示浏览网页的人数,在线用户人数,为实现这一功能,如果使用数据库存储这些信息,则需要频繁访问数据库,增加系统开销,并不合理
用ServletContext可以更好地实现上述功能。ServletContext是一个公用空间,所有用户都可以访问。cookie在浏览器,session在服务器,servletcontext也在服务器,被所有客户端共享,servletcontext是一个对象,代表着当前的web应用,servletcontext对象可以通过方法来实现对对象的引用。当web应用关闭/tomcat关闭/对web应用reload 会造成servletContext销毁.
2.使用方法和session相似
3.作用1:使多个servlet得到属性。获取web应用的初始化参数
<!-- 如果希望所有servlet都可以访问该配置 --> <context-param> <param-name>name</param-name> <param-value>scott</param-value> </context-param>
先在xml文件配置,然后获取属性
String val=this.getServletContext().getInitParameter("name"); out.println("val="+val);
作用2:读取properties资源文件
首先在webroot下创建peoperties文件并赋值。然后
InputStream inputStream= this.getServletContext().getResourceAsStream("dbinfo.properties"); Properties pp=new Properties(); pp.load(inputStream); out.println("username="+pp.getProperty("username"));
即可读取资源文件。
作用3:获取文件全路径,
//读取文件全路径.上传下载需要这个路径,是很重要的知识点 String path=this.getServletContext().getRealPath("/images/top3.jpg"); out.println("<br/>path is:"+path);
但是,如果文件放在src目录下,应该使用类加载器:
InputStream is=servlet5.class.getClassLoader().getResourceAsStream("com.ydh/top3.jpg");
总之,如果数据不大,不用写数据库,而且所有用户共享,则使用servletContext比较好,如网站计数器等。