ServletContext接口,表示应用,Tomcat启动的时候创建一个对象,Tomcat关闭对象销毁,在整个Web的生命周期中,只有一个对象,表示的就是当前应用.
如何获得该对象:
1:若在Servlet中:
ServletContext ctx = super.getServletContext();
GenericServlet 实现了Servlet和ServletConfig接口,而getServletContext方法就在ServletConfig接口中.
2:通过请求对象获取:
ServletContext ctx2 = req.getServletContext();:从Tomcat7开始支持
ServletContext ctx3 = req.getSession().getServletContext();//古老
常用方法:
1):String getContextPath():
获取当前应用的上下文路径.
2):String getRealPath(String path):
获取某个资源的绝对路径
//在做文件下载的时候使用该方法根据指定的相对路径获取文件在磁盘中的绝对路径
3):全局初始化参数:
先看传统的Servlet的初始化参数:
因为配置在当前ServletContextDemo中,所以只能被ServletContextDemo使用,其他Servlet无法使用.
而在开发中,多个Web组件(Servlet/Filter)可以拥有共同的初始化参数,此时只能配置N次,不利于维护.
解决方案:
图片1.png使用全局的初始化参数,Web组件都可以共用,配置问web.xml文件中.
注意:
获取全局的初始化参数,就再也不能使用ServletConfig对象.getInitParameter来获取了.只能使用,
ServletContext对象.getInitParameter(String paramName);
思考题:
说说以下的区别:
request.getParameter(String name)://获取用户输入的参数信息
request.getAtribute(String name): //获取程序员自己设置的共享信息
ServletConfig对象.getInitParameter(String name);
ServletContext对象.getInitParameter(String name);
网友评论