ServletContext –- 代表当前web应用,web容器在启动时,它会为每个web应用程序创建一个对应的servletContext对象
怎么获取servletContext
This.getServletContext();
作用:
- 作为域对象可以再整个web应用范围内共享数据
域对象: 在一个可以被看见的范围内共享数据用到对象
作用范围:整个web应用范围内共享数据
生命周期:服务器启动,web应用加载后创建出servletContext对象后,域产生。当web应用被移除容器或服务器关闭,随着web应用的销毁,域销毁
setAttribute(String, Object);
getAttribute(String);
- 获取web应用的初始化参数
在web.xml中添加
<context-param> <param-name>username</param-name> <param-value>123</param-value> </context-param>
代码中使用方法:
ServletContext context = this.getServletContext(); Enumeration enumeration = context.getInitParameterNames(); while(enumeration.hasMoreElements()){ String name = (String) enumeration.nextElement(); String value = context.getInitParameter(name); System.out.println(name+":"+value); }
请求参数 parameter--- 浏览器发送过来的请求中的参数信息
初始化参数 initparameter --- 在web.xml中为servlet或servletContext配置的初始化时带有的基本参数
域属性 attribute --- 四大作用域中存取的键值对
- 实现servlet的转发
重定向:302+Location,两次请求两次响应
请求转发:服务器内部进行资源流转,请求转发是一次请求一次响应实现资源流转
RequestDispatcher dispatcher = null; dispatcher = this.getServletContext().getRequestDispatcher("/servlet/xxx "); dispatcher.forward(request, response);
- 加载资源文件
在Servlet中读取资源文件时:
如果写相对路径和绝对路径,由于路径将会相对于程序启动的目录--在web环境下,就是tomcat启动的目录即tomcat/bin--所有找不到资源
如果写硬盘路径,可以找到资源,但是只要一换发布环境,这个硬盘路径很可能是错误的,同样不行.
为了解决这样的问题ServletContext提供了getRealPath方法,在这个方法中传入一个路径,这个方法的底层会在传入的路径前拼接当前web应用的硬盘路径从而得到当前资源的硬盘路径,这种方式即使换了发布环境,方法的底层也能得到正确的web应用的路径从而永远都是正确的资源的路径
This.getServletContext().getRealPath(“文件名”);
如果在非servlet环境下要读取资源文件时可以采用类加载器加载文件的方式读取资源,根目录在classes目录
获取文件的路径 This.class.getClassLoader().getResource(文件名).getPath();