如何使用JSP页面中的参数运行java类?

我之前写过一个从bash文件执行的java类,现在我需要允许它使用Javascript / HTML按钮从JSP页面执行,我想知道我该怎么做?

首先,我的课看起来像这样:

public class Sync { public static void main(String[] args) { //my content here } } 

此Sync类已从bash脚本运行,如下所示:

 cd /root/tomcat/webapps/project/WEB-INF/classes/ echo "Executing first part..." /usr/local/java/bin/java classes/CLRSyncCLI 120.0.0.1 up false Y ${IPS[@]} echo "Executing second part..." /usr/local/java/bin/java classes/CLRSyncCLI 127.0.0.1 down false Y ${IPS[@]} 

请注意:classes是TomCat Web服务器中所有已编译的Java类的目录。

现在在jsp页面中我需要这样的东西:

  

如何通过单击按钮两次运行此参数类及其参数两次,并显示该类已使用消息执行。

首先,我想说一下你提出的建议是个坏主意。 您应该按照之前的答案中的描述重构Sync

但是,如果您按原样使用Sync ,那么以下是一些可能有用的代码:

 <% if( request.getParameter( "to" ) == null ) { %> 

Click 'Execute' to begin processing.

<% } else { %>

Processing...

 <% PrintStream sysout = System.out; try { File syncFile = File.createTempFile( "Sync", ".tmp" ); PrintStream syncOs= new PrintStream( syncFile ); System.setOut( syncOs ); String[] myArgs = ...; // set up your args Sync.main( myArgs ); // ... do whatever else you need to do syncOs.close(); syncFile.close(); FileReader syncRdr = new FileReader( syncFile ); String line = null; while( ( line = syncRdr.readLine() ) { out.println( line ); } syncRdr.close(); syncFile.delete(); } catch( Exception ex ) { out.print( ex ); } finally { System.setOut( sysout ); } %> 

<% } %>

这里有一些潜在的缺陷,尤其是multithreading。 但也许你可以用它作为起点? 另外,我没有调试它,所以你可能需要做更多的工作。

祝好运,

DC

你的类必须扩展javax.servlet.http.HttpServlet并覆盖至少一个方法,如果你正在做一个表单,那么它将是一个方法doPost()

然后你需要在WEB-INF / web.xml中添加一个和一个来指向你的类(现在是一个Servlet)。

从路径来看,您已经安装了Tomcat。 javax.servlet。*可以在名为servlet-api.jar的tomcat / lib中找到。 你只需要它们进行编译。 Tomcat在运行时提供它们。

只有这样才能在JSP中创建一个表单,如下所示:

......

假设MyServlet是您添加到web.xml的Servlet(如果需要,请替换为您自己的Servlet)。

这是一个例子: http : //met.guc.edu.eg/OnlineTutorials/JSP%20-%20Servlets/A%20servlet%20example.aspx

至少阅读JavaEE指南第4章总是有意义的: http : //docs.oracle.com/javaee/5/tutorial/doc/bnafd.html

简短回答: onClick="path here"应链接到运行类的第二个JSP,而不是类本身。

答案很长:

  1. 在tomcat lib文件夹中复制您的类

  2. 创建第二个JSP文件

  3. 第一个JSP上的onClick="path here"应该链接到将运行类的新JSP,而不是类本身。

  4. 将类路径添加到JSP标头import="com.mypackage.*"

  5. 您必须创建一个接收参数并运行逻辑的方法,您将无法像在命令行中那样运行main方法。

将调用代码添加到JSP

 <% CLRSyncCLI o = new CLRSyncCLI(); o.method(); %>