将文件内容写入jsp

时间:2011-07-22 13:58:51

标签: java file jsp jsp-tags

我想将(文本)文件的内容写入JSP。我将在标签内执行此操作 获取文件内容并写入从我的标记中调用“pageContext.getOut()”生成的对象的最佳方法是什么?

我问,因为我不确定各种读者,作家和缓冲器等。

4 个答案:

答案 0 :(得分:3)

尝试Commons-IO:http://commons.apache.org/io/api-release/index.html?org/apache/commons/io/package-summary.html

其中一个copy()方法。

IOUtils.copy( 
   new FileInputStream( new File(...) ), 
   pageContext.getResponse().getOutputStream() 
);

答案 1 :(得分:2)

您可以使用apache commons-io library。它有一个实用的方法来获取文件内容为String:

String contents = FileUtils.readFileToString(new File("somefile.txt"));

注意 - 这种方便的方法仅适用于较小的文件。如果文件很大,则需要流式方法(当您从文件中读取字节时,将字节写入输出流)

答案 2 :(得分:1)

如果您不想使用scriptlet,您可能会创建一个类似于JSTL函数的函数类,它提供了一个静态方法来执行此操作。然后使用表达式来读取文件。

示例:

package your.pkg

public class FileAccess {
  public static String readTxtFile( String filename )  {
     return FileUtils.readFileToString(new File(filename)); //used Bohemian's suggestion here :)
  }
}

在你的taglib文件中你有这个条目:

<function>
  <name>readTxtFile</name>
  <function-class>
    your.pkg.FileAccess 
  </function-class>
  <function-signature>
    java.lang.String readTxtFile( java.lang.String )
  </function-signature>
</function>

最后在你的JSP中:

<%@taglib prefix="f" uri="your taglib uri" %>

${f:readTxtFile( 'path/to/myfile.txt' )} //reads the file and writes the return value to the JSP

答案 3 :(得分:0)

你可以做一个;

<jsp:include page="myfile.txt">

不需要读者/作家/缓冲等。