0



我正在开发一个简单的 Web 应用程序。此应用程序具有我们通常在命令提示符下执行的“ping”功能。

因此,在我的 jsp 页面中,我将提供一个类似“www.google.com”的地址,然后单击提交将地址发送到我的名为“PingServlet”的 servlet。我的 servlet 接收地址并发送到一个 java 类,该类将处理对该地址的 ping。

    ip="www.google.com"; //Got from servlet
    String pingCmd = "ping " + ip;
    //ArrayList<String> pingRsult = new ArrayList<String>();
    //pingRsult.add("Pinging Data");
    try {
        Runtime r = Runtime.getRuntime();
        Process p = r.exec(pingCmd);

        BufferedReader in = new BufferedReader(new InputStreamReader(p
                .getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            System.out.println(inputLine);//i want to send this string to servlet
        }
        in.close();

    }// try
    catch (IOException e) {
        System.out.println(e);
    }


在处理地址时,在while循环中它会产生一些字符串值,我想在生成每个字符串值时将其发送给servlet。我在谷歌上搜索了很多。但我没有找到任何想法......

请帮帮我......!

4

2 回答 2

0

你可以放一个 ArrayList pingResults;作为会话变量...

然后你只需要从jsp页面读取。

    protected void doPost(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {

            ArrayList<String> pingResult=new ArrayList<>();
            HttpSession s = request.getSession();

            //Add your values
            s.setAttribute("Values", values);
            //Redirect to jsp where you show the strings
            response.sendRedirect("exemple.jsp");
}

然后在你的jsp中你只需要调用会话变量Values

如果您想要实时打印,您可以使用以下代码:

protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

    PrintWriter out = response.getWriter();

    out.println("<HTML>");
    out.println("<HEAD><TITLE>Ping Result</TITLE></HEAD>");
    out.println("<BODY>");


    ip="www.google.com"; //Got from servlet
    String pingCmd = "ping " + ip;
    ArrayList<String> pingRsult = new ArrayList<String>();
    pingRsult.add("Pinging Data");
    try {
        Runtime r = Runtime.getRuntime();
        Process p = r.exec(pingCmd);

        BufferedReader in = new BufferedReader(new InputStreamReader(p
                .getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            System.out.println(inputLine);
            out.println("<p>"+inputLine+"</p>");
        }
        in.close();                        
            out.println("</BODY></HTML>");
    }// try
    catch (IOException e) {
        System.out.println(e);
    }
}

这样,servlet 读取的每一行,都会在 servlet 页面上打印出来。

于 2013-05-27T12:12:57.600 回答
0

使用请求范围或会话范围来存储值并在 servlet 中使用相同的值。

于 2013-05-27T12:16:09.133 回答