深圳极速网站建设定制网络服务提供商是指
在实际开发中,有时候可能会需要读取Web应用中的一些资源文件,比如配置文件,图片等。为此,在ServletContext接口中定义了一些读取Web资源的方法,这些方法是依靠Servlet容器来实现的。Servlet容器根据资源文件相对于Web应用的路径,返回关联资源文件的IO流、资源文件在文件系统的绝对路径等。表3-5中列举了ServletContext接口中用于获取资源路径的相关方法,具体如下:
ServletContext接口的常用方法

了解了ServletContext接口中用于获得Web资源路径的方法后,接下来通过一个案例,分步骤演示如何使用ServletContext对象读取资源文件,具体如下:
(1)创建一个资源文件。在chapter03项目中右击src目录,选择【New】—>【Other】选项,进入创建文件的界面,如图3-40所示。

新建文件的界面单击图3-40所示的【Next】按钮,进入填写文件名称的界面,如下图所示。

填写文件名称的界面在上图中,【File name】文本框中的内容为资源文件的名称,在此,将创建的资源文件命名为itcast.properties,并且选择存放的目录为src目录。单击【Finish】按钮,完成配置文件的创建。在创建好的itcast.properties文件中,输入如下所示的配置信息:
Company= itcast
Address=Beijing
需要注意的是,Eclipse中src目录下创建的资源文件在Tomcat服务器启动时会被复制到项目的WEB-INF/classes目录下,如下图所示。

WEB-INF/classes目录
(2)编写读取itcast.properties资源文件的Servlet。在cn.itcast.servlet包中创建一个名称为TestServlet06的Servlet类,该类的实现代码如文件3-9所示。
文件TestServlet06.java
packagecn.itcast.servlet;importjava.io.*;importjava.util.Properties;importjavax.servlet.*;importjavax.servlet.http.*;publicclassTestServlet06extendsHttpServlet{publicvoiddoGet(HttpServletRequest request,HttpServletResponse response)throwsServletException,IOException{response.setContentType("text/html;charset=utf-8");ServletContext context =this.getServletContext();PrintWriter out = response.getWriter();//获取相对路径中的输入流对象InputStream in = context.getResourceAsStream("/WEB-INF/classes/itcast.properties");Properties pros =newProperties();pros.load(in);out.println("Company="+ pros.getProperty("Company")+"<br>");out.println("Address="+ pros.getProperty("Address")+"<br>");}publicvoiddoPost(HttpServletRequest request,HttpServletResponse response)throwsServletException,IOException{this.doGet(request, response);}}
在文件3-9中,使用ServletContext的getResourceAsStream(String path)方法获得了关联itcast.properties资源文件的输入流对象,其中的path参数必须以正斜线“/”开始,表示itcast.properties文件相对于Web应用的相对路径。
(3) 启 动Tomcat服 务 器 , 在 浏 览 器 的 地 址 栏 中 输 入地址“http://localhost:8080/chapter03/TestServlet06”访问TestServlet06,浏览器的显示结果如图3-43所示。

运行结果从图3-43中可以看出,itcast.properties资源文件的内容被读取出来。由此可见,使用ServletContext可以读取到Web应用中的资源文件。
(4)有的时候,开发者需要获取的是资源的绝对路径。接下来,对文件3-9TestServlet06.java进行修改,通过使用getRealPath(String path)方法获取资源文件的绝对路径,修改后的代码如文件3-10所示。
文件3-10TestServlet06.java
packagecn.itcast.servlet;importjava.io.*;importjava.util.Properties;importjavax.servlet.*;importjavax.servlet.http.*;publicclassTestServlet06extendsHttpServlet{publicvoiddoGet(HttpServletRequest request,HttpServletResponse response)throwsServletException,IOException{PrintWriter out = response.getWriter();ServletContext context =this.getServletContext();//获取文件绝对路径String path = context.getRealPath("/WEB-INF/classes/itcast.properties");FileInputStream in =newFileInputStream(path);Properties pros =newProperties();pros.load(in);out.println("Company="+ pros.getProperty("Company")+"<br>");out.println("Address="+ pros.getProperty("Address")+"<br>");}publicvoiddoPost(HttpServletRequest request,HttpServletResponse response)throwsServletException,IOException{this.doGet(request, response);}}
在文件3-10中,使用ContextServlet对象的getRealPath(String path)方法获得itcast.properties资源文件的绝对路径path,然后使用这个路径创建关联itcast.properties文件的输入流对象。
(5)启动Tomcat服务器,在浏览器的地址栏中再次输入地址“http://localhost:8080/chapter03/TestServlet06”访问TestServlet06,同样可以看到图3-43所显示的内容。