如何从服务器读取文本文件并在index.jsp中显示文本

时间:2011-02-01 21:12:50

标签: java ajax servlets

我正在使用Web服务。现在我为每个用户都有会话文件夹,每个用户都有它的日志文件。现在我想从java读取日志文件并将其传递给index.jsp for show。由于我已使用javax.servlet.http.HttpServletRequest req - req.setAttribute(REQUEST_IS_LOG, log);req.getRequestDispatcher("index.jsp").forward(req, res);对我不起作用。有人可以帮助我找到另一种方式吗?如何将文件中的文本显示在索引中? 他们是否有办法用ajax做到这一点? 提前谢谢!

3 个答案:

答案 0 :(得分:3)

如果它在公共网页内容中,请使用<jsp:include>

<pre>
    <jsp:include page="logs/user123.txt" />
</pre>

否则在其间带一个HttpServlet,获取所需资源的InputStream并将其写入响应的OutputStream

<pre>
    <jsp:include page="logservlet/user123.txt" />
</pre>

如果它位于不同的公共领域,请使用JSTL <c:import>

<pre>
    <c:import url="http://other.com/logs/user123.txt" />
</pre>

关于Ajax部分,只需执行类似

的操作
document.getElementById("log").innerHTML = xhr.responseText;

有关更多示例,请参阅我对this question的回答。

答案 1 :(得分:1)

JSP:

<% BufferedReader reader = new BufferedReader(new FileReader("log.txt")); %>
<% String line; %>
<% while ((line = reader.readLine()) != null) { %>
   <%=line %>
<% } %>

这将起作用,因为jsp可以做任何Java可以做的事情。但是,对于较大的项目,您应该考虑使用模型 - 视图 - 控制器实现。有几个框架可以帮助解决这个问题,比如Spring或Struts。

答案 2 :(得分:0)

最后我确实喜欢:

res.setContentType("text/plain");
            request.setAttribute(REQUEST_IS_LOG, logs);     
            request.getRequestDispatcher("index.jsp").forward(req, res);
            return;

在我写作之前:

java.io.OutputStream result=res.getOutputStream();

这就是为什么我不能使用上面写的方法。 我只需更改为文件:

java.io.OutputStream result = new java.io.FileOutputStream((destinationDir+System.getProperty("file.separator")+"result"+n+"."+targetFormat.toLowerCase()));

它有效!