文章目录
4.1、ServletContext接口简介
- ServletContext : servlet运行状态的参数记录,比如日志和URL存储-
4.2、ServletContext 接口作用域(Scope)
- ServletContext在一个JVM中只能存在一个
4.3、初始化参数
-
servlet启动需要的初始化参数
-
getInitParameter
-
getInitParameterNames
4.4、 配置方法
- 配置servlet、过滤器、url 模式匹配拦截
- ServletContextListener 的contextInitialized方法,
- 其实这个是在web.xml 或 web-fragment.xml启动进行配置的
4.4.1、编程添加和配置Servlets
- ServletRegistration 允许配置init-params 、 url-mappings
- 以下是三个方法
- addServlet(String servletName, String className) servletName : servlet名称,上下文的类,
- addServlet(String servletName, Servlet servlet) Servlet 上下文
- addServlet(String servletName, Class<? extends Servlet> servletClass)
- T createServlet(Class clazz) 创建一个Servlet
- ServletRegistration getServletRegistration(String servletName)
- Map<String, ? extends ServletRegistration> getServletRegistrations()
- javax.servlet.annotation.WebListener
4.4.2、配置过滤器
- addFilter(String filterName, String className)
- addFilter(String filterName, Filter filter)
- addFilter(String filterName, Class<? extends Filter> filterClass)
- T createFilter(Class clazz) 创建过滤器
- FilterRegistration getFilterRegistration(String filterName)
- Map<String, ? extends FilterRegistration> getServletRegistrations()
4.4.3、编程添加和配置监听器
- void addListener(String className) (实现一个或者多个接口)
- javax.servlet.ServletContextAttributeListener
- javax.servlet.ServletRequestListener
- javax.servlet.ServletRequestAttributeListener
- javax.servlet.http.HttpSessionListener
- javax.servlet.http.HttpSessionAttributeListener
- javax.servlet.http.HttpSessionIdListener
- void addListener(T t) ( 添加监听器)
- javax.servlet.ServletContextAttributeListener
- javax.servlet.ServletRequestListener
- javax.servlet.ServletRequestAttributeListener
- javax.servlet.http.HttpSessionListener
- javax.servlet.http.HttpSessionAttributeListener
- java.servlet.http.HttpSessionIdListener
- void addListener(Class<? extends EventListener> listenerClass) 实现一个或多个接口
- javax.servlet.ServletContextAttributeListener
- javax.servlet.ServletRequestListener
- javax.servlet.ServletRequestAttributeListener
- javax.servlet.http.HttpSessionListener
- javax.servlet.http.HttpSessionAttributeListener
- javax.servlet.http.HttpSessionIdListener
- void createListener(Class clazz) 实现一个或多个接口
- javax.servlet.ServletContextAttributeListener
- javax.servlet.ServletRequestListener
- javax.servlet.ServletRequestAttributeListener
- javax.servlet.http.HttpSessionListener
- javax.servlet.http.HttpSessionAttributeListener
- javax.servlet.http.HttpSessionIdListener
- 使用注解servlet,filter 和监听器
- @ServletSecurity, @RunAs, @DeclareRoles @MultipartConfig
4.5、上下文属性
- ServiceContext接口允许如下功能属性
- setAttribute
- getAttribute
- getAttributeNames
- removeAttribute
- 多个servlet共享信息
4.6、资源
- ServletContext接口
- getResource
- getResourceAsStream
- 相对资源目录: META-INF/resources , 如果是jar库,是在WEB-INF/lib
4.7、多个主机和Servlet上下文
- 支持多个虚拟主机共享一个IP地址
- Servlet上下文不能在多个虚拟主机共享
4.8、重载考虑
- 临时工作目录
- javax.servlet.context.tempdir