ServletConfig对象以及方法

ServletConfig对象对应web.xml文件中的元素,在Servlet的配置文件web.xml中,可以使用一个或多个标签为servlet配置一些初始化参数,然后使用ServletConfig对象中的方法一一获取。

通过ServletConfig获取Servlet的初始化参数

 当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,我们通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
		//这是获取servlet的配置信息
public void init(ServletConfig config) throws ServletException {
/*getInitParameter("参数名")用于获取参数值*/
String user = config.getInitParameter("user");
String user1 = config.getInitParameter("root");
System.out.println("user:" + user);System.out.println("user:" + user1);
/*getInitParameterNames()用于获取参数名*/
Enumeration<String> name = config.getInitParameterNames();
while(name.hasMoreElements()) {
String name1 = name.nextElement();
System.out.println("password:" + name1);
}
/*getServletName()用于获取服务器名称(了解即可)*/
String ServletName = config.getServletName();
System.out.println(ServletName);
}

Web.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!-- 配置和映射 Servlet -->
<servlet>
<!-- Servlet 注册的名字 -->
<servlet-name>ServletConfig_Study</servlet-name>
<!-- Servlet 的全类名 -->
<servlet-class>TTT.ServletConfig_Study</servlet-class>
<!-- 配置 Serlvet 的初始化参数 -->
<init-param>
<!-- 参数名由 getInitParameterNames()方法获取 -->
<param-name>user</param-name>
<!-- 参数值由 getInitParameter("参数名") 方法获取-->
<param-value>123</param-value>
</init-param>
<init-param>
<param-name>root</param-name>
<param-value>464</param-value>
</init-param>
</servlet>

运行结果如下:

user:123
user:464
password:root
password:user
ServletConfig_Study

ServletConfig对象的方法

getInitParameterNames()方法、getInitParameter()方法、getServletName()方法、getServletContext()方法,getServletContext()方法非常重要。

getInitParameterNames()方法

getInitParameterNames()方法用于获取参数的名字,返回值为Enumeration类型。
例子:

1
2
3
4
5
Enumeration<String> name = config.getInitParameterNames();
while(name.hasMoreElements()) {
String name1 = name.nextElement();
System.out.println("password:" + name1);
}

getInitParameter()方法

getInitParameter()方法用于获取参数名的值,返回值为String类型。
例子:

1
String user = config.getInitParameter("user");

getServletName()方法

getServletName()用于获取服务器名称(了解即可),返回值String类型。
例子:

1
String ServletName = config.getServletName();

getServletContext()方法

ServletContext 可以由 SerlvetConfig对象 获取:

1
2
		//config是 SerlvetConfig对象
ServletContext servletContext = config.getServletContext();

该对象代表当前 WEB 应用: 可以认为 SerlvetContext 是当前 WEB 应用的一个大管家. 可以从中获取到当前 WEB 应用的各个方面的信息.

①获取当前 Web 应用的初始化参数

设置初始化参数: 可以为所有的 Servlet 所获取, 而 Servlet 的初始化参数只用那个 Serlvet 可以获取.

1
2
3
4
5
6
7
8
9
10
11
12
<!-- 配置当前 Web 应用的初始化参数 -->
<!-- 上下文的参数 -->
<context-param>
<!-- 参数名由 getInitParameterNames()方法获取 -->
<param-name>driver</param-name>
<!-- 参数值由 getInitParameter("参数名") 方法获取-->
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
<context-param>
<param-name>jdbcurl</param-name>
<param-value>jdbc:mysql://localhost:3306/text</param-value>
</context-param>

代码:

1
2
3
4
5
6
7
8
9
10
11
12
//获取ServletContext对象
ServletContext servletContext = config.getServletContext();
//getInitParameter("参数名")用于获取参数值
String driver = servletContext.getInitParameter("driver");
String jdbcurl = servletContext.getInitParameter("jdbcurl");
System.out.println("driver:" + driver);System.out.println("jdbcurl:" + jdbcurl);
//getInitParameterNames()用于获取参数名
Enumeration<String> n = servletContext.getInitParameterNames();
while(n.hasMoreElements()) {
String name1 = n.nextElement();
System.out.println("name:" + name1);
}

结果:

driver:com.mysql.jdbc.Driver
jdbcurl:jdbc:mysql://localhost:3306/text
name:driver
name:jdbcurl

②获取当前 WEB 应用的某一个文件在服务器上的绝对路径, 而不是部署前的路径

1
2
tring realPath = servletContext.getRealPath("/note.txt");
System.out.println(realPath);

③获取当前 WEB 应用的名称

1
2
String contextPath = servletContext.getContextPath();
System.out.println(contextPath);

④获取当前 WEB 应用的某一个文件对应的输入流.

1
2
	//getResourceAsStream(String path): path 的 / 为当前 WEB 应用的根目录. 
InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
原创技术分享,您的支持将鼓励我继续创作
0%