我正在使用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做到这一点?
提前谢谢!
答案 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()));
它有效!