第4章 Servlet:ServletContext

Posted 小凳子的学习天地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第4章 Servlet:ServletContext相关的知识,希望对你有一定的参考价值。

1.1 ServletContext对象:

初始化:ServletContext对象是在WEB应用程序装载时初始化的。

(1)public String getInitParameter(String name):返回指定餐厨名的字符串参数值,如果参数不存在则返回null
(2)public Enumeration getInitParameterNames():返回一个包含所有初始化参数名的Enumeration对象
应用程序初始化参数在web.xml中使用<context-param>元素定义,不能使用注解定义:
<context-param>
  <context-name></context-name>
  <context-value></context-value>
</context-param>
注意:<context-param>元素是针对整个应用的,所以不能嵌套在<servlet>元素中,该元素是<web-app>元素的直接子元素。

通过ServletContext对象获取资源

(1)public URL getResource(String path):返回由给定路径指定的资源的URL对象。这里,路径必须是以“/”开头,它相对该web应用程序的文档根目录。
(2)public InputStream getResourceAsStream(String path):如果想从资源商获得一个InputStream对象,这是一个简捷的方法,等价于getResource(path).openStream()。
(3)public String getRealPath(String path):返回给定的相对路径的绝对路径。
getResource()和getResourceAsStream()的局限:
1.不能传递任何活动资源的URL,例如将JSP页面会、或Servlet传递给该方法。
2.如使用不当,可能成为安全漏洞,它可以读取Web应用程序下的所有文件,包括WEB-INF目录下的文件。

注:可以使用ServletContext.getRequestDispatcher()实现请求转发,但是它只能以传递以“/”开头的路径,而ServletRequest.getRequestDispatcher()可以传递一个相对路径。

 共享数据:

  • HttpServletRequest对象:仅在请求的生存期中可以被访问
  • HttpSession对象:仅在会话的生存期中可以被访问
  • ServletContext对象:可以在web应用程序的生存期中被访问

登录日志

使用ServletContext接口的log()可以将指定的消息写到服务器的日志文件中,该方法有下面两种格式:

  • public void log(String msg):参数msg为写到日志文件中的消息。默认情况下把日志信息写到<tomcat-install>\\logs\\localhost.2016-03-10.log文件中,文件名中的日期为写入日志的日期。
  • public void log(String msg,Throwable throwable):将msg指定的消息和异常的栈跟踪信息写入日志文件中。

案例分析:

 

以上是关于第4章 Servlet:ServletContext的主要内容,如果未能解决你的问题,请参考以下文章

ServletContex获取文件内容路径学习笔记

servlet回顾

第3章 Servlet概述

Java开发工程师(Web方向) - 01.Java Web开发入门 - 第3章.Servlet应用

第9章WEB09-Servlet篇

Java开发工程师(Web方向) - 01.Java Web开发入门 - 第4章.Maven