ServletConfig: 封装了 Serlvet 的配置信息, 并且可以获取 ServletContext 对象
1、配置 Serlvet 的初始化参数
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.atguigu.javaweb.HelloServlet</servlet-class>
<!-- 配置 Serlvet 的初始化参数。 且节点必须在 load-on-startup 节点的前面 -->
<init-param>
<!-- 参数名 -->
<param-name>user</param-name>
<!-- 参数值 -->
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>1230</param-value>
</init-param>
<load-on-startup>-1</load-on-startup>
</servlet>
2、获取初始化参数:
- getInitParameter(String name): 获取指定参数名的初始化参数
- getInitParameterNames(): 获取参数名组成的 Enumeration 对象.
String user = servletConfig.getInitParameter("user");
System.out.println("user: " + user);
Enumeration<String> names = servletConfig.getInitParameterNames();
while(names.hasMoreElements()){
String name = names.nextElement();
String value = servletConfig.getInitParameter(name);
System.out.println("^^" + name + ": " + value);
}
3). 获取 Serlvet 的配置名称(了解)
String servletName = servletConfig.getServletName();
System.out.println(servletName);
3、ServletContext接口
Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,Servlet对象被包含在ServletConfig对象中,调用ServletConfig.getServletContext方法可以返回ServletContext对象的引用。
- 由于一个WEB饮用程序中的所有Servlet都共享同一个ServletContext对象,所以,ServletContext对象被称之为application对象(Web应用程序对象)。
功能:
(1)获取WEB应用程序的初始化参数
(2)记录日志
(3)application域范围的属性
(4)访问资源文件
(5)获取虚拟路径所映射的本地路径
(6)WEB应用程序之间的访问
(7)ServletContext的其他方法
1). 可以由 SerlvetConfig 获取:
ServletContext servletContext = servletConfig.getServletContext();
2). 该对象代表当前 WEB 应用: 可以认为 SerlvetContext 是当前 WEB 应用的一个大管家. 可以从中获取到当前 WEB 应用的各个方面的信息.
①. 获取当前 WEB 应用的初始化参数
设置初始化参数: 可以为所有的 Servlet 所获取, 而 Servlet 的初始化参数只用那个 Serlvet 可以获取
如果有一些初始化参数可能被任何一个Servlet都需要使用的话,需要配置成全局的初始化参数
在Servlet外面配置的初始化参数是全部的。
<!-- 配置当前 WEB 应用的初始化参数 -->
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
在Servlet里面配置的初始化参数是局部的。
<!-- 局部的初始化参数 -->
<init-param>
<!-- 参数名 -->
<param-name>user</param-name>
<!-- 参数值 -->
<param-value>root</param-value>
</init-param>
方法:
getInitParameter
getInitParameterNames
代码:
- 获取当前WEB应用的初始化参数
ServletContext servletContext = servletConfig.getServletContext();
String driver = servletContext.getInitParameter("driver");
System.out.println("driver:" + driver);
Enumeration<String> names2 = servletContext.getInitParameterNames();
while(names2.hasMoreElements()){
String name = names2.nextElement();
System.out.println("-->" + name);
}
②. 获取当前 WEB 应用的某一个文件在服务器上的绝对路径, 而不是部署前的路径
getRealPath(String path);
代码:
String realPath = servletContext.getRealPath("文件名");
System.out.println(realPath);
③. 获取当前 WEB 应用的名称:
getContextPath()
代码:
String contextPath = servletContext.getContextPath();
System.out.println(contextPath);
④. 获取当前 WEB 应用的某一个文件对应的输入流.
getResourceAsStream(String path): path 的 / 为当前 WEB 应用的根目录.
代码:
InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
⑤. 和 attribute 相关的几个方法:
(1)HttpServletRequest:是ServletRequest的子接口,针对于http请求所定义,里面包含了大量获取http请求的相关方法;
(2)ServletResponse:封装了响应信息,如果想给用户什么响应,具体可以使用该接口的方法实现;
①getWriter():返回PrintWriter对象,调用该对象的print方法,将会把print()方法的参数直接打印到客户的浏览器上;
②设置响应的内容类型,response.setContentType(“application/msword”);
③httpServletResponse.sendRedirect("");**请求的重定向,(此方法为HttpServletResponse中定义的)