• 什么是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先说这么多,你了解它了吗?

最新文章

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

热门文章

  1. 阿里云Linux系统Nginx配置多个域名的方法
  2. CSDN开博一周年--总结、感想和未来规划
  3. React基础知识点全解
  4. js获得 json对象的个数(长度)
  5. [terry笔记]Python字符串
  6. 在Action中获取servlet API
  7. java开发必背API
  8. poj2528 Mayor&amp;#39;s posters(线段树,离散化)
  9. RandomAccessFile操作文件
  10. hdu1276(士兵队列训练问题) java集合水过