Sevlet的俩个接口
① ServletConfig接口
- Servlet配置接口,封装了Servlet配置信息。Config---->配置
- 每一个Servlet都有唯一一个相对应的ServletConfig对象
- ServletConfig对象由Servlet容器创建,在Servlet进行初始化的时候传递给init方法
public void init(ServletConfig servletConfig) throws ServletException
- 功能
- 获取servlet的名称(web.xml中配置servlet-name的值)
- 获取全局上下文ServletContext对象:getServletContext()
- 获取Servlet初始化参数getInitParameter(String) / getInitParameterNames()。
<servlet>
<servlet-name>aaa</servlet-name>
<servlet-class>Test1.TestServlet</servlet-class>
<init-param>
<param-name>path</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>aaa</servlet-name>
<url-pattern>/a</url-pattern>
</servlet-mapping>
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("servletConfig = " + servletConfig);
String servletName = servletConfig.getServletName();
System.out.println("servletName = " + servletName);
String initParameter = servletConfig.getInitParameter("path");
System.out.println("initParameter = " + initParameter);
Enumeration<String> initParameterNames = servletConfig.getInitParameterNames();
System.out.println("initParameterNames = " + initParameterNames);
ServletContext servletContext = servletConfig.getServletContext();
System.out.println("servletContext = " + servletContext);
}
输出结果:
servletConfig = org.apache.catalina.core.StandardWrapperFacade@75cb26f1
servletName = aaa
initParameter = classpath:springmvc.xml
initParameterNames = java.util.Collections$3@7b0cd638
servletContext = org.apache.catalina.core.ApplicationContextFacade@7f334d81
② ServeltContext接口
- Web容器在启动时,每个Web应用程序都创建唯一个对应的ServletContext对象,代表Web应用。所有的Servlet共享一个ServletContext对象,所以ServletContext对象也被称为 application 对象
- ServletContext对象是由服务器启动的时候,tomcat创建的。
- 功能:
- 获得获取项目的上下文路径(带/的项目名):getContextPath()
- 获取虚拟路径所映射的真实路径:getRealPath(String path)
- 虚拟路径:浏览器访问web应用中资源所使用的路径
- 本地路径:资源在文件系统中的实际保存路径
- 获取web应用程序的全局初始化参数:getInitParameter()
- 作为域对象共享数据
- 域对象:在一定作用域范围内共享数据的对象。
- ServletContext所用域的对象是整个web项目。
注意:servletContext.getRealPath(“/upload”); 后期上传下载会用到。后期再说,本文不多介绍
<!--设置全局初始化参数-->
<!-- <context-param>-->
<!-- <param-name>servletCntextInitParamKey</param-name>-->
<!-- <param-value>servletCntextInitParamValue</param-value>-->
<!-- </context-param>-->
<context-param>
<param-name>ccc</param-name>
<param-value>bbb</param-value>
</context-param>
public class TestServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
ServletContext servletContext = servletConfig.getServletContext();
String contextPath = servletContext.getContextPath();
System.out.println("contextPath = " + contextPath);
String initParameter = servletContext.getInitParameter("ccc");
System.out.println("initParameter = " + initParameter);
servletContext.setAttribute("key","value");
Object key = servletContext.getAttribute("key");
System.out.println("key = " + key);
}
}
输出结果:
contextPath = /yue
initParameter = bbb
key = value