javax.servlet.ServletContext接口
安装在一个服务器中的一个特定URL名字空间(比如,/myapplication)下的所有Servlet,JSP,JavaBean等Web部件的集合构成了一个Web的应用,每一个Web应用(同一JVM),容器都会有一个背景对象,而javax.servlet.ServletContext接口就提供了访问这个背景对象的途径。 Servlet实例的getServletContext方法: 得到该Servlet运行其中的这个背景对象。从这个背景对象中你可以访问如下信息或资源:(注意该方法不是ServletContext的方法而是获取背景对象的方法由于HttpServlet继承Servlet的关系GenericServlet类和HttpServlet类同时具有该方法):
· 初始化参数 ServletContext.getInitParameter(String name)。
· 存储在背境中的对象 context.getAttribute(String name)
· 与本背景关联的资源 ServletContext.getResource(String path)
· 日志 ServletContext.log(String msg)
以上所示方法均为ServletContext所提供,值得一提的是对于存储在背境中的对象访问方法常用的还有:
· context.setAttribute(String name, Object object);将特定名字绑定的任意类型的对象上。将把object对象绑定到名字name,存放在Servlet背景中,可供同一背景中的其他Servlet共享。其他Servlet可以通过context.getAttribute(String name),得到一个背景中的对象,或通过context.removeAttribute(String name)在背景中移除一个对象。
· getRequestDispatcher方法:它的作用将一个包含路径的String传递给其它资源。该路径是相对于ServletContext的根路径的。.方法示例:
RequestDispatcher rd = request.getRequestDispatcher("SecondServlet");
rd.forward(request, response);.
该方法主要用于服务器重定向技术上,servlet中重定向的方法主要有两种分别由ServletContext接口和ServletRequest接口提供但二者提供的同名方法getRequestDispatcher却有很大的不同。在ActionRouter类示例中//req.getRequestDispatcher(res.encodeURL(url)).forward(req,res);表示的用ServletRequest接口提供方法进行重定向的。