什么是
ServletContext
对象
ServletContext对象,表示当前整个web应用的上下文对象(全局管理者),它是一个项目的引用,代表了当前项目。
ServletContext
对象什么时候创建?
当项目启动的时候,服务器为每一个web项目创建一个servletcontext对象.
当项目被移除的时候或者服务器关闭的时候servletcontext销毁
注意:
一个
web
应用加载时只会创建一个
ServletContext
对象!!!
获取
ServletContext
对象的方法
(
1
)
this
.getServletContext();
(
2
)
this
.getServletConfig().getServletContext();
(
3
)
request.getSession().getServletContext();
常用的方法与作用
(
1
)得到
web
应用的路径
this.
getServletContext().getContextPath();
(
2
)得到
web
应用
全局的配置参数
this
.getServletContext().getInitParameter(
"name"
);
this
.getServletContext().getInitParameterNames();
(
3
)域对象相关的
this
.getServletContext().getAttribute(
"name"
);
this
.getServletContext().setAttribute(
"name"
,
"value"
);
this
.getServletContext().removeAttribute(
"name"
);
(
4
)请求转发,配合
forward
的使用。
this.
getServletContext().getRequestDispatcher("/内部路径").
forward(request, response);
(
5
)
web
应用中加载资源文件
this.
getServletContext().getRealPath("path");
//
获得项目部署到服务器上的绝对路径,/表示根目录
this.
getServletContext().getResourceAsStream("path");
(
6
)
获取文件的mime类型
this.getServletContext().getMimeType("1.txt");
下面通过实例来演示ServletContext的使用
<!-- 配置web应用全局的参数 -->
<context-param>
<param-name>AAA</param-name>
<param-value>AAA's value</param-value>
</context-param>
<context-param>
<param-name>BBB</param-name>
<param-value>BBB's value</param-value>
</context-param>
/**
* ServletContext的使用
*/
public class ContextServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取ServletContext对象
ServletContext context = this.getServletContext();
// 获取web.xml中配置的context-param信息
String avalue = context.getInitParameter("AAA");
System.out.println("AAA=" + avalue); //AAA's value
// 获取所有的配置参数名和值
Enumeration<String> names = context.getInitParameterNames();
while (names.hasMoreElements()) {
String name = names.nextElement();
String value = context.getInitParameter(name);
System.out.println(name + "=" + value);
}
// 保存值到ServletContext域中
context.setAttribute("name", "mChenys");
// 从ServletContext域中获取值
String value = (String) context.getAttribute("name");
System.out.println("name=" + value);
// 从ServletContext域中移除值
context.removeAttribute("name");
System.out.println("移除后name=" + context.getAttribute("name"));
// 获取路径信息
String realPath = context.getRealPath("/");
System.out.println("realPath:"+realPath);//"E:\apache-tomcat-7.0.52\webapps\servlet_all\"
String contextPath = context.getContextPath();
System.out.println("contextPath:"+contextPath);// "/servlet_all"
// 获取mine信息
String mimeType = context.getMimeType("1.txt");//注意1.txt文件是放在src目录下的,部署的时候会自动放到\WEB-INF\classes目录下
System.out.println("mimeType:"+mimeType);// "text/plain"
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}