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先说这么多,你了解它了吗?
最新文章
- Cesium原理篇:5最长的一帧之影像
- Git从码云Clone代码到本地
- jquery获取父元素及祖先元素
- kali安装谷歌浏览器的方法及启动问题的解决
- EUI Scroller实现图片轮播 组件 ItemScroller
- macbook 放flash发烫,转html5
- 关于JSP页面字段属性设为disabled或者readonly所带来的问题总结
- suds调用webservice
- Atitit 网络爬虫与数据采集器的原理与实践attilax著 v2
- poj 3625 Building Roads
- Linux下面对于VIM编辑器的代码折叠使用与screen
- SQL远程备份
- UILTView经典知识点练习
- .net momeryStream 读取为空问题
- Codeforces Round #527 (Div. 3) C. Prefixes and Suffixes
- SaaS服务和个性化需求,就不能鱼和熊掌兼得吗?
- Log4j2 简介
- js同步、异步、回调的执行顺序以及闭包的理解
- C# Chart控件教程
- 什么是CSS盒模型及利用CSS对HTML元素进行定位的实现(含h5/css3新增属性)