在JSP上显示文件内容

时间:2019-01-12 01:22:24

标签: jsp

我正在尝试处理示例应用程序以在/ tmp目录中显示文件的内容。
但是没有成为开发人员会给我带来一些麻烦。

这是我正在使用的代码:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" import="java.io.*, java.net.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>JSP Reading Text File</title>
</head>
<body>
    <%
    String fileName = "/WEB-INF/test";
    InputStream ins = application.getResourceAsStream(fileName);
    try {
        if (ins == null) {
            response.setStatus(response.SC_NOT_FOUND);
        } else {
            BufferedReader br = new BufferedReader((new InputStreamReader(ins)));
            String data;
            while ((data = br.readLine()) != null) {
                out.println(data + "<br>");
            }
        }
    } catch (IOException e) {
        out.println(e.getMessage());
    }
    %>
</body>
</html>

如果该文件位于应用程序的WEB-INF目录中,则显示它没有问题。
但是,如果我尝试从其他目录读取它,我将无法做到。

1 个答案:

答案 0 :(得分:0)

经过反复试验,我最终找到了解决方案。我不知道这是否在最佳实践之间,但是它可行。

<%@page import="java.io.File"%>
<%@page import="java.io.InputStreamReader"%>
<%@page import="java.net.URL"%>
<%@page import="java.io.FileReader"%>
<%@page import="java.io.BufferedReader"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Read Text</title>
    </head>
    <body>
        <%
            BufferedReader reader = new BufferedReader(new FileReader("/tmp/test"));
            StringBuilder sb = new StringBuilder();
            String line;

            while((line = reader.readLine())!= null){
                out.println(line+"<br>");
            }
            out.println(sb.toString());
        %>
    </body>
</html>