Servlet p7 ServletContext对象

打印 上一主题 下一主题

主题 2043|帖子 2043|积分 6129

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
ServletContext对象

每一个 web 应用都有且仅有一个 ServletContext 对象,又称为 Application 对象,从名称中可知,该对象是与应用程序相关的。在WEB 容器启动时,会为每一个 WEB 应用创建一个对应的 ServletContex对象。
该对象有两大作用:

  • 作为域对象来共享数据,此时数据在整个应用程序中共享;
  • 该对象中保存了当前应用程序相关信息。例如可以通过getServerInfo()方法获取当前服务器信息,getRealPath(String path) 获取资源的真是路径等。
    1. //常用方法
    2. //获取服务器当前版本信息
    3. String serverInfo = req.getServletContext().getServerInfo();
    4. System.out.println("获取服务器当前版本信息 = " + serverInfo);
    5. //获取项目的真实路径
    6. String realPath = req.getServletContpext().getRealPath("/");
    7. System.out.println("获取项目的真实路径 = " + realPath);
    复制代码
ServletContext对象的获取

获取Servlet Context对象的途径有很多。比如:

  • 通过request对象获取
    ServletContext servletContext1 = req.getServletContext();
  • 通过Session对象获取
    ServletContext servletContext2 = req.getSession().getServletContext();
  • 通过ServletConfig对象获取,在 Servlet 标准中提供了 ServletConfig 方法
    ServletContext servletContext3 = getServletConfig().getServletContext();
  • 直接获取
    ServletContext servletContext4 = getServletContext();
ServletContext域对象

ServletContext也可当做域对像象来使用,通过向ServletContext中存取数据,可以使得整个应用程序共享某些数据。当然不建议存放过多数据,因为ServletContext中的数据一旦存储进去没有手动移除将会一直保存。
  1. //获取ServletContext对象
  2. ServletContext servletContext = request.getServletContext();
  3. //设置域对象
  4. servletContext.setAttribute("uname", "admin");
  5. //获取指定名称的域对象
  6. String uname = (String) servletContext.getAttribute("uname");
  7. //移除域对象
  8. servletContext.removeAttribute("uname");
复制代码
Servlet的三大域对象

  • request域对象
    三个中作用范围最小,在一次请求中有效。请求转发有效,重定向无效。
  • session域对象
    在一次会话中有效,请求转发和重定向都有效,session销毁后失效。
  • servletContext域对象
    三个中作用范围最大,在整个应用程序中有效。服务器关闭后失效。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

知者何南

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表