以下代码通过.java文件成功运行,但如果我尝试通过.jsp文件运行,则不会运行。
如果我删除IP地址和域,它会成功运行。
我包括<%@jsp页面上的页面导入="java.io.*"%>。任何帮助都将不胜感激。非常感谢。
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);
}
}
不要在JSP中运行它。在HttpServlet
中执行此操作,并在需要时从JSP调用它。JSP并不意味着里面有复杂的java代码,因为这是很难调试和识别问题的。
看起来您可能错过了一些导入语句。
还有一件事,你想在屏幕上打印已读文件吗??那么应该使用out.println而不是System.out.println。System.out.println将在控制台上打印,而不是在页面上打印。
希望这能有所帮助。
不过,我的建议也是一样的,您应该将这些代码移动到适当的类servlet或实用程序类。