ServletContext与ServletConfig
-
-运行在JVM.上的每一个web应用程序都有一 个与之对应的Servlet
-
上下文(Servlet运行环境)Servlet API提供ServletContext接口用来表示Servlet上下文
-
ServletCo-ntext对象可以被web应用程序中的所有servlet访问
-
ServletContext对象是web服务器中的一个已知路径的根
原理:
-
ServletContext对象由服务器进行创建,一个项目只有一个对象。 不管在项目的任意位置进行获取得到的都是同一个对象, 那么不同用户发起的请求获取到的也就是同一个对象了,该对象 用户共同拥有。
作用:
解决不同用户得数据共享问题
特点:
-
由服务器创建
-
所有用户共享同一个ServletContext对象
-
所有的Servlet都可以访问到同一个ServletContext中的属性
-
每一个web项目对象的是一个ServletContext
用法:
-
void setAttribute(String name,Object obj) 设置共享属性
-
Object getAttribute(String name) 读取共享属性
-
void removeAttribute(String name) 移除共享属性
-
ServletContext getContext(String uri) 获取指定uri的上下文对象
-
String getContextPath() 返回web程序的上下文路径
-
String getInitParameter(String param) 获取.上下文初始化参数
-
String getRealPath(String path) 返回资源在服务器上的真实路径
-
RequestDispatcher getRequestDispatcher(String path) 返回一个包装了路径信息的Dispatcher
//设置ServletContext对象 //1. 常用! ServletContext context1 =this.getServletContext(); //2. ServletContext context2 =this.getServletConfig().getServletContext(); //3. ServletContext context3 =request.getServletContext(); //设置ServletContext属性值 ServletContext servletContext = this.getServletContext(); servletContext.setAttribute("111","xinsiwei"); //获取ServletContext属性值 ServletContext servletContext = this.getServletContext(); String value = (String) servletContext.getAttribute("111"); System.out.println(value); //其他用途 //1.获取wem.xml中配置的公共属性 <context-param> <param-name>beijing</param-name> <param-value>huanyingnin!</param-value> </context-param> String value = servletContext.getInitParameter("beijing"); System.out.println(value); //2.获取某个文件的绝对路径 String path= servletContext.getRealPath("web.xml"); System.out.println(path); //获取项目的虚拟目录路径 String path2= servletContext.getContextpath(); System.out.println(path);
ServletConfig
作用:
-
方便每一个servlet获取自己单独的属性配置
特点:
-
每一个servlet单独拥有一个ServletConfig对象
使用:
//在web.xml文件中servlet中添加 <init-param> <param-name>china</param-name> <param-value>beijing</param-value> </init-param> ServletConfig config = this.getServletConfig(); String value = config.getInitParameter("china"); System.out.println(value); //获取所有的key Enumeration<String> initParameterNames = config.getInitParameterNames(); while (initParameterNames.hasMoreElements()){ String key = initParameterNames.nextElement(); String value2 = config.getInitParameter(key); System.out.println(key+"-------"+value2);