繁体   English   中英

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

[英]how to read a text file from server and display the text in index.jsp

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

如果它在公共webcontent中,只需使用<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;

有关更多示例,请参阅我对此问题的回答。

JSP:

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

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

最后我确实喜欢:

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()));

它的工作原理!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM