• 什么是ServletContext? 

WEB容器在启动时,它会为每一个WEB应用程序都创建一个相应的ServletContext对象。它代表当前web应用。通过使用这个对象,servlet能够记录事件,得到资源并得到来自servlet的引擎类。

能够把ServletContext看成是一个Web应用的server端组件的共享内存。在ServletContext中能够存放共享数据。

另外。ServletContext对象仅仅在web应用被关闭的时候才被销毁。不同的web应用。ServletContext各自独立存在。

最后总结来说:ServletContext即servlet容器,其内提供的方法能够在同一web应用下的全部servlet中被使用,它就是一个全局变量。

  • 怎样获取ServletContext?

容器初始化一个servlet时。会为这个servlet建一个唯一的ServletConfig。容器从DD(web.xml)中读出Servlet初始化參数,并把这些參数交给ServletConfig,然后把ServletConfig传递给servlet的init(ServletConfig config)方法。也就是说容器仅仅有在创建servlet实例时才会读DD文件里的init-param,而且在servlet一生仅仅读一次。ServletConfig对象中维护了ServletContext对象的引用,开发者在编写servlet时,能够通过ServletConfig.getServletContext方法获得ServletContext对象。

  • 怎样利用ServletContext实现数据共享?

(1)通过ServletContext对象:

在InitServlet的Service方法中利用ServletContext对象存入须要共享的数据。

/*获取ServletContext对象*/
ServletContext context = this.getServletContext();   //存入共享的数据
context.setAttribute("name", "haha"); 

在其他的Servlet中利用ServletContext对象获取共享的数据。

/*获取ServletContext对象*/
ServletContext context = this.getServletContext();   //获取共享的数据
String name = context.getAttribute("name");   System.out.println("共享的内容值是:"+name);  

(2)通过web.xml初始化參数

<web-app>   <context-param>   <param-name>url</param-name>   <param-value>jdbc:mysql://localhost:3306/4g</param-value>   </context-param>
</web-app>

在Servlet的doPost方法中測试获取初始化參数的过程例如以下:

/*获取ServletContext对象*/  ServletContext context = this.getServletContext();   /*获取指定名称的初始化參数*/
String url = context.getInitParameter("url");
  • 怎样利用ServletContext实现转发?

这里面就涉及到转发方法的选择,那么到底forward和include有何差别呢?能够说。forward方法是把请求的内容转发到另外的一个servlet。而include是把还有一个servlet处理过后的内容拿过来。以下通过一个很easy易懂的样例来说明吧。

举例来说比方在servlet1打一句out.print("我是Servlet1"),servlet2打上out.print("我是Servlet2")。

(1)使用forward方法:在servlet1中用forward命令会转到servlet2中,结果会是“我是Servlet2”;
(2)使用include方法:而在servlet1中使用include方法会依旧在servlet1的页面中,可是在输出“我是Servlet1”后继续输出“我是Servlet2”。

/*要利用ServletContext对象实现转发获取对象*/
ServletContext context = this.getServletContext();   //在request对象中存入name属性
request.setAttribute("name", "haha");   /*依据转发的地址获取 RequestDispatcher对象*/
RequestDispatcher  rd  = context.getRequestDispatcher("/index.jsp");   //调用转发方法 下面採用随意方法就可以
rd.forward(request, response);
//rd.include(request, response);

关于ServletContext先说这么多,你了解它了吗?

转载于:https://www.cnblogs.com/gcczhongduan/p/5184010.html

Java之旅(二)--- ServletContext相关推荐

  1. JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤...

    JAVA之旅(二十八)--File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤 我们可以继续了,今天说下File 一.File概述 文件的操作是非常 ...

  2. JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤

    JAVA之旅(二十八)--File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤 我们可以继续了,今天说下File 一.File概述 文件的操作是非常 ...

  3. 打怪升级之小白的大数据之旅(二十五)<Java面向对象进阶之IO流三 其他常见流>

    打怪升级之小白的大数据之旅(二十五) Java面向对象进阶之IO流三 其他常见流 上次回顾 上一章,我们学习了常用的字节流与字符流,本章,我会将其他的一些常见的流进行分享,IO流很多,我介绍不完,就挑 ...

  4. JAVA之旅(五)——this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块...

    JAVA之旅(五)--this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块 周末收获颇多,继续学习 一.this关键字 用于区分局部变量和成员变量同名的情况 ...

  5. JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐!

    JAVA之旅(三十五)--完结篇,终于把JAVA写完了,真感概呐! 这篇博文只是用来水经验的,写这个系列是因为我自己的java本身也不是特别好,所以重温了一下,但是手比较痒于是就写出了这三十多篇博客了 ...

  6. Java爬虫(二)-- httpClient模拟Http请求+jsoup页面解析

    博客 学院 下载 GitChat TinyMind 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye 写博客 发Chat 传资源 登录注册 原 Java爬虫(二)-- httpClient ...

  7. JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

    JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...

  8. 从零学习Java之旅 Part1 基本概念部分

    从零开始学Java之旅 Part1 基本概念部分 从零学习Java之旅 Part1 基本概念部分 Java学前了解知识 本人说明 Java语言版本 Java语言平台版本 Java语言特点 JDK和JR ...

  9. JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算...

    JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...

  10. JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件

    JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...

最新文章

  1. 【直播】王茂霖:二手车交易价格预测-千变万化特征工程(河北高校数据挖掘邀请赛)
  2. R语言break函数和next函数实战
  3. 下载 NCBI sra 文件
  4. cs go linux 参数,CSGO 命令大全 给新手的福利 使用设置参数
  5. 江苏有线门户网站服务器地址,江苏有线手机客户端的登录服务器
  6. Windows访问Ubuntu8.10分区
  7. [CQOI2015]任务查询系统
  8. 成功入职阿里P7后 一个技术老哥总结了这几句话
  9. BZOJ.4500.矩阵(差分约束 SPFA判负环 / 带权并查集)
  10. java 抽象类与接口的区别及其在jdk中的应用
  11. CAD填充技巧:填充图案
  12. 苹果企业开发者账号申请攻略
  13. alertmanager集群搭建
  14. e站host地址_电脑网络:ip地址详解,小学生都看的懂
  15. https://juejin.im/post/5ae081aaf265da0b767d263a
  16. 代理是什么?(HTTP代理,SOCKS代理)
  17. 被通知一个月后离职,我改了代码。。。
  18. AG7120与AG7220做HDMI信号延长放大器驱动方案讲解|AG7120与AG7220设计HDMI信号延长放大器电路参考
  19. 源代码安全检测工具PC_Lint与ITS4实例 zz
  20. 学生机房随堂测试软件,如何使用随堂测试--立即测?

热门文章

  1. mybatis 源码分析, 初始化
  2. linux 安装 zookeeper 管理端, dubbo-admin 访问 404
  3. 网站seo优化相关性需要了解哪三方面内容?
  4. 浅析充分挖掘网站外链发挥SEO优化作用的4点技巧!
  5. 贝叶斯软件genle教程_手把手教你用R的gemtc包对生存数据进行贝叶斯网状Meta分析...
  6. 蓝桥杯审核要多久_商标审核要多久?
  7. centos 查找nginx_centos7 nginx安装/启动/进程状态/杀掉进程
  8. 南方电网两栖机器人_探访国内最大5G智能电网应用区:5G机器人已替代人工巡检...
  9. 为什么爬虫用python不用java_为什么常用Python,Java做爬虫,而不是C#C++等
  10. 计算机网络相关知识 参考博客 子网掩码怎么理解 网关及网关的作用 路由器基础知识详解