前述:ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放。
request,一个用户可有多个;session,一个用户一个;而servletContext,所有用户共用一个。
所以,为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息
【ServletContext的5大作用】
1.获取web的上下文路径
String getContextPath(); //返回当前页面所在应用的名字
String .getRealPath(); //以web项目根目录WebRoot作为参考点获取文件在本地的绝对路径
2.获取全局的参数
String getInitParameter(String name); //根据全局参数名获取定义在web.xml文件中指定的全局参数值
Enumeration getInitParameterNames(); //获取web.xml中所有的全局参数名构成的集合
3.和域对象相关的
void setAttribute(String name,Onject object); //向web.xml添加全局参数名和全局参数值
Object getAttribute(String name); //获取web.xml中指定全局参数名的参数值
void removeAttribute(String name); //移除web.xml中指定全局参数名的参数值
域对象(域对象就是在不同资源之前来共享数据,保存数据,获取数据)
ServletContext是我们学习的第一个域对象(Servlet共有三个域对象ServletContext、HttpServletRequest、HttpSession)
4. 请求转发的
RequestDispatcher getRequestDispatcher(String path); //用于连接跳转页面
在Servlet跳转页面:
4.1请求重定向(你找我借钱,我没有,你自己去找他借钱)
1.地址栏会改变,变成重定向到的地址
2.可以跳转到项目内的资源,也可以跳转项目外的资源
3.浏览器向服务器发出两次请求,那么不能使用请求来作为域对象来共享数据。
本方式特点:可以让用户知道自己已经跳转到其他页面了(根据地址栏) 一般用于登录后跳转,或商城购买后跳转购物车,但是除了这类情况以外最好不要用请求重定向,分情况使用
4.2请求转发(你找我借钱,我没有,我帮你去向他借钱)
1.地址栏不会改变
2.只能跳转到项目内的资源,不能跳转项目外的资源。
3.浏览器向服务器发出一次请求,那么可以使用请求作为域对象共享数据。
本方式特点:重新加载原始页面,地址栏内容不变,页面内容更新,弊端,如果商城购买后用请求转发这种方式跳转,相当于二次购买,分情况使用
5.读取web项目的资源文件
String getRealPath(String path); //以web项目根目录WebRoot作为参考点获取文件在本地的绝对路径
InputStream getResourceAsStream(String path); //以web项目根目录WebRoot作为参考点获取文件的输入流
URL getResource(String path); //常配合 classes目录下一个类.class.getClassLoader().getResource("db.properties").getPath(); 用于获取放在classes根目录下的配置文件的本地绝对地址
源地址:https://www.cnblogs.com/HigginCui/p/5970186.html