2011-02-01 103 views
1

我对Web服务感兴趣。现在每个用户都有会话文件夹,每个用户都有它的日志文件。现在我想从Java中读取日志文件并将其传递给index.jsp进行显示。因为我已经使用javax.servlet.http.HttpServletRequest req - req.setAttribute(REQUEST_IS_LOG, log);req.getRequestDispatcher("index.jsp").forward(req, res);不适用于我。有人能帮我找到另一种方式吗?如何从文件中将文本显示在索引中? 他们有没有办法做到这一点与Ajax? 预先感谢您!如何从服务器读取文本文件并在index.jsp中显示文本

回答

1

JSP:

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

这工作,因为JSP的可以做任何事情可以做JAVA。但是,对于大型项目,您应该使用Model-View-Controller实现进行研究。有几个框架可以帮助解决这个问题,比如Spring或者Struts。

+0

...或者如果日志的内容是页面中显示的唯一内容,则可以在servlet中执行上面的代码而不转发到JSP。 – padis 2011-02-01 21:53:40

3

如果它在公共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> 

至于阿贾克斯的一部分,只是像做

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

另见我就this question答案进行更广泛的例子。

+0

谢谢,例子帮助我很多 – userN 2011-02-02 15:13:36

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

它的工作原理!

相关问题