2015-04-15 160 views
0

有java类执行,并返回结果JSP返回任何结果

package Test; 
import static java.lang.System.out; 
import java.util.ArrayList; 
import java.util.List; 
import org.asteriskjava.manager.ManagerConnection; 
import org.asteriskjava.manager.ManagerConnectionFactory; 
import org.asteriskjava.manager.action.CommandAction; 
import org.asteriskjava.manager.response.CommandResponse; 



public class Manager 
{ 
    private ManagerConnection c; 

    public Manager() throws Exception 
    { 
     ManagerConnectionFactory factory = new ManagerConnectionFactory(
       "tttt", "admin", "ttt"); 
     c = factory.createManagerConnection(); 
    } 

    public void run() throws Exception 
    { 
     c.login(); 

     CommandAction action; 
     CommandResponse response; 
     List<String> list = new ArrayList<String>(); 


     action = new CommandAction(); 
     action.setCommand(" sip show peers"); 
     response = (CommandResponse) c.sendAction(action); 

     list = response.getResult(); 
     for (String s : list) { 
      if (s.contains("VOIP")) { 
      out.print(s); 

      } 
     } 

     c.logoff(); 
    } 

    public static void main(String[] args) throws Exception 
    { 
     new Manager().run(); 


    } 
} 

结果:

TEST   172.28.1.1         a    5060  OK (4 ms)         tes   172.28.1.1         a    5060  OK (2 ms)          at Test.Manager.main(Manager.java:50) 
Java Result: 1 

的jsp:

<%@page import="Test.Manager" %> 
<% 
    Manager o = new Manager(); 
    o.run(); 
    out.print(o); 
%> 

当你调用JSP中浏览器,我看到代码被执行(很明显,他冲到服务器并接收到数据),但在浏览器页面上doe不显示执行结果。告诉我要挖哪种方式。

+0

如果您在浏览器中查看“查看页面源代码”,您是否看到该编号? – BretC

+0

是的,我看到了源代码。但是一个类的输出不存在 – santer

+0

你确定这个编译? “out”来自“run”方法的地方在哪里?不要,你需要从页面传递给run方法吗?另外,在JSP中,您正在执行“out.print(o)”。因为你的经理类没有toString方法,所以我期望这会输出一些可怕的东西,比如“Manager @ 1befc”或者其他什么 – BretC

回答

0

您需要一些方法来捕获您正在构建的字符串,然后将其输出到生成的HTML页面。我已更新您的run方法以返回您输出的字符串的副本。

public class Manager 
{ 
    private ManagerConnection c; 

    public Manager() throws Exception 
    { 
     ManagerConnectionFactory factory = new ManagerConnectionFactory(
       "tttt", "admin", "ttt"); 
     c = factory.createManagerConnection(); 
    } 

    public String run() throws Exception 
    { 
     c.login(); 

     CommandAction action; 
     CommandResponse response; 
     List<String> list = new ArrayList<String>(); 
     StringBuilder sb = new StringBuilder(); 

     action = new CommandAction(); 
     action.setCommand(" sip show peers"); 
     response = (CommandResponse) c.sendAction(action); 

     list = response.getResult(); 
     for (String s : list) { 
      if (s.contains("VOIP")) { 
      out.print(s); 
      sb.append(s); 
      } 
     } 

     c.logoff(); 
     return sb.toString(); 
    } 

    public static void main(String[] args) throws Exception 
    { 
     new Manager().run(); 
    } 
} 

现在更新JSP以显示HTML页面上的字符串 - 不是在控制台中。

<%@page import="Test.Manager" %> 
<% 
    Manager o = new Manager(); 
    String output = o.run(); 
%> 
<%= output %> 

我也不建议使用scriplets,但这应该让你的代码工作。