1. 在javax.servlet.Filter中直接获取
ServletContext context = config.getServletContext();
2. 在HttpServlet中直接获取
this.getServletContext()
3. 在其他方法中,通过HttpRequest获得
request.getSession().getServletContext();
4. struts2中还有常见的两种方法获得
HttpServletRequest request = ServletActionContext.getRequest(); ServletContext servletContext = ServletActionContext.getServletContext(); request.getSession(); HttpServletResponse response = ServletActionContext.getResponse();
5. 实现指定接口,由struts框架运行时注入
public class HelloWorldAction implements ServletRequestAware, ServletResponseAware, ServletContextAware{ private HttpServletRequest request; private ServletContext servletContext; private HttpServletResponse response; public void setServletRequest(HttpServletRequest req) { this.request=req; } public void setServletResponse(HttpServletResponse res) { this.response=res; } public void setServletContext(ServletContext ser) { this.servletContext=ser; } }
二、ServletConfig对象
在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。(配置在某个servlet标签或者整个web-app下)
当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。
this.getInitParameter("unicode"); this.getServletConfig().getInitParameter("unicode");
具体用法参照:http://www.cnblogs.com/NicholasLee/archive/2012/07/08/2581540.html
三、ServletContext对象
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。
this.getServletContext().getInitParameter("globalUnicode"); this.getServletConfig().getServletContext().getInitParameter("globalUnicode");