Java如何在Servlet中读取文本文件?

本示例说明如何在servlet中读取文本文件。使用该ServletContext.getResourceAsStream()方法将使您能够以爆炸格式或战争文件存档部署Web应用程序来读取文件。

以下servletconfiguration.properties从/WEB-INF我们的Web应用程序中的目录中读取文件。该configuration.properties文件只是具有以下内容的常规文本文件。

app.appname=Servlet Examples
app.version=1.0
app.copyright=2007

这是我们的ReadTextFileServletservlet类。

package org.nhooo.example.servlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;

public class ReadTextFileServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html");

        //我们将读取一个名为configuration.properties的文件。这个
        // 文件放置在WEB-INF目录下。
        String filename = "/WEB-INF/configuration.properties";

        ServletContext context = getServletContext();

        // 首先使用ServletContext.getResourceAsStream()获得文件InputStream。
        // 方法。
        InputStream is = context.getResourceAsStream(filename);
        if (is != null) {
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader reader = new BufferedReader(isr);
            PrintWriter writer = response.getWriter();
            String text;

            // 我们逐行读取文件,稍后将显示在
            // 浏览器页面。
            while ((text = reader.readLine()) != null) {
                writer.println(text + "</br>");
            }
        }
    }
}

创建servlet类后,我们需要注册servlet并在web.xml文件中创建servlet映射。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
        PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <display-name>Servlet Examples</display-name>
    <servlet>
        <servlet-name>ReadTextFileServlet</servlet-name>
        <servlet-class>org.nhooo.example.servlet.ReadTextFileServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ReadTextFileServlet</servlet-name>
        <url-pattern>/readTextFileServlet</url-pattern>
    </servlet-mapping>
</web-app>

要访问servlet,可以http://localhost:8080/readTextFileServlet在浏览器URL地址栏中输入。