Servlet 学习笔记①
- dd
- dd
- dd
- dd
- dd
- dd
7. ServletConfig: 封装了Servlet 的配置信息,并且可以获取 ServletContext
- 配置初始化参数:
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>servlettest.HelloServlet</servlet-class>
<!-- 配置Servlet 初始化参数, 且该节点必须在load-on-startup 的前面 -->
<init-param>
<!-- 参数名 -->
<param-name>username</param-name>
<!-- 参数值 -->
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>12345</param-value>
</init-param>
<!-- 指定Servlet被创建的时机 -->
<load-on-startup>-1</load-on-startup>
</servlet>
-
- 获取初始化参数:
- getInitParameter(String name): 获取指定参数名的初始化参数
- getInitParameterNames(): 获取参数名组成的Enumeration对象
- getServletName():用的比较少:
- 获取初始化参数:
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("This is init");
String user = servletConfig.getInitParameter("user");
System.out.println("user=" + user);
Enumeration<String> parameterNmaes = servletConfig.getInitParameterNames();
while (parameterNmaes.hasMoreElements()){
String name = parameterNmaes.nextElement();
String value = servletConfig.getInitParameter(name);
System.out.println(name + " = " + value);
}
String servletName = servletConfig.getServletName();
System.out.println(servletName);
}
8. ServletContext
- Servlet 为每一个WEB应用程序都创建了一个对应的ServletContext 对象, ServletContext 对象被包含在ServletConfig 对象中, 调用ServletConfig.getServletContext 方法可以返回ServletContext对象的引用。
- 由于一个WEB 应用程序中的所有Servlet 都 共享一个ServletContext 对象,ServletContext 对象又称为application 对象(WEB 应用程序对象), 当前WEB 应用的初始化参数可以为所有的Servlet 获取, 而前面介绍的 Servlet 初始化参数只能被那个Servlet 所使用。
- 该对象代表当前的WEB 应用: 可以认为ServletContext 是当前WEB应用的一个大管家, 可以从中获取当前WEB 应用的各方面的信息设置WEB 应用的初始化参数
- 功能:
- 获取WEB应用程序的初始化参数
- 记录日志
- application 域范围的属性
- 访问资源文件
- 获取虚拟路径锁映射的本地路径
- WEB 应用程序之间的访问
- ServletContext 的其他方法
<!-- 配置当前WEB 应用的初始化参数 -->
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
<context-param>
<param-name>jdbcUrl</param-name>
<param-value>jdbc:mysql:///atguigu</param-value>
</context-param>
① 获取当前WEB 应用的初始化参数:
- getInitParameterNames()
- getInitParameter()
public void init(ServletConfig servletConfig) throws ServletException {
ServletContext servletContext = servletConfig.getServletContext();
String driver = servletContext.getInitParameter("driver");
System.out.println("driver=" + driver);
Enumeration<String> contextName = servletContext.getInitParameterNames();
while (contextName.hasMoreElements()){
System.out.println(contextName.nextElement());
}
}
② 获取WEB 应用中的文件的路,获取当前WEB 应用的某个文件在服务器上的绝对路径:而不是部署前的路径。D:\tomcat7\webapps\HelloServletTest\web.xml
- getRealPath()
String realPath = servletContext.getRealPath("/web.xml");
System.out.println(realPath);
③ 获取当前WEB 应用的名称:/HelloServletTest
- getContextPath()
String contextPath = servletContext.getContextPath(); System.out.println(contextPath);
④ 获取当前WEB 应用的某一个文件对应的文件输入流
- getResourceAsStream(String path): path 的 / 为当前WEB 应用的根目录。
ClassLoader classloader = getClass().getClassLoader();
InputStream is1 = classloader.getResourceAsStream("jdbc.properties");
System.out.println("1. " + is1);
InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
System.out.println("2. " + is2);
⑤ 和attribute 相关的几个方法
浙公网安备 33010602011771号