网站登录界面模板下载,免费缩短网址,果洛州网站建设公司,wordpress 慢20171.ServletContext介绍
1域对象
域对象指的是对象有作用域。也就是有作用范围。域对象可以实现数据的共享。不同作用范围的域对象#xff0c;共享数据的能力也不一样。在Servlet规范中#xff0c;一共有4个域对象。ServletContext就是其中的一个。它也是web应用中最…1.ServletContext介绍
1域对象
域对象指的是对象有作用域。也就是有作用范围。域对象可以实现数据的共享。不同作用范围的域对象共享数据的能力也不一样。在Servlet规范中一共有4个域对象。ServletContext就是其中的一个。它也是web应用中最大的作用域也叫application域。它可以实现整个应用之间的数据共享! 2ServletContext是应用上下文对象(应用域对象)每一个应用中只有一个ServletContext对象作用:可以配置和获得应用的全局初始化参数可以实现Servlet之间的数据共享生命周期:应用一加载则创建应用被停止则销毁。
2.配置和获取全局参数
【每一个应用只有一个ServletContext对象故定义在Service标签外】 1配置全局参数
!--配置全局编码--
context-paramparam-nameglobalEncoding/param-nameparam-valueutf-8/param-value
/context-param!--配置全局描述信息--
context-paramparam-nameglobalDesc/param-nameparam-value我是ServletContext的描述信息/param-value
/context-param2获取全局参数
public class ServletContextDemo1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取ServletContext对象ServletContext context this.getServletContext();//获取全局配置参数:getInitParameter(String key)根据key获取valueEnumerationString ParameterNames context.getInitParameterNames();while (ParameterNames.hasMoreElements()) {String name ParameterNames.nextElement();String value context.getInitParameter(name);System.out.println(name ... value);}}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}打印结果
-------------------------------------------------------------------
globalEncoding...utf-8
globalDesc...我是ServletContext的描述信息3.设置共享数据和获取真实路径
【每一个应用只有一个ServletContext对象故在每个Service标签内可以共享和删除数据】
public class ServletContextDemo1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取ServletContext对象ServletContext context this.getServletContext();//1.设置共享数据context.setAttribute(username,zhangsan);context.setAttribute(password,123456);System.out.println(Servlet1已存储到数据);//删除共享数据/*context.removeAttribute(username);System.out.println(Servlet1已删除数据);*//*String charset context.getInitParameter(charset);System.out.println(charset);*///2.//获取应用的虚拟目录: getContextPath()String contextPath context.getContextPath();System.out.println(contextPath);//3.根据虚拟目录获取绝对路径: getRealPath(String path)//用户通过浏览器访问的是服务器上的路径//获得虚拟目录的绝对路径(服务器中的路径)String servletRealpath context.getRealPath(/);System.out.println(servletRealpath);//获取web/a.txt的绝对路径String webPath context.getRealPath(/a.txt);System.out.println(webPath);//获取WEB-INF的绝对路径String webInPath context.getRealPath(WEB-INF/a.txt);System.out.println(webInPath);//获取src/a.txt的绝对路径String srcPath context.getRealPath(WEB-INF/classes/a.txt);System.out.println(srcPath);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}打印结果
-----------------------------------------------------------------
Servlet1已存储到数据
/day03_ServletContextDemo_war_exploded
D:\javaWeb-project\out\artifacts\day03_ServletContextDemo_war_exploded\
D:\javaWeb-project\out\artifacts\day03_ServletContextDemo_war_exploded\a.txt
D:\javaWeb-project\out\artifacts\day03_ServletContextDemo_war_exploded\WEB-INF\a.txt
D:\javaWeb-project\out\artifacts\day03_ServletContextDemo_war_exploded\WEB-INF\classes\a.txt
26-Jul-2021 21:50:03.584 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\apache-tomcat-9.0.5\apache-tomcat-9.0.50\webapps\manager]
26-Jul-2021 21:50:03.617 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[D:\apache-tomcat-9.0.5\apache-tomcat-9.0.50\webapps\manager]的部署已在[33]毫秒内完成
Servlet2已获取到数据
zhangsan...123456注 1打印情况为浏览器先访问ServletContextDemo1再访问ServletContextDemo2如果先访问ServletContextDemo2则获取的数据为null…null 2移除共享数据时移除对应的字符不会影响其他的值如移除’zhangsan‘,ServletContextDemo2获取的打印结果为null…123456