package cn.itcast; import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; //servlet调用其他程序,在其他程序中何如读取资源文件(通过类装载器)
public class ServletDemo3 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { UserDao dao = new UserDao();
dao.find(); } public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { } }
package cn.itcast; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; //如果读取资源文件的程序不是servlet的话,就只能通过类装载器去读
public class UserDao { private static Properties dbconfig = new Properties();
static {
InputStream in = UserDao.class.getClassLoader().getResourceAsStream(
"db.properties");
try {
dbconfig.load(in);
} catch (IOException e) {
throw new ExceptionInInitializerError(e);
}
}
//以下代码虽然可以读取资源文件数据,但是无法获取更新后的数据
public void update() throws IOException { System.out.println(dbconfig.getProperty("url"));
} //通过类装载的方式得到资源文件位置,再通过传统方式读取资源文件的数据,这样可以读取更新后的数据
public void find() throws IOException {
String path = UserDao.class.getClassLoader().getResource("db.properties").getPath();
FileInputStream in = new FileInputStream(path); Properties dbconfig = new Properties();
dbconfig.load(in); System.out.println(dbconfig.getProperty("url")); } }
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet>
<servlet-name>ServletDemo1</servlet-name>
<servlet-class>cn.itcast.ServletDemo1</servlet-class>
</servlet>
<servlet>
<servlet-name>ServletDemo3</servlet-name>
<servlet-class>cn.itcast.ServletDemo3</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>ServletDemo1</servlet-name>
<url-pattern>/ServletDemo1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ServletDemo3</servlet-name>
<url-pattern>/servlet/ServletDemo3</url-pattern>
</servlet-mapping> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>