第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的主要内容,如果未能解决你的问题,请参考以下文章