-1

当我在jsp中显示进程时遇到问题,我使用以下代码:

public ArrayList<String> getProcessusList(){

     ArrayList<String> ss=new ArrayList<String>();
     String st="";
 try {
        String line;
        Process p = Runtime.getRuntime().exec
                (System.getenv("windir") +"\\system32\\"+"tasklist.exe");
        BufferedReader input =
                new BufferedReader(new InputStreamReader(p.getInputStream()));
        while ((line = input.readLine()) != null) {
            String[] se=line.split(" =\n");
            for(String sd:se){ss.add(sd);}
        }


        input.close();
    } catch (Exception err) {
        err.printStackTrace();
    }
 return ss;
}

在jsp文件中,代码是:

<body>
  ArrayList <String>processArray=p.getProcessusList();
  <%for(String se:processArray){
  String []s=se.split(" ");
  for(String sd:s){%><%=sd %>&nbsp;<% }%> <br><% } %>


  </body>

输出:

在此处输入图像描述

但我想要一种更用户友好的格式,你能帮我吗?

4

4 回答 4

1

我的解决方案,一些硬代码:

public ArrayList<String> getProcessusList(){

        ArrayList<String> ss=new ArrayList<String>();
        try {
            String line;
            Process p = Runtime.getRuntime().exec
                    (System.getenv("windir") +"\\system32\\"+"tasklist.exe");
            BufferedReader input =
                    new BufferedReader(new InputStreamReader(p.getInputStream()));
            while ((line = input.readLine()) != null) {
                String[] se=line.split(" =\n");
                for(String sd:se){
                    String[] sa = sd.split("\\s\\s+");
                    if (sa.length>1)
                        ss.add(sd);
                }
            }
            input.close();
        } catch (Exception err) {
            err.printStackTrace();
        }
        return ss;
    }

JSP 文件:

<%
ArrayList<String> processArray=p.getProcessusList();
%>
<table border="1" cellspacing="0">
    <thead>
        <tr>
            <%
            String se = processArray.get(0);
            String[] sa = se.split("\\s\\s+");%>
            <%for (int j=0;j<sa.length;j++){ 
            if(j==1){%>
            <th>PID</th>
            <th>Session Name</th>
            <%} else {%>
            <th><%=sa[j] %></th>
            <%}} %>
        </tr>
    </thead>
    <tbody>
        <%for (int i=1;i<processArray.size();i++){ 
        se = processArray.get(i);
        sa = se.split("\\s\\s+");%>
        <tr>
            <%for (int j=0;j<sa.length;j++){
            if(j==1){
                String ssa[] = sa[j].split(" ");%>
            <td><%=ssa[0] %></td>
            <td><%=ssa[1] %></td>
            <%}else{ %>
            <td><%=sa[j] %></td>
            <%}} %>
        </tr>
        <%} %>
    </tbody>
</table>
于 2013-08-20T07:49:41.270 回答
0

添加 html 表(或 div)并使用 JSTL 生成它。

于 2013-08-20T06:28:17.007 回答
0

试试StringUtils

StringUtils.rightPad(sd,30);
于 2013-08-20T06:32:07.673 回答
0

取 aHTML table并添加 rows( tr) 并 td's获得正确的结构。

此外,您可以styling使用CSS做一些事情。

在 jsp 中使用 scriplets 已经过时并且非常不鼓励使用。使用 JSTL 而不是 Scriplets

模拟代码

   <c:forEach items="${element}" var="myCollection">

    <tr>
        <td><c:out value="${element.field}"/></td>

    </tr>
</c:forEach>

喜欢阅读:如何避免在我的 JSP 页面中使用 scriptlet?

于 2013-08-20T06:27:10.643 回答