ServletContext对象
概念
- 代表整个web应用,可以和程序的容器(服务器)来通信(交互数据)
获取
- 通过
request对象获取
- 调用
request.getServletContext();
- 通过
HttpServlet获取
- 调用
this.getServletContext();
注意:
2个调用方法获取到的ServletContext都是一样的。因此,更多的时候会使用this.getServletContext();
功能
- 获取mine类型
- 域对象:共享数据
- 获取文件的真实路径(服务器路径)
Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
package cn.itcast.web.servletcontext;
import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;
@WebServlet("/servletContextDemo1") public class ServletContextDemo1 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /* ServletContext对象获取: 1. 通过request对象获取 request.getServletContext(); 2. 通过HttpServlet获取 this.getServletContext(); */
//1. 通过request对象获取 ServletContext context1 = request.getServletContext(); //2. 通过HttpServlet获取 ServletContext context2 = this.getServletContext();
System.out.println(context1); System.out.println(context2);
System.out.println(context1 == context2);//true
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }
|
控制台输出????

1.获取mine类型
- 格式:
大类型/小类型
- 比如,
text/html 、 image/jpeg 等等
mine类型
调用方法
String getMimeType(String file)
Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
package cn.itcast.web.servletcontext;
import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;
@WebServlet("/servletContextDemo2") public class ServletContextDemo2 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*
ServletContext功能: 1. 获取MIME类型: * MIME类型:在互联网通信过程中定义的一种文件数据类型 * 格式: 大类型/小类型 text/html image/jpeg
* 获取:String getMimeType(String file) 2. 域对象:共享数据 3. 获取文件的真实(服务器)路径 */ //2. 通过HttpServlet获取 ServletContext context = this.getServletContext();
//3. 定义文件名称 String filename = "a.jpg";//image/jpeg
//4.获取MIME类型 String mimeType = context.getMimeType(filename); System.out.println(mimeType);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }
|
2.域对象
- 共享数据
- ServletContext对象范围:所有用户所有请求的数据
调用方法
- 设置数据
setAttribute(String name,Object value)
- 获取数据
getAttribute(String name)
removeAttribute(String name)
Demo
ServletContextDemo3.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
package cn.itcast.web.servletcontext;
import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;
@WebServlet("/servletContextDemo3") public class ServletContextDemo3 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*
ServletContext功能: 1. 获取MIME类型:
2. 域对象:共享数据 3. 获取文件的真实(服务器)路径 */
//2. 通过HttpServlet获取 ServletContext context = this.getServletContext();
//设置数据 context.setAttribute("msg","haha");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }
|
ServletContextDemo4.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
package cn.itcast.web.servletcontext;
import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;
@WebServlet("/servletContextDemo4") public class ServletContextDemo4 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*
ServletContext功能: 1. 获取MIME类型:
2. 域对象:共享数据 3. 获取文件的真实(服务器)路径 */
//2. 通过HttpServlet获取 ServletContext context = this.getServletContext();
//获取数据 Object msg = context.getAttribute("msg"); System.out.println(msg);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }
|
3.获取文件的真实路径(服务器路径)

调用方法
String getRealPath(String path)
Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
package cn.itcast.web.servletcontext;
import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException;
@WebServlet("/servletContextDemo5") public class ServletContextDemo5 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*
ServletContext功能: 1. 获取MIME类型:
2. 域对象:共享数据 3. 获取文件的真实(服务器)路径 */
// 通过HttpServlet获取 ServletContext context = this.getServletContext();
// 获取文件的服务器路径 String b = context.getRealPath("/b.txt");//工作空间(IDEA)web目录下资源访问 System.out.println(b); // File file = new File(realPath);
String c = context.getRealPath("/WEB-INF/c.txt");//工作空间(IDEA)WEB-INF目录下的资源访问 System.out.println(c);
String a = context.getRealPath("/WEB-INF/classes/a.txt");//工作空间(IDEA)src目录下的资源访问 System.out.println(a);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }
|
项目空间、工作空间的区别:视频 进度条【04:52】
注意:
-
将来配置文件/资源文件的放置的路径不一样,要会写路径的字符串写法。
-
src目录的资源路径可以使用ClassLoader(类加载器,不能获取web目录的路径)