急!在线等!怎样在jsp做的网页里调用delphi做的a.exe文件啊?

juicely 2004-03-22 10:25:55
我想在jsp做的网页里放一个按扭,点击即可调用一个优化程序,是用delphi做的a.exe文件。
哪位知道,在线等!很急阿!
谢了!
...全文
146 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
juicely 2004-03-24
  • 打赏
  • 举报
回复
高手们,请帮忙啊!
xiehoo 2004-03-24
  • 打赏
  • 举报
回复
高度关注,继续
juicely 2004-03-24
  • 打赏
  • 举报
回复
to:srx(钻石史老三)
先感谢您的帮忙!
我有几点疑问:
1、上面的方法是把a.exe放在服务器上还是客户端?如果放在服务器上,还用修改path吗?
2、callExe2.jsp是哪个文件?起什么作用?
3、CallExe.java里的p = r.exec("notepad");//修改为你的a.exe的绝对路径
是把notepad定意成
String notepad = "cmd.exe /c start c:/Program Files/Apache Group/Tomcat4.1/webapps/ROOT/jxyh/a.exe "; 吗?
4、System.out.println("exception when run notedpad.");
中的notedpad是不是应该写成notepad?但notepad是字符串,这里是不是应该写成
System.out.println("exception when run ‘notedpad’.");呢?
请指教!万分感谢!
  • 打赏
  • 举报
回复
应用时写成Servlet最好不过了。
  • 打赏
  • 举报
回复
先写了一个,搂主凑合用吧。应用不太适合,但是解释原理足够了。
callExe.jsp
<%@ page language="java" import="CallExe;"%>
<jsp:useBean id="mycall" class="CallExe" method="post"/>

<form action="callExe2.jsp" method="post">
<input type="submit" name="s" value="优化">
</form>
<%
if( request.getMethod().equalsIgnoreCase("post")){
mycall.call();
}
%>

CallExe.java


public class CallExe{

public void call(){
Runtime r = Runtime.getRuntime() ;
Process p = null ;
try{
p = r.exec("notepad");//修改为你的a.exe的绝对路径
//p.waitFor() ; //注释她可以在记事本关闭前让浏览器完成
}catch( Exception e ){
System.out.println("exception when run notedpad.");
}

}//end call()
}//:~
juicely 2004-03-24
  • 打赏
  • 举报
回复
to: srx(钻石史老三)
谢谢大侠,我按你的话作了,编译了 CallExe.java ,并生成 CallExe.class,将这两个文件放到ROOT\WEB-INF\classes\call 文件夹里,把callExe.jsp 放到ROOT里,但调用callExe.jsp 时出现错误如下:
-------------
org.apache.jasper.JasperException: /jxyh/callExe.jsp(40,0) UseBean: Invalid attribute, method

--------------
好像是没有找到方法,我以前测试jsp调用javabean时文件就是这么放的,不知是哪里错了?
能帮帮我吗?
谢谢
  • 打赏
  • 举报
回复
a.exe当然是放在服务器上了。
notepad是一个可执行文件 = notepad.exe ,是windows自带的记事本程序。
你执行后看到记事本打开了,就对了。
=================================

下面是你的问题:
a.exe是否加到%path%里无所谓,如果不加,你可以写绝对路径那样调用。就象下面的
代码:如果a.exe加到了环境变量%path%里,在bean里就直接写p = r.exec("a.exe");
两者差不多。

修改了一下:
---------------- callExe.jsp --------------------------
<%@ page language="java" import="CallExe;"%>
<jsp:useBean id="mycall" class="CallExe" method="post"/>

<form action="callExe.jsp" method="post">
<input type="submit" name="s" value="优化">
</form>
<%
if( request.getMethod().equalsIgnoreCase("post")){
mycall.call();
}
%>

----------- CallExe.java ---------------------
public class CallExe{

public void call(){
Runtime r = Runtime.getRuntime() ;
Process p = null ;
try{
p = r.exec("c:/a.exe");
}catch( Exception e ){
}

}//end call()
}//:~
juicely 2004-03-23
  • 打赏
  • 举报
回复
TO lvchuanxi(小小^_^) ,是要在客户端运行,怎么联系你?
wandou999 2004-03-23
  • 打赏
  • 举报
回复
严重关注!!!
lvchuanxi(小小^_^) 能给我一份吗?
lvchuanxi 2004-03-23
  • 打赏
  • 举报
回复
你是要那个程序在客户端运行吧??如果是的话联系我!!
center204 2004-03-23
  • 打赏
  • 举报
回复
applet
juicely 2004-03-23
  • 打赏
  • 举报
回复
我想问一下,
1、是否先要在jbuilder里建立一个工程,编写一个bean,执行后产生.class,和.java文件,再用jsp调用呢?
2、这个bean放在哪?和调用他的jsp文件的各自的目录应该怎么设置呢?
还需要其他配置么?
谢谢楼上的各位关注。
dropship 2004-03-23
  • 打赏
  • 举报
回复
程序是在服务器上执行的啊,客户机当然看不到东西了。
又不象是servlet还返回给客户浏览器一个txt/html
liutang2 2004-03-23
  • 打赏
  • 举报
回复
关注……
leotonny 2004-03-23
  • 打赏
  • 举报
回复
个人认为应该把exe文件做成dll或ocx文件,通过jni调用dll或ocx文件中的函数
可以到网上先找些jni的文档学习一下
xiehoo 2004-03-23
  • 打赏
  • 举报
回复
我还是没有成功,代码如下:直接在控制台输入
cmd.exe /c start C:/resin/bin/httpd.exe
可以运行

<%@ page language="java" contentType="text/html; charset=gb2312" %>
<%@ page import="java.util.*,java.lang.*,java.io.*" %>

<% try{
String command = "cmd.exe /c start C:/resin/bin/httpd.exe";
Process child =Runtime.getRuntime().exec(command);
out.print("OK");
}
catch(IOException e)
{out.print(e.getMessage());
}
%>
输出ok其他没什末反映,大家继续讨论,帮忙指点啊
juicely 2004-03-23
  • 打赏
  • 举报
回复
还有人知道吗?请帮忙阿!!!
juicely 2004-03-23
  • 打赏
  • 举报
回复
to:ddadoris(马加爵)
全部文件如下;

调用javabean的.jsp文件是yhjx.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page import = "java.sql.*" %>
<html>
<head>
<title>ww</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<%@ page contentType="text/html;charset=gb2312" %>
<% request.setCharacterEncoding("GB2312");%>
</head>
<script language="JavaScript">
function reshow()
{}
</script>
<body bgcolor="DFE8FD" > <%@ page import = "test.TestCallC" %>
<% TestCallC c = new TestCallC();%>
<%c.TestCallC1();%>
</body>
</html>

在ROOT\WEB-INF\classes\test里的TestCallC.java和TestCallC.class
分别如下:
TestCallC.java内容如下:
-----
package test;

import java.io.IOException;

/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/

public class TestCallC {
public TestCallC() {
}
public void TestCallC1()
{
try{
String command = "cmd.exe /c start c:/Program Files/Apache Group/Tomcat 4.1/webapps/ROOT/jxyh/a.exe ";
Process child = Runtime.getRuntime().exec(command);
}
catch(IOException e)
{

;
}
--------

TestCallC.class文件内容如下
---------
// JBuilder API Decompiler stub source generated from class file
// 2004-3-23
// -- implementation of methods is not available

package test;

public class TestCallC {

// Constructors
public TestCallC() { }

// Methods
public void TestCallC1() { }
}

---------

都在这了,请问过路的高手们,到底该怎么用啊?帮帮忙吧!
ddadoris 2004-03-23
  • 打赏
  • 举报
回复
搞不清楚你怎么写的,全部贴出来看看
juicely 2004-03-23
  • 打赏
  • 举报
回复
to: ddadoris(马加爵) ,谢谢你
不过我试了,不行啊!
出错为
--------------
org.apache.jasper.JasperException: test.TestCallC.TestCallC1()V
..........
javax.servlet.ServletException: test.TestCallC.TestCallC1()V

-------------
其中TestCallC为类名,TestCallC1为方法名。
请指教。谢谢您了!


to: srx(钻石史老三),我试了你的第一个方法,
在path下添加a.exe,
具体为path:%SystemRoot%\system32\a.exe
并把a.exe考到了WINNT\system32下,
点击链接call.jsp,该文件完全拷贝你上面给的代码;
可是程序的进度条走到一半就不走了,没有任何反应。
我想问你的
<form action="call.jsp"><input type="submit" name="优化">
</form>
有用吗?放在哪?
这种方式在客户端能调用并执行a.exe吗?

对于第二种方法,能说得再详细写吗?

我的目的是想把a.exe放到服务器上,但是在客户端可以调用并执行,整个程序的运行都在服务器上,客户端只是发出执行命令,输入数据,并能看到结果。

多谢赐教!感激涕零!

加载更多回复(22)

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧