概念
- ServletContext代表整个web应用,可以和程序容器(服务器)进行通讯
- 功能:获取MIME对象;是域对象,可以共享数据;获取文件的真实(服务器)路径
如何获取ServletContext对象
- 通过request对象的getServletContext()方法进行获取
- 通过HttpServlet对象来进行获取,this.getServletContext()
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext1 = req.getServletContext();
ServletContext servletContext2 = this.getServletContext();
System.out.println(servletContext1 == servletContext2);
}
获取MINME类型
- 什么是MIME类型:在互联网通信过程当中定义的一种文件数据类型
- 格式:
大类型
/小类型
。例如,text/html,image/jpeg
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
String filename = "a.jpg";
String mimeType = servletContext.getMimeType(filename);
System.out.println(mimeType);
}
域对象:共享数据
- setAttribute(String name, Object value):设置数据
- getAttribute(String name):获取数据
- removeAttribute(String name):删除数据
- ServletContext对象的范围:可以共享所有用户搜有请求的数据
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
servletContext.setAttribute("my", "cjd");
servletContext.setAttribute("yes", "666");
}
- 注意:由于servletcontext对象的生命周期比较长,而且处于安桥的角度考虑,我们一般不使用这个对象来共享数据
如何获取服务器的路径
- 方法:
servletContext.getRealPath(String s)
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
System.out.println(servletContext.getRealPath("/b.txt"));
System.out.println(servletContext.getRealPath("/WEB-INF/c.txt"));
System.out.println(servletContext.getRealPath("/WEB-INF/classes/a.txt"));
}