package day09;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ConfigDemo extends HttpServlet {
private static final long serialVersionUID = 7251449372723913413L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
/*
* 在servlet中频繁的信息修改和切换的话是很麻烦的,我们写成硬代码的话,修改也很困难!
* 所以在servlet的生命周期中有一个很重要的对象:被高度封装了的servlet的配置信息的对象
* servletConfig!
*
* 但是如果我们要通过覆盖init的有参构造,通过其中的有参构造去获得其中的信息的话,是很麻烦的
* 所以我们要通过一种特殊的方法去进行;因为java的设计者考虑到了我们要获取servletConfig对象
* 的需求
*
* 所以在servlet的成员变量中提供了被private修饰的servletConfig的变量
* 我们只需要在继承了Servlet的方法中调用getServletConfig方法就可以得
* 到servletConfig对象
*
*/
ServletConfig servletConfig = this.getServletConfig();
/*
* 以下的方法就是获得参数的:
* servletConfig.getInitParameter("name");
* servletConfig.getInitParameterNames();
*/
String path = null;
/*
* 读取到init-param中的参数
* <servlet>
<servlet-name>ConfigDemo</servlet-name>
<servlet-class>gz.itcast.f_config.ConfigDemo</servlet-class>
<!-- servlet的初始化参数 -->
<init-param>
<param-name>path</param-name>
<param-value>e:/aaa.txt</param-value>
</init-param>
</servlet>
*/
path = servletConfig.getInitParameter("path");
System.out.println(path);
BufferedReader br = new BufferedReader(new FileReader(path));
String value = null;
while((value = br.readLine()) != null) {
System.out.println(value);
}
br.close();
}
}