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 相关的几个方法