Servlet总结(2)--ServletConfig和ServletContext对象
来源:互联网 发布:python经典书籍推荐 编辑:程序博客网 时间:2024/05/22 15:00
1、ServletConfig对象
在web.xml中,可以配置一些servlet启动时的初始化参数,当servlet启动时,这些参数就被封装在ServletConfig对象当中。
<servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>ServletDemo01</servlet-name> <servlet-class>day1129.servlet01.ServletDemo01</servlet-class> <!-- 配置初始化 --> <init-param> <param-name>name</param-name> <param-value>Errol</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>123</param-value> </init-param> <init-param> <param-name>charset</param-name> <param-value>UFT-8</param-value> </init-param> </servlet>
Servlet类的init方法:
public void init(ServletConfig config) throws ServletException { // Put your code here this.config = config;//获取初始化参数 }
在Servlet启动时调用init()方法,就会将web.xml配置的初始化参数自动加载到ServletConfig对象当中。
ServletConfig对象通过Servlet对象的getServletConfig()方法获取。
如果我们需要将初始化参数获取出来,就需要用到Enumeration,对config进行遍历。
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { sop("doGet:"+i++); response.setContentType("text/html"); PrintWriter out = response.getWriter(); /* * 获取初始化参数 */ String paramUser = this.config.getInitParameter("name"); out.print(paramUser); out.print("<hr>"); //获取所有初始化参数 Enumeration<String> e = config.getInitParameterNames(); while(e.hasMoreElements()){ String name = e.nextElement(); String value = config.getInitParameter(name); out.print(name + "=" + value+ "<br>"); } out.print("<hr>"); out.close(); }
这样,在浏览器上访问这个servlet就可以在页面上输出获取到的初始化参数
2、ServletContext对象,上下文对象
代表当前web应用,web容器在启动是的时候,会对每一个web应用创建一个ServletContext对象,我们需要通过ServletConfig对象来获取ServletContext对象:
ServletContext context = this.getServletConfig().getServletContext();
总结,ServletContext对象的获取
1.在javax.servlet.Filter中直接获取
ServletContext context = config.getServletContext();
2.在HttpServlet中直接获取
this.getServletContext()
3.在其他方法中,通过HttpRequest获得
request.getSession().getServletContext();
ServletContext对象的作用是什么??
1)通过相对路径获取绝对路径
通过ServletContext对象可以获取绝对路径
//获取文件的路径String filePath = this.getServletContext().getRealPath("中文文件.txt");
2)可以获取容器的附加信息
如web应用初始化参数(看清楚,是web应用的初始化参数,ServletConfig可以获取的是Servlet的初始化参数,虽然都存放在web.xml文件中,但是标签不一样),例子
web.xml文件配置
<!-- Web应用的初始化 --> <context-param> <param-name>servlet01</param-name> <param-value>这里是Servlet01请求</param-value> </context-param> <context-param> <param-name>servlet02</param-name> <param-value>这里是Servlet02请求</param-value> </context-param>
Servlet类中可以context初始化参数
//获取web应用的初始化参数ServletContext context = this.getServletContext();String contextInitParam = context.getInitParameter("servlet02");
3、多个Servlet通过ServletContext对象实现数据共享
也就是可以将变量设置为全局变量,这里的全局指的是所有的Servlet
例如:
Servlet1
//Context对象可是实现servlet之间的数据共享String data = "sdofhgaouifhgaoifhidshfiouahef"; ServletContext context = this.getServletConfig().getServletContext();context.setAttribute("DATA", data)
Servlet2
//这里通过context对象可以获共享数据ServletContext context = this.getServletConfig().getServletContext();String data = (String)context.getAttribute("DATA");//获取共享数据out.print("共享数据="+data+ "<hr>");
这里可以发现,在Servlet1中将变量data放到ServletContext对象,在Servlet2中通过ServletContext对象也能得到该变量,所以,ServletContext对象是全局的储存信息的空间,服务器开始, 其就存在,服务器关闭,其才释放。request,一个用户可有多个;session,一个用户一个;而servletContext,所有用户共用一 个。所以,为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息。
- Servlet总结(2)--ServletConfig和ServletContext对象
- Servlet总结-ServletConfig、ServletContext
- (五)Servlet就是这样-ServletConfig和ServletContext对象
- 【Servlet】ServletConfig和ServletContext
- Servlet、ServletConfig和ServletContext
- ServletConfig和ServletContext对象
- ServletContext和ServletConfig对象
- ServletContext和ServletConfig对象
- ServletConfig和ServletContext对象
- ServletConfig和ServletContext对象
- ServletConfig和ServletContext 总结
- Servlet的学习(二)-ServletConfig对象和ServletContext对象
- servlet-01 servletConfig和servletContext
- Servlet之ServletConfig和ServletContext
- Servlet概述以及ServletConfig 和ServletContext对象的作用
- Servlet知识详解(一)ServletContext对象 和 ServletConfig对象学习笔记
- javaweb-day05-5&6&7(Servlet - ServletConfig对象 和 ServletContext对象)
- ServletConfig对象和ServletContext对象
- Retrofit 设置 超时时间
- flume学习(五):使用hive来分析flume收集的日志数据
- 为什么会出现雷粉?他们为什么会流失?怎样维护和粉丝之间的关系?
- 斐讯K1s刷华硕固件
- Crowdsourcing Logistics
- Servlet总结(2)--ServletConfig和ServletContext对象
- Html+Css实现三栏布局响应式
- Intel RealSense学习之QT5+Open CV环境搭建
- The instruction of Parachute System in IPhone7
- 如何阅读luajit的代码——用vs调试篇
- 使用图片单元优化重复图片背景
- 维吉尼亚密码破解实验报告
- 加速想象力(北京)技术研发中心正式挂牌
- 评价分布式系统的常用指标