ServletConfig: 封装 Serlvet 的配置信息, 获取 ServletContext 对象

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中定义的)

发布了54 篇原创文章 · 获赞 17 · 访问量 2427

猜你喜欢

转载自blog.csdn.net/qq_44096670/article/details/104882220