ServletContext对象
概述
1、ServletContext是Servlet三大域对象之一。
2、每个Web应用都拥有一个ServletContext对象,该对象是Web应用程序的全局对象。
3、Tomcat服务器在启动时,会自动创建一个ServletContext对象,在关闭时,会自动销毁这个ServletContext对象。
4、每个Web应用程序只拥有一个ServletContext对象,ServletContext对象可以在整个Web应用中共享数据资源。
获取ServletContext对象
Servlet中获取Context
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、通过GenericServlet提供的方法获取
ServletContext servletContext_01 = this.getServletContext();
//2、通过ServletConfig获取
ServletContext servletContext_02 = this.getServletConfig().getServletContext();
//3、通过request的方法获取
ServletContext servletContext_03 = request.getServletContext();
//4、通过session的方法获取
ServletContext servletContext_04 = request.getSession().getServletContext();
}
SpringMVC中获取ServletContext
@RequestMapping(value = "/test")
@ResponseBody
public String test(HttpServletRequest request){
ServletContext servletContext = request.getServletContext();
System.out.println(servletContext);
return "Hello,Wolrd!";
}
配置全局初始化参数
在web.xml文件中,可以使用ServletContext配置全局初始化参数。
<context-param>
<param-name>msg</param-name>
<param-value>Hello,World!</param-value>
</context-param>
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>com.suffle.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
通过ServletContext对象的getInitParameter方法可以获取全局初始化参数,getInitParameterNames方法可以获取所有参数的名称。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = request.getServletContext();
String msg = servletContext.getInitParameter("msg");
System.out.println("msg:"+msg);
}
输出结果:msg:Hello,World!
SpringBoot配置properties
server.servlet.context-parameters.msg=Hello,World!
@RequestMapping(value = "/test")
@ResponseBody
public String test(HttpServletRequest request){
ServletContext servletContext = request.getServletContext();
String msg = servletContext.getInitParameter("msg");
return "msg:"+msg;
}
输出结果:msg:Hello,World!
全局共享数据
在同一个Web应用程序中,多个Servlet之间可以共享ServletContext对象中的数据信息。
主要是通过setAttribute(String name,Object object)方法和getAttribute(String name)方法完成。
setAttribute(String name,Object object) 设置全局共享数据
getAttribute(String name) 获取数据
removeAttribute(String name) 移除数据
获取上下文路径
通过ServletContext对象的getContextPath方法,可以获得当前Web程序的上下文路径。