将Java类显示到jsp网页中

时间:2015-05-04 06:50:38

标签: java jsp

您好我还有问题,我无法在jsp页面中显示任何数据,正如您在代码中看到的那样我将java类导入到jsp中并创建了该类的对象并调用了输出方法java类,但似乎有些不对。请帮忙。 (请解释一下你的建议,因为有些提示难以理解 - 谢谢)

package mydata;
import org.hyperic.sigar.CpuInfo;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;

public class test {
    public test() {
        Sigar sigar = new Sigar();
        String output = " ";
        CpuInfo[] cpuInfoList = null;
        try {
            cpuInfoList = sigar.getCpuInfoList();
        } catch (SigarException e) {
            e.printStackTrace();
            return;
        }
        for (CpuInfo info : cpuInfoList) {
            output += "\nCPU\n";
            output += "Vendor: " + info.getVendor() + "\n";
            output += "Clock: " + info.getMhz() + "Mhz\n";
            output += "Core: " + info.getCoresPerSocket();
        }
        System.out.println(output);
    }
    public static void main(String[] args) {
        test main = new test();
    }
}
//JSP Code
<%@page import="mydata.test"%>
<%@page import="org.hyperic.sigar.Sigar"%>
<%@page import="org.hyperic.sigar.CpuInfo"%>
<%@page import="org.hyperic.sigar.SigarException"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

        <h1>Welcome to data page</h1>
        <%@ page import="mydata.test.*"%>
        <%

        String output="";
        CpuInfo[] cpuInfoList = null;
        test ts = new test();
        Sigar sigar = new Sigar();
        out.println(output);
        out.println(sigar.getCpuInfoList());
%>
    </body>
</html>

2 个答案:

答案 0 :(得分:1)

您需要在类范围内声明输出变量,并添加一个getter方法来返回它 然后,在调用测试类的构造函数之后,使用getter方法检索输出字符串。 例如:

// Java
public class test {
    private String output;
    public String getOutput() {
        return this.output;
    }

// JSP
<%
    test ts = new test();
    out.println(ts.getOutput());
%>

答案 1 :(得分:0)

servlet中用于输出内容的输出流与标准输出流不同(out!= System.out)。

有两种方法可以解决您的问题:

  1. 将输出流对象传递给类中的测试方法:

    test(OutputStream out) {
        ...
        out.println(output);
    }
    
  2. 从测试方法返回输出:

    StringBuilder buffer = new StringBuilder();
    for (...) {
        buffer.append(...);
    }
    return buffer.toString();
    
  3. 我建议使用StringBuilder而不是连接String对象,因为这会显着影响性能。