通过前面知识点的学习,我们对于请求的处理已经可以说比较灵
活了,但是还不够。我们再介绍两个重要的对象 ServletContext 对象
和 ServletConfig 对象

ServletContext 对象:

问题:
Request 解决了一次请求内的数据共享问题,session 解决了用户不同请求的数据共享问题,那么不同的用户的数据共享该怎么办呢?
解决:
使用 ServletContext 对象
作用:
解决了不同用户的数据共享问题
原理:
ServletContext 对象由服务器进行创建,一个项目只有一个对象。不管在项目的任意位置进行获取得到的都是同一个对象,那么不同用户发起的请求获取到的也就是同一个对象了,该对象由用户共同拥有。
特点:
服务器进行创建
用户共享
一个项目只有一个
生命周期:
服务器启动到服务器关闭
作用域:
项目内使用:
获取 ServletContext 对象
使用作用域进行共享数据流转
获取 web.xml 中的全局配置
获取 webroot 下项目资源流对象
获取 webroot 下资源绝对路径
案例:网页浏览器次数统计,详见源码

ServletConfig 对象:

问题:
使用 ServletContext 对象可以获取 web.xml 中的全局配置文件,web.xml 中每个 Servlet 也可以进行单独的配置,那么该怎么获取配置信息呢?
解决:
使用 ServletConfig 对象
作用:
ServletConfig 对象是 Servlet 的专属配置对象,每个 Servlet 都单独拥有一个 ServletConfig 对象,用来获取 web.xml 中的配置信息。
使用:
获取 ServletConfig 对象
获取 web.xml 中 servlet 的配置信息

ServletContext示例

import java.io.IOException;
import java.io.InputStream;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*** ServletContext对象学习:*        问题:*            不同的用户使用相同的数据*       解决:*            ServletContext对象*       特点:*            服务器创建*          用户共享*       作用域:*            整个项目内*      生命周期:*           服务器启动到服务器关闭*        使用:*             获取ServletContext对象*                     //第一种方式:ServletContext sc=this.getServletContext();//第二种方式:ServletContext sc2=this.getServletConfig().getServletContext();//第三种方式:ServletContext sc3=req.getSession().getServletContext();*             使用ServletContext对象完成数据共享*                   //数据存储*                         sc.setAttribute(String name, Object value);*                    //数据获取*                         sc.getAttribute("str") 返回的是Object类型*                  注意:*                         不同的用户可以给ServletContext对象进行数据的存取。*                       获取的数据不存在返回null。*            获取项目中web.xml文件中的全局配置数据*                     sc.getInitParameter(String name); 根据键的名字返回web.xml中配置的全局数据的值,返回String类型。*                                                       如果数据不存在返回null。*                   sc.getInitParameterNames();返回键名的枚举*                 配置方式:注意 一组<context-param>标签只能存储一组键值对数据,多组可以声明多个  <context-param>进行存储。*                      <context-param><param-name>name</param-name><param-value>zhangsan</param-value></context-param>作用:将静态数据和代码进行解耦。获取项目webroot下的资源的绝对路径。String path=sc.getRealPath(String path);  获取的路径为项目根目录,path参数为项目根目录中的路径获取webroot下的资源的流对象InputStream is = sc.getResourceAsStream(String path);注意:此种方式只能获取项目根目录下的资源流对象,class文件的流对象需要使用类加载器获取。path参数为项目根目录中的路径* * * @author MyPC**/
public class ServletContextServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//获取ServletContext对象//第一种方式:ServletContext sc=this.getServletContext();//第二种方式:ServletContext sc2=this.getServletConfig().getServletContext();//第三种方式:ServletContext sc3=req.getSession().getServletContext();System.out.println(sc==sc2);System.out.println(sc==sc3);//使用ServletContext对象完成数据共享//数据存储sc.setAttribute("str", "ServletContext对象学习");//获取项目web.xml的全局配置数据String str = sc.getInitParameter("name2");    // name2是web.xml中的//<context-param>//<param-name>name2</param-name>// <param-value>zhangsan</param-value>// </context-param>System.out.println("全局配置参数:"+str);//获取项目根目录下的资源的绝对路径//String path="D:\\apache-tomcat-7.0.56\\webapps\\sc\\doc\\1.txt";String path=sc.getRealPath("/doc/1.txt");System.out.println(path);//获取项目根目录下资源的流对象InputStream is = sc.getResourceAsStream("/doc/1.txt");}
}
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class ServletContextServlet2 extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//创建ServletContext对象ServletContext sc=this.getServletContext();//获取数据System.out.println("ServletContextServlet2.service()"+sc.getAttribute("str")); //str是ServletContextServletsc.setAttribute("str","ServletContext对象学习");}
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><!--配置全局数据  --><context-param><param-name>name2</param-name><param-value>zhangsan</param-value></context-param><display-name>06-ServletContext</display-name><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>ServletContextServlet</servlet-name><servlet-class>com.bjsxt.servlet.ServletContextServlet</servlet-class></servlet><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>ServletContextServlet2</servlet-name><servlet-class>com.bjsxt.servlet.ServletContextServlet2</servlet-class></servlet><servlet-mapping><servlet-name>ServletContextServlet</servlet-name><url-pattern>/context</url-pattern></servlet-mapping><servlet-mapping><servlet-name>ServletContextServlet2</servlet-name><url-pattern>/context2</url-pattern></servlet-mapping>
</web-app>

ServletConfig示例

package com.bjsxt.servlet;import java.io.IOException;import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*** ServletConfig对象学习:*         问题:*             如何获取在web.xml中给每个servlet单独配置的数据呢?*        解决:*             使用ServletConfig对象*      使用:*             获取ServletConfig对象*          获取web.xml中的配置数据* @author MyPC**/
public class ServletConfigServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//获取ServletConfig对象ServletConfig sc=this.getServletConfig();//获取web.xml中的配置数据String code=sc.getInitParameter("config");System.out.println(code);}
}

web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>07-ServletConfig</display-name><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>ServletConfigServlet</servlet-name><servlet-class>com.bjsxt.servlet.ServletConfigServlet</servlet-class><init-param><param-name>config</param-name><param-value>utf-8</param-value></init-param></servlet><servlet-mapping><servlet-name>ServletConfigServlet</servlet-name><url-pattern>/sg</url-pattern></servlet-mapping>
</web-app>

ServletContext对象、ServletConfig对象相关推荐

  1. 【Servlet】ServletContext、ServletConfig对象学习、用户登录系统完善

    总结:request.cookie.session.context的区别 这四个对象有不同级别的作用域和生命周期. (1)request:解决了一次请求内的数据共享问题(作用域:一次请求) req.s ...

  2. ServletConfig对象和ServletContext对象

    ServletConfig对象是servlet配置对象,(web.xml中的)servlet信息封装在ServletConfig对象中,因此在一个web应用可存在多个ServletConfig.Ser ...

  3. Java Servlet(三):Servlet中ServletConfig对象和ServletContext对象

    本文将记录ServletConfig/ServletContext中提供了哪些方法,及方法的用法. ServletConfig是一个抽象接口,它是由Servlet容器使用,在一个servlet对象初始 ...

  4. ServletConfig对象和ServletContext对象配置初始化参数

    ServletConfig对象 : 主要是用于加载servlet的初始化参数.在一个web应用可以存在多个 ServletConfig对象(一个Servlet对应一个ServletConfig对象) ...

  5. javaweb_笔记1(系统架构;servlet分析,注册,生命周期;Servletconfig对象(四个方法)和Servletcontext对象;http协议,get,post)

    1.关于系统架构 1.1系统架构包括 C/S架构: Client/Server(客户端/服务器) 例如电脑上安装的各种软件,qq等,需要安装特定的软件 优点: 速度快(软件中数据大部分在客户端中,少量 ...

  6. ServletConfig 对象

    ServletConfig 对象 问题: 使用 ServletContext 对象可以获取 web.xml 中的全局配置文件, 在 web.xml 中 每个Servlet 也可以进行单独的配置,那么该 ...

  7. servletConfig对象

    servletConfig对象 当Tomcat初始化一个servlet时,会将servlet配置信息封装到一个servletConfig对象中: <servlet> <servlet ...

  8. ServletContext、ServletConfig(FilterConfig)学习笔记

    ServletConfig 每个servlet对应一个ServletConfig对象,不可以被其他servlet访问. 作用: 1.通过下面防范访问web.xml文件: ServletConfig.g ...

  9. JSP的9个内置对象(隐含对象)

    JSP的9个内置对象(隐含对象) JSP内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员声明即可使用. 9个内置对象如下: page:代表当前JSP页面 request ...

最新文章

  1. 图书管理系统5W1H
  2. 此代码募集最优秀的答案
  3. jQuery将不再支持IE6/7/8
  4. 编程之美-双线程高效下载方法整理
  5. JCO连接SAP例子
  6. c 语言名称的作用域,C 作用域规则
  7. Java中List Set Map 是否有序等总结
  8. python做自动化控制postman_使用postman+newman+python做接口自动化测试
  9. java数据分析库,威力加强版
  10. C#托管代码调用C++非托管代码
  11. acm康复训练记4-world final 2017
  12. 线性规划 整数规划 01规划
  13. MVC学习笔记:MVC实现用户登录验证ActionFilterAttribute用法并实现统一授权
  14. 【apache】phpstudy中apache 隐藏入口文件index.php (解决no input file specified错误)
  15. ECTOUCH广告图片轮播间隔调整 ECTOUCH教程
  16. c语言10的10万次方,在c语言编程中 10的n次方应该怎么表达
  17. windows 10 主题美化
  18. 200plc与施耐德ATV610变频器modbus通讯
  19. 千兆网线做法和网线接法注意事项
  20. java word 在线编辑图片,_卓正软件 - PageOffice官方网站 - 在线编辑Word、Excel的Office文档控件...

热门文章

  1. leetcode 462. Minimum Moves to Equal Array Elements II
  2. 《团队-爬取豆瓣电影TOP250-设计文档》
  3. FormView用法
  4. 第10章 bit_vector位向量容器
  5. EntityFramework 4.1 如何加入项目
  6. WPF纯手工两步打造图片切割工具(二)
  7. 带你了解FPGA(1)--一些需要了解的概念
  8. java多态的简单例子_要JAVA的简单例子,继承\多态的,详细讲解运行的每一步
  9. 7-53 字符串逆序 (10 分)
  10. 结构体知识------值传递和址传递