- 概念:代表整个web应用,可以和程序的容器(服务器)来通信
- 功能:
- 获取MIME类型
- 是一个域对象,可以用来共享数据
- 获取文件的真实路径(服务器路径)
获取对象
-
两种方法:
- 通过request对象获取
- 通过httpservlet对象获取
-
实践
package cn.oceanstart.web;
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("/ServletContext")
public class ServletContext extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
javax.servlet.ServletContext context1 = request.getServletContext();
javax.servlet.ServletContext context2 = this.getServletContext();
System.out.println(context1 == context2); // true --- 获取的是同一对象
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
获取MIME类型
- MIME类型:在互联网通信过程中定义的一种文件数据类型
- 格式:大类型/小类型 ----- 如text/html;image/jpeg
- 实践:
package cn.oceanstart.web;
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("/ServletContext")
public class ServletContext extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、获取对象
javax.servlet.ServletContext context = this.getServletContext();
//2、定义文件名称
String filename = "a.jpg";
//3、获取MIME类型
String mimeType = context.getMimeType(filename);
System.out.println(mimeType); //image/jpeg
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
域对象:共享数据
-
ServletContext对象范围:共享所有用户所有请求的数据,范围是最大的
-
项目目录:
ServletContextDemo1内容:
package cn.oceanstart.web;
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 {
//1、获取对象
javax.servlet.ServletContext context = this.getServletContext();
//设置数据
context.setAttribute("msg", "哈哈");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
ServletContextDemo2内容
package cn.oceanstart.web;
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 {
//1、获取对象
javax.servlet.ServletContext context = this.getServletContext();
//获取数据
System.out.println( context.getAttribute("msg"));;
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
浏览器访问:
<http://localhost:8080/Response_war_exploded/ServletContextDemo1
然后访问:http://localhost:8080/Response_war_exploded/ServletContextDemo2
获取文件的服务器路径
项目路径:
ServletContextDemo1内容:
package cn.oceanstart.web;
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("/ServletContextDemo1")
public class ServletContextDemo1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、获取对象
javax.servlet.ServletContext context = this.getServletContext();
//2、获取文件的服务器路径
String realPath = context.getRealPath("/b.txt"); //web目录下资源访问
System.out.println(realPath); //E:\workspace\Demo\out\artifacts\Response_war_exploded\b.txt
//WEB-INFO目录下的资源访问
System.out.println(context.getRealPath("/WEB-INF/c.txt"));// E:\workspace\Demo\out\artifacts\Response_war_exploded\WEB-INF\c.txt
//src目录下的资源访问
System.out.println(context.getRealPath("/WEB-INFO/classes/a.txt")); //E:\workspace\Demo\out\artifacts\Response_war_exploded\WEB-INFO\classes\a.txt
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}