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("/ServletContextDemo")
public class TestServletContextOServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取web应用的全局域对象
ServletContext servletContext = req.getServletContext();
ServletContext servletContext1 = this.getServletContext();
System.out.println(servletContext+"/"+servletContext1);
//org.apache.catalina.core.ApplicationContextFacade@7b4a2189/
//org.apache.catalina.core.ApplicationContextFacade@7b4a2189
/*
* 以上就是获取ServletContext对象的两种方法
* 说明该对象可以在req中获取也可以在资源本身获取
* */
System.out.println("-------------------------------------------------------------------------------------------------");
//context-type: 服务器告诉浏览器本次响应消息的响应体的数据格式以及编码格式
/*
* 通过对resp的学习可知
* 服务器能在响应信息的响应头中
* 设置响应体消息的数据格式以及编码格式
* 那么响应体的数据格式是什么呢
* 默认情况下是
* text/html
*
* 这里要了解一个概念
* 什么是Mime类型
* 格式就是
* 大类型/小类型
* 例如text/html image/jpg
* 可见mime类型就是泛指所有的响应体的数据格式
*
* ServletContext对象的功能之一就是能够获取mime类型
* */
String filename = "a.jpg";
String mimeType = servletContext.getMimeType(filename);
System.out.println(mimeType);
/*以上就是Servletcontext的第一个功能: 获取mime类型*/
System.out.println("-------------------------------------------------------------------------------------------------");
/*void setAtribute(String name, Object object); 存储数据
Object getAttribute(String name); 通过键获取值
void removeAttribute(String name); 移除一个键值对
作为范围最大的域对象
自然少不了共享数据的功能
这个域对象共享的是所有用户的所有请求的数据
这个对象要谨慎使用
*/
System.out.println("-------------------------------------------------------------------------------------------------");
/*ServletContext对象最后一个功能就是
* 可以很方便的获取web应用中的资源的地址
*
* 说到地址
* 首先要了解一些概念
* 什么是绝对地址
* 什么是相对地址
* 什么是本地项目文件的地址
* 什么是服务器资源地址
*
*
* Servletcontext对象正好可以十分方便的获取到资源的服务器路径
* 使用getRealPath(String 本地项目文件路径)
*
* 以获取一个配置文件为例
* 在一个EE项目中
* 文件存放的位置有一下三个位置
* 一个是src下
* 一个是web目录下
* 一个是web的WEB-INF目录下
*
*
**/
String a = servletContext.getRealPath("/WEB-INF/classes/a.xml"); //D:\IdeaProjects\88\out\artifacts\816_ServletContext_war_exploded\WEB-INF\classes\a.xml
String b = servletContext.getRealPath("/b.xml"); //D:\IdeaProjects\88\out\artifacts\816_ServletContext_war_exploded\b.xml
String c = servletContext.getRealPath("/WEB-INF/c.xml"); //D:\IdeaProjects\88\out\artifacts\816_ServletContext_war_exploded\WEB-INF\c.xml
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
全局域对象ServletContext
最新推荐文章于 2024-10-06 20:16:20 发布
关键词由CSDN通过智能技术生成