Java EE javax.servlet中的ServletContext接口
ServletContext接口
public interface ServletContext
(https://docs.oracle.com/javaee/7/api/javax/servlet/ServletContext.html)
一、介绍
定义了一组servlet用来与其servlet容器进行通信的方法,例如,获取文件的MIME类型,调度请求或写入日志文件。
在每个JVM中的每个Web Application中,只有一个ServletContext。
而一个“Web Application”一些servlet和特定内容的集合,这些内容安装在服务器的URL命名空间的一个特定子集下(如/catalog),并可能通过一个.war文件安装。
若一个“Web Application”的部署描述符中标记其为“distributed(分布式)”的,则每个虚拟机中都会有一个context实例。这种情况下,该context不能用作共享全局信息的位置,因为它的信息并不是真正全局的,可以使用外部资源取而代之,如数据库。
ServletContext对象包含在ServletConfig对象中,而ServletConfig对象是Web服务器在Servlet进行初始化时提供给servlet的。
二、属性
1、static String ORDERED_LIBS
ServletContext属性的名称,其值(类型为java.util.List <java.lang.String>)包含WEB-INF / lib中的JAR文件的名称列表,按其网页片段名称排序。
2、static String TEMPDIR
ServletContext属性的名称,它存储由ServletContext的Servlet容器提供的私有临时目录(类型为java.io.File)
三、方法(太多了,挑重要的)
1、String getContextPath()
返回Web应用程序的上下文路径;对于默认(根)上下文,返回“ ”。
上下文路径是请求URI的一部分,用于选择请求的上下文。上下文路径始终在请求URI中首先出现(IDEA中部署Tomcat时,deployment标签页中就能自定义Application Context,例如我定义为“/hrm”,那么服务器启动后,就会自动打开“http://localhost:8080/hrm/”)。如果此上下文是以Web服务器的URL名称空间为根的“默认”上下文,则此路径将为空字符串。如果上下文不是植根于服务器名称空间的根目录,则路径以/字符开始,但不以/结尾。
一个servlet容器可能会通过多个上下文路径来匹配上下文。例如,HttpServletRequest.getContextPath()将返回请求使用的实际上下文路径,它可能与此方法返回的路径不同。此方法返回的上下文路径应被视为应用程序的主要或首选上下文路径。
2、ServletContext getContext(String uripath)
返回对应于服务器上指定URL的ServletContext对象;如果不存在或容器希望限制此访问,则返回null。
此方法允许servlet访问服务器各个部分的上下文,并根据需要从上下文获取RequestDispatcher对象。指定的路径必须以“/”开头,相对于服务器的文档根目录解释,并与此容器上托管的其他Web应用程序的上下文根相匹配。
在有安全考虑的环境中,servlet容器可能会为给定的URL返回null。
3、int getMajorVersion()
返回此servlet容器支持的Servlet API的主要版本。所有符合版本3.0的实现都必须使用此方法返回整数3。
4、int getMinorVersion()
返回此servlet容器支持的次要版本的Servlet API。所有符合版本3.0的实现都必须使用此方法返回整数0。
5、String getMimeType(String file)
返回指定文件的MIME类型,如果MIME类型未知,则返回null。
Multipurpose Internet Mail Extensions (MIME)是一种Internet标准,它将电子邮件的格式扩展到支持。
MIME类型由servlet容器的配置确定,并且可以在Web应用程序部署描述符中指定。 常见的MIME类型包括text / html和image / gif。
6、Set<String> getResourcePaths(String path)
返回Web应用程序中最长子路径与提供的路径参数匹配的资源的所有路径的目录列表;如果路径以提供的路径开始的Web应用程序中没有资源,则返回null。
指示子目录路径的path以/结尾。
返回的路径全部相对于Web应用程序的根,或者相对于Web应用程序的/ WEB-INF / lib目录内的JAR文件的/ META-INF / resources目录,并且具有前导/。
For example, for a web application containing: /welcome.html
/catalog/index.html
/catalog/products.html
/catalog/offers/books.html
/catalog/offers/music.html
/customer/login.jsp
/WEB-INF/web.xml
/WEB-INF/classes/com.acme.OrderServlet.class
/WEB-INF/lib/catalog.jar!/META-INF/resources/catalog/moreOffers/books.html getResourcePaths("/") would return {"/welcome.html", "/catalog/", "/customer/", "/WEB-INF/"},
and getResourcePaths("/catalog/") would return {"/catalog/index.html", "/catalog/products.html", "/catalog/offers/", "/catalog/moreOffers/"}.
7、URL getResource(String path) throws MalformedURLException
返回映射到指定路径的资源的URL。
8、InputStream getResourceAsStream(String path)
以InputStream对象的形式返回位于指定路径的资源。
Returns the resource located at the named path as an InputStream object.
The data in the InputStream can be of any type or length. The path must be specified according to the rules given in getResource. This method returns null if no resource exists at the specified path.
Meta-information such as content length and content type that is available via getResource method is lost when using this method.
The servlet container must implement the URL handlers and URLConnection objects necessary to access the resource.
This method is different from java.lang.Class.getResourceAsStream, which uses a class loader. This method allows servlet containers to make a resource available to a servlet from any location, without using a class loader.
9、RequestDispatcher getRequestDispatcher(String path)
返回一个RequestDispatcher对象,充当位于指定路径的资源的包装器。
RequestDispatcher对象可用于将转发请求给资源或将资源包含在响应中。 资源可以是动态的或静态的。
路径名必须以/开头,并被解释为相对于当前上下文根。 使用getContext为外部上下文中的资源获取RequestDispatcher。
如果ServletContext无法返回RequestDispatcher,则此方法返回null。
10、RequestDispatcher getNamedDispatcher(String name)
返回一个RequestDispatcher对象充当指定的Servlet的包装器;
Servlet(也可以是JSP页面)可以通过服务器管理或通过Web应用程序部署描述符给出名称。 一个servlet实例可以使用ServletConfig.getServletName()来确定它的名字。
如果ServletContext由于某种原因无法返回RequestDispatcher,则此方法返回null。
11、void log(String msg)
将指定的消息写入一个servlet日志文件,通常是一个事件日志。 servlet日志文件的名称和类型是特定于servlet容器的。
将给定Throwable异常的解释性消息和堆栈跟踪写入servlet日志文件。
servlet日志文件的名称和类型是特定于servlet容器的,通常是一个事件日志。
12、String getRealPath(String path)
例如,如果path等于/index.html,则此方法将返回服务器文件系统上的绝对文件路径,其格式为http|://<host>:<port>/<contextPath>/index.html,其中<contextPath>对应于此ServletContext的上下文路径。
返回的真实路径将采用适合运行servlet容器的计算机和操作系统的形式,包括适当的路径分隔符。
Resources inside the /META-INF/resources directories of JAR files bundled in the application's /WEB-INF/lib directory must be considered only if the container has unpacked them from their containing JAR file, in which case the path to the unpacked location must be returned.
如果servlet容器无法将给定的虚拟路径转换为真实路径,则此方法返回null。
13、String getServerInfo()
返回的字符串的形式是servername / versionnumber。例如,JavaServer Web Development Kit可能会返回字符串JavaServer Web Dev Kit / 1.0。
servlet容器可以在括号内的主字符串之后返回其他可选信息,例如JavaServer Web Dev Kit / 1.0(JDK 1.1.6; Windows NT 4.0 x86)。
14、String getInitParameter(String name)
返回一个String,其中包含上下文范围中指定的初始化参数的值,如果该参数不存在,则返回null。
此方法可以使可用的配置信息对整个Web应用程序有用。 例如,它可以提供网站管理员的电子邮件地址或保存关键数据的系统的名称。
15、Enumeration<String> getInitParameterNames()
返回全部的初始化参数的值。
16、boolean setInitParameter(String name,String value)
设定指定参数。
17、Object getAttribute(String name)
返回具有给定名称的servlet容器属性;如果没有该名称的属性,则返回null。
一个属性允许servlet容器为servlet提供这个接口尚未提供的附加信息。 有关其属性的信息,请参阅您的服务器文档。 可以使用getAttributeNames检索支持的属性列表。
该属性作为java.lang.Object或某个子类返回。
属性名称应遵循与包名称相同的约定。 Java Servlet API规范保留与java。*,javax。*和sun。*匹配的名称。
18、Enumeration<String> getAttributeNames()
返回包含此ServletContext中可用的属性名称的Enumeration。
可以使用getAttribute(java.lang.String) 方法获取指定属性的值。
19、void setAttribute(String name,Object object)
在此ServletContext中将对象绑定到给定的属性名称。 如果指定的名称已用于某个属性,则此方法将用新属性替换旧属性。
如果在ServletContext上配置了监听器,容器会相应地通知它们。
如果传递一个空值,则效果与调用removeAttribute()相同。
属性名称应遵循与包名称相同的约定。 Java Servlet API规范保留与java.*,javax.*和sun.*匹配的名称。
20、void removeAttribute(String name)
从此ServletContext中删除具有给定名称的属性。 删除后,后续调用getAttribute(java.lang.String)来检索属性的值将返回null。
如果在ServletContext上配置了监听器,容器会相应地通知它们。
21、String getServletContextName()
返回与此ServletContext相对应的Web应用程序的ContextServlet的名称,它通过Web应用程序的部署描述符中的 display-name元素指定。
返回null,如果在web.xml中没有指定。
22、ServletRegistration.Dynamic addServlet(String servletName, String className)
在通过调用addServlet(String, Servlet) 向此ServletContext注册之前,可以对返回的Servlet实例进行进一步定制。
给定的Servlet类必须定义一个零参数构造函数,用于实例化它。
23、FilterRegistration.Dynamic addFilter(String filterName,String className)
将具有给定名称和类名的过滤器添加到此servlet上下文中。
注册的过滤器可以通过返回的FilterRegistration object.ent构造函数进一步配置,该构造函数用于实例化它。
还有其它两个重载的addFilter()
24、<T extends Filter> T createFilter(Class<T> clazz) throws ServletException
实例化给定的Filter类。
在通过调用addFilter(String,Filter)向此ServletContext注册之前,可能会进一步定制返回的Filter实例。
给定的Filter类必须定义一个零参数构造函数,用于实例化它。
如果给定的clazz代表Managed Bean,则此方法支持资源注入。 有关托管Bean和资源注入的更多详细信息,请参阅Java EE平台和JSR 299规范。
25、中间有一些关于cookie和session获取、设置的函数,省略了。
26、void addListener(String className)
将具有给定类名的侦听器添加到此ServletContext中。
具有给定名称的类将使用与由此ServletContext表示的应用程序关联的类加载器加载,并且必须实现以下一个或多个接口:
- ServletContextAttributeListener
- ServletRequestListener
- ServletRequestAttributeListener
- HttpSessionAttributeListener
- HttpSessionIdListener
- HttpSessionListener
还有两个重载函数,功能是一样的。
27、<T extends EventListener> T createListener(Class<T> clazz) throws ServletExceptio
实例化指定的listener类;
在通过调用addListener(EventListener)向此ServletContext注册之前,可以对返回的EventListener实例进行进一步自定义。
给定的EventListener类必须定义一个零参数构造函数,用于实例化它。
28、JspConfigDescriptor getJspConfigDescriptor()
获取由此ServletContext表示的Web应用程序的web.xml和web-fragment.xml描述符文件聚合而成的<jsp-config>相关配置。
29、ClassLoader getClassLoader()
获取由此ServletContext表示的Web应用程序的类加载器。
30、String getVirtualServerName()
返回部署ServletContext的逻辑主机的配置名称。 Servlet容器可能支持多个逻辑主机。
此方法必须为部署在逻辑主机上的所有Servlet上下文返回相同的名称,并且此方法返回的名称必须是不同的,每个逻辑主机都是稳定的,并且适用于将服务器配置信息与逻辑主机相关联。
预期或不要求返回的值等同于逻辑主机的网络地址或主机名。
Java EE javax.servlet中的ServletContext接口的更多相关文章
- Java EE javax.servlet中的ServletResponse接口
ServletResponse接口 public interface ServletResponse 子接口:HttpServletResponse 实现类:HttpServletResponseWr ...
- Java EE javax.servlet中的ServletRequest接口
ServletRequest接口 public interface ServletRequest 子接口:HttpServletRequest 实现类:HttpServletRequestWrappe ...
- Java EE javax.servlet中的RequestDispatcher接口
RequestDispatcher接口 public interface RequestDispatcher 一.介绍 定义一个对象,从客户端接收请求并将其发送到服务器上的任何资源(例如servlet ...
- Java EE javax.servlet中的ServletConfig接口
ServletConfig接口 public interface ServletConfig 实现类:GenericServlet.HttpServlet 一.介绍 一个供servlet容器使用配置对 ...
- Java EE javax.servlet中的Servlet接口
Servlet接口 public interface Servlet 其实现类有:FaceServlet.GenericServlet.HttpServlet 一.介绍 Servlet接口定义了所有s ...
- Java EE javax.servlet.http中的HttpSession接口
HttpSession接口 public interface HttpSession (https://docs.oracle.com/javaee/7/api/javax/servlet/http/ ...
- Java EE javax.servlet.http中的HttpRequest抽象类
HttpRequest抽象类 public abstract class HttpServlet extends GenericServlet 实现的接口有:Serializable, Servlet ...
- Java EE javax.servlet ServletContainerInitializer接口
ServletContainerInitializer接口 public interface ServletContainerInitializer 一.介绍 该接口,允许在 web 应用程序的启动阶 ...
- Java EE之Servlet
1.创建Servlet类 Servlet在Java EE API规范中的定义: Servlet是一个运行在Web服务器中的Java小程序.Servlet将会接收和响应来自Web客户端的请求,使用HTT ...
随机推荐
- 6.RabbitMQ--事物
RabbitMQ之消息确认机制 如何防止消息丢失? 如何防止消息是否正确送达? 有些业务场景需要我们对于消息的幂等性要求是比较高的,需要消息不能丢失,在使用RabbitMQ的时候,我们可以通过消息持久 ...
- 14.链表中倒数第k个结点 Java
题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路 快指针和慢指针,快指针先跑K个单位然后慢指针开始跑,快指针跑到最后一个节点的时候慢指针对应的就是链表中倒数第k个结点 public stat ...
- OUC_Summer Training_ DIV2_#16 725
今天做了这两道题真的好高兴啊!!我一直知道自己很渣,又贪玩不像别人那样用功,又没有别人有天赋.所以感觉在ACM也没有学到什么东西,没有多少进步.但是今天的B题告诉我,进步虽然不明显,但是只要坚持努力的 ...
- Google 插件的使用
每次看英文网页或者文档的时候总会碰到不认识单词,就想能不能选中单词就可以显示翻译?于是就安装Google浏览器的翻译插件,总的来说,蛮繁琐的. 1.先安装谷歌访问助手 (1.)直接百度谷歌访问助手 ( ...
- Python 生成随机数函数和加密函数(MD5)
内容来自debugtalk import hashlib import random import string def gen_random_string(str_len): '''生成指定长度的随 ...
- 微信小程序之状态管理A
其实这个标题 不是很对 主要是最近小程序项目中 有这么一个状态 所有商品都共用一个商品详情页面 大概就是这样子 为了公司 保险起见,一些展示的内容已经处理 但是无伤大雅 就是这么两个按钮 左侧粉色 ...
- mongodb的更新操作符
mongodb更新有两个命令:1).update()命令 db.collection.update( criteria, objNew, upsert, multi ) criteria : upda ...
- P2456 [SDOI2006]二进制方程
P2456 [SDOI2006]二进制方程 题解 拿个样例模拟一下发现 把等式两边对应展开,每个位置的填数都是一一对应的 比如第二个样例 分类讨论: (1)xi yi 都是数字,但是不相同,此时无 ...
- 2.基于AOP自定义注解Annotation的实现
上一篇中分析了AOP的实现原理, 总结为: 判断对象是否需要被代理?@Aspect注解的实现是根据切入点表达式 代理之后需要做什么,就是那些通知,本质上是实现了MethodInterceptor的拦截 ...
- vs把asp.net旧的项目名称全部修改
1 先打开项目,把名称全部替换掉,然后把解决方案,程序集名称全部替换掉. 2 重新生成,清理,关闭项目. 3 把.sln文件用文本编辑器打开,替换里面的名称,然后把文件夹名称都修改好.d 4.打开项目 ...