Java之旅(二)--- ServletContext
什么是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相关推荐
- JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤...
JAVA之旅(二十八)--File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤 我们可以继续了,今天说下File 一.File概述 文件的操作是非常 ...
- JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤
JAVA之旅(二十八)--File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤 我们可以继续了,今天说下File 一.File概述 文件的操作是非常 ...
- 打怪升级之小白的大数据之旅(二十五)<Java面向对象进阶之IO流三 其他常见流>
打怪升级之小白的大数据之旅(二十五) Java面向对象进阶之IO流三 其他常见流 上次回顾 上一章,我们学习了常用的字节流与字符流,本章,我会将其他的一些常见的流进行分享,IO流很多,我介绍不完,就挑 ...
- JAVA之旅(五)——this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块...
JAVA之旅(五)--this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块 周末收获颇多,继续学习 一.this关键字 用于区分局部变量和成员变量同名的情况 ...
- JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐!
JAVA之旅(三十五)--完结篇,终于把JAVA写完了,真感概呐! 这篇博文只是用来水经验的,写这个系列是因为我自己的java本身也不是特别好,所以重温了一下,但是手比较痒于是就写出了这三十多篇博客了 ...
- Java爬虫(二)-- httpClient模拟Http请求+jsoup页面解析
博客 学院 下载 GitChat TinyMind 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye 写博客 发Chat 传资源 登录注册 原 Java爬虫(二)-- httpClient ...
- JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算
JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...
- 从零学习Java之旅 Part1 基本概念部分
从零开始学Java之旅 Part1 基本概念部分 从零学习Java之旅 Part1 基本概念部分 Java学前了解知识 本人说明 Java语言版本 Java语言平台版本 Java语言特点 JDK和JR ...
- JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算...
JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...
- JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件
JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...
最新文章
- 【直播】王茂霖:二手车交易价格预测-千变万化特征工程(河北高校数据挖掘邀请赛)
- R语言break函数和next函数实战
- 下载 NCBI sra 文件
- cs go linux 参数,CSGO 命令大全 给新手的福利 使用设置参数
- 江苏有线门户网站服务器地址,江苏有线手机客户端的登录服务器
- Windows访问Ubuntu8.10分区
- [CQOI2015]任务查询系统
- 成功入职阿里P7后 一个技术老哥总结了这几句话
- BZOJ.4500.矩阵(差分约束 SPFA判负环 / 带权并查集)
- java 抽象类与接口的区别及其在jdk中的应用
- CAD填充技巧:填充图案
- 苹果企业开发者账号申请攻略
- alertmanager集群搭建
- e站host地址_电脑网络:ip地址详解,小学生都看的懂
- https://juejin.im/post/5ae081aaf265da0b767d263a
- 代理是什么?(HTTP代理,SOCKS代理)
- 被通知一个月后离职,我改了代码。。。
- AG7120与AG7220做HDMI信号延长放大器驱动方案讲解|AG7120与AG7220设计HDMI信号延长放大器电路参考
- 源代码安全检测工具PC_Lint与ITS4实例 zz
- 学生机房随堂测试软件,如何使用随堂测试--立即测?
热门文章
- mybatis 源码分析, 初始化
- linux 安装 zookeeper 管理端, dubbo-admin 访问 404
- 网站seo优化相关性需要了解哪三方面内容?
- 浅析充分挖掘网站外链发挥SEO优化作用的4点技巧!
- 贝叶斯软件genle教程_手把手教你用R的gemtc包对生存数据进行贝叶斯网状Meta分析...
- 蓝桥杯审核要多久_商标审核要多久?
- centos 查找nginx_centos7 nginx安装/启动/进程状态/杀掉进程
- 南方电网两栖机器人_探访国内最大5G智能电网应用区:5G机器人已替代人工巡检...
- 为什么爬虫用python不用java_为什么常用Python,Java做爬虫,而不是C#C++等
- 计算机网络相关知识 参考博客 子网掩码怎么理解 网关及网关的作用 路由器基础知识详解