命令行请求jsp页面_jsp命令行页面-执行shell | 学步园

该博客介绍了如何通过jQuery在jsp页面上实现命令行请求功能,当用户按下回车键时,将执行指定的shell命令。jsp文件包含了一个textarea,用于接收用户输入的命令,并通过AJAX发送到`test.jsp`执行,然后将结果返回并显示在textarea中。整个过程涉及到文本区域的交互、事件监听、文件操作和系统命令执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看效果截图:

jsp文件如下:

放在同一目录下,需要导入jquery,jquery版本最低1.7:

cmd.jsp

jsp命令行页面

textarea{

background-color: #000;

color:red;

width:100%;

}

$(function(){

$("#cmd").keydown(function(event){

if(event.keyCode==13){

var cmd=getStrByLastLine();

//处理空格

log("开始执行:"+cmd);

//执行结果

$.get("test.jsp",{'cmd':""+cmd+""},function(data){

data.replace("\n","");

log("执行结果: " + data);

$("#cmd").val($("#cmd").val()+data);

//滚到最下方

$("#cmd")[0].scrollTop = $("#cmd")[0].scrollHeight;

});

}

});

});

function log(msg){

if(!msg) return;

if(!console) return;

console.log(msg);

}

//获取textarea最后一行

function getStrByLastLine(){

var str=document.getElementById("cmd").value,arr;//获取文本域内容

if(document.all){

// 如果是IE

arr=str.split("\n");

}else{

// firfox

arr=str.split("\n");

}

log(arr.length);

if(arr.length<1) return "";

for(var i=arr.length-1;i>0;i--){

if(arr[i]!=""&&arr[i]!=" ")

return arr[i];

}

return arr[arr.length-1];

}

test.jsp

private String execCMD(String cmd){

if(cmd==null||cmd=="") return "";

String fileName="xxxxx.bat";

if(!System.getProperties().getProperty("os.name").toLowerCase().startsWith("win"))

fileName="xxxxx.sh";

//写入文件

try {

File f=new File(fileName);

if(!f.exists()) f.createNewFile();

FileOutputStream osOutputStream;

osOutputStream = new FileOutputStream(f);

if(!"xxxxx.bat".equals(fileName))

osOutputStream.write("#!/bin/sh\n".getBytes());

osOutputStream.write(cmd.getBytes());

osOutputStream.close();

} catch (Exception e) {

e.printStackTrace();

return e.getMessage();

}

//执行命令

StringBuilder sb=new StringBuilder();

BufferedReader br = null;

Process p =null;

try {

p = Runtime.getRuntime().exec(fileName);

br = new BufferedReader(new InputStreamReader(p.getInputStream()));

String line = null;

while ((line = br.readLine()) != null) {

sb.append(line+"\n");

}

} catch (Exception e) {

e.printStackTrace();

return e.getMessage();

} finally {

if (br != null) {

try {

br.close();

p.destroy();

} catch (Exception e) {

e.printStackTrace();

}

}

}

return sb.toString();

}

%>

String cmd=request.getParameter("cmd");

if(cmd!=""||cmd!=null){

response.getWriter().write(execCMD(cmd));

}

%>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值