2012-02-08 2 views
0

Следующий код успешно запускается через .java-файл, но не запускается, если я пытаюсь запустить его через .jsp-файл.Выполнение команды net view через jsp

Если я удалю IP-адрес и домен, он успешно запущен.

Включая <% @ page import = "java.io. *.%" На странице jsp. Любая помощь будет оценена. Спасибо.

String[] commands = new String[]{"cmd", "/c", "net", "view", "IPADDRESSHERE", "/domain:DOMAIN"}; 

Runtime rt = Runtime.getRuntime(); 
Process pr = rt.exec(commands); 
BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream())); 
String strLine; 

while ((strLine = input.readLine()) != null) {  
System.out.println(strLine); 
} 

TestServlet.java

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class TestServlet extends HttpServlet { 
private static final long serialVersionUID = 1L; 

/** 
* @see HttpServlet#HttpServlet() 
*/ 
public TestServlet() { 
    super(); 
    // TODO Auto-generated constructor stub 
} 

/** 
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    response.setContentType("text/html;charset=UTF-8"); 
    PrintWriter out = response.getWriter(); 

    try { 

    Runtime rt = Runtime.getRuntime(); 
    Process pr = rt.exec("net view SHARENAMEGOESHERE"); 
    pr.wait(); 
    BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream())); 

    BufferedWriter output = new BufferedWriter(new FileWriter("networklist.properties", false)); 

    String [] nextLine; 
    String strLine; 
    String copied; 
    String newString = null; 
    StringBuilder toFile = new StringBuilder();     

    while ((strLine = input.readLine()) != null) { 

     out.println(strLine+"<br>");  

     if(strLine.indexOf("Print") != -1){ 

      copied = strLine;     
      copied = copied.replaceAll("\\s+", "");     
      nextLine = copied.split("Print"); 

      if(nextLine.length == 2){      
       newString = nextLine[1] + "=" + nextLine[0]+"\n"; 
       toFile.append(newString); 
       out.println(newString+"<br>"); 
      }     
     } 
    } 


    if(null != newString){ 
     output.write(toFile.toString()); 
    } 

    input.close(); 
    output.close(); 

    } catch (Exception e){ 
     e.printStackTrace(); 
     out.println(e.getMessage()); 
    } finally { 
     out.close(); 
    } 


} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    doGet(request,response); 
} 

}

+0

Знаете ли вы, что эта часть кода выполняет команду на сервере (где выполняется веб-сервер и Java/JSP-код), а не на клиентской машине (где работает веб-браузер и JSP-сгенерированный HTML-код)? – BalusC

ответ

0

Не запускайте его в JSP. Сделайте это в HttpServlet и вызовите его из JSP, если необходимо. JSP не имеет для этого сложного Java-кода по этой точной причине - трудно отлаживать и идентифицировать проблемы.

+0

Я просто что-то тестировал, я импортировал java.io. *, и я использовал out.print для вывода. – tshenolo

0

Похоже, что вы, возможно, пропустили какое-либо заявление об импорте.

Также еще одна вещь, вы пытаетесь распечатать файл чтения на экране? , то вы должны использовать out.println вместо System.out.println. System.out.println будет печатать на консоли, а не на странице.

Надеюсь, что это поможет.

Тем не менее, мой совет также будет таким же, что вы должны перенести этот код в какой-либо надлежащий класс либо сервлет, либо какой-либо полезный класс.

+0

создал сервлет и до сих пор не повезло. Из командной строки код работает как шарм, и как только я пытаюсь запустить его через сервлет, он вообще не работает. – tshenolo

+0

Как вы его используете? Вы развернули сервлет на каком-то сервере? И можете ли вы поделиться кодом сервлета, который вы написали. И только для подтверждения, вы хотите, чтобы выход приходил в браузер, вызывающий сервлет/jsp, или это что-то еще, что вы хотите? – Amit

+0

, пожалуйста, проверьте сервлет выше. Сервлет развертывается через военный файл и работает на tomcat. Код можно найти на странице https://gist.github.com/1789774 – tshenolo

Смежные вопросы