web应用中 获取ServletContet方法
ServletContet的作用与功能这里就不用说了,大家可以去百度。尤其需要记住的一点是:ServletContet提供对应用程序中所有Servlet所共有的各种资源和功能的访问,以及重要共享数据的存储。
在应用中获取ServletContext的几个方法:
一:可以新建一个上下文监听类继承org.springframework.web.context.ContextLoaderListener。并重写
public WebApplicationContext initWebApplicationContext(ServletContext servletContext) 方法。
二:在一次请求中 通过request.getSession().getServletContext()获取。
三:对于jsp页面 直接通过 application对象引用该应用的servletContext对象
ServletContet提供的接口有:(见下图:注意左边实现servletcontext接口的第一个ApplicationContext类不是spring中的ApplicationContext,而是tomcat中的一个类),
这里重点说一下下面两个个方法:
getRequestDispatcher:获取应用中的请求的转发器。springMvc通过org.springframework.web.servlet.DispatcherServlet
来寻找请求对应的Handler.应用中可以通过获取RequestDispatcher 进行请求转发。代码如下:
RequestDispatcher dis = servletContext.getNamedDispatcher("springServlet");
dis.forward(request, response);
getContext(String uri):通过这个方法可以获取同一个servlet容器(例如tomcat)下面的所有应用的servletContext.当然,这需要配置被请求的项目的META-INF目录下新增一个context.xml文件内容为:
<Context reloadable="true" crossContext="true" />
然后项目中通过下面的代码获取 另外一个应用的context.
ServletContext app1Context = request.getSession().getServletContext();
ServletContext app2Context = app1Context.getContext("/app2");
servlet的几个log方法也很有用。程序中可以通过这几个方法输出日志到文件。