0

我正在开发一个 Web 应用程序,我在其中使用各种字符串操作方法,返回类型为 Java 类中的字符串或列表。我在我的 servlet 中调用这些方法并使用 JSTL,我成功地将输出打印到我的 JSP 页面。因此,JSTL 语法或基本 Servlet-JSP 交互没有问题。这是一个例子:

我的基类具有所有这些功能:

public class MethodClass {
// Skipping unwanted code and only providing example
    public static List<String> method1 (String input) {
         // Returns List of Strings
    }
    public static String method2 (String input) {
        // Returns a string
    }
    public static void method3 (String input) {
       // This method has to print text on console. I can't redirect that to a String.
       System.out.println(input);
    }
}

下面是我的 Servlet 代码(仅相关片段)

            listMethod1 = MethodClass.method1(input);
            request.setAttribute("Myresults", listMethod1);
            request.getRequestDispatcher("/results.jsp").forward(request, response);

在我的 JSP 中,我使用以下内容:

<c:forEach items="${Myresults}" var="result">       
    <tr>
        <td>${result.frameNum}</td>
        <td>${result.number}</td>
        <td>${result.name}</td>
        <td>${result.length}</td>
    </tr>
</c:forEach>

到目前为止没有任何问题。我的问题是如何将 method3 的输出打印到文本区域。AFAIK,response.getWriter() 的 out.println 函数可用于直接在 JSP 上打印,而不需要打印到某个字段,如某个 JSP 文件的文本区域或文本框。有没有我可以遵循的其他方法,我可以以某种方式将控制台上打印的 void 方法的输出重定向到字符串,然后使用类似于我上面提供的示例的字符串来显示输出。

4

1 回答 1

0

我想我找到了一个窍门。再次感谢 stackOverflow。

这是链接:将控制台输出重定向到java中的字符串

这是我使用的相关代码片段:

// Create a stream to hold the output
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
// IMPORTANT: Save the old System.out!
PrintStream old = System.out;
// Tell Java to use your special stream
System.setOut(ps);
// Print some output: goes to your special stream
System.out.println("Foofoofoo!");
// Put things back
System.out.flush();
System.setOut(old);
// Show what happened
System.out.println("Here: " + baos.toString());

现在您的 System.out 输出可以保存为字符串,并且可以在 JSP 中正常使用 JSTL。

于 2013-11-03T13:31:27.343 回答