一尘不染

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

tomcat

我以前编写了一个从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页面中,我需要类似:

<input type="button" value="Execute" name="to" action="run" onClick="path here">

一次单击一次,如何运行带有其参数的同步类两次,并显示该类已执行并带有消息。


阅读 253

收藏
2020-06-16

共1个答案

一尘不染

首先,我想说你的建议是一个坏主意。您应该Sync按照前面的答案进行重构。

但是,如果您不愿按Sync原样使用,则以下一些代码可能会有所帮助:

<% if( request.getParameter( "to" ) == null ) { %>
    <p>
        Click 'Execute' to begin processing.
    </p>
    <form>

        <input type="submit" value="Execute" name="to" />
    </form>
<% } else { %>
    <p>
        Processing...
    </p>
    <pre>
        <%
            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 );
            }
        %>
    </pre>
<% } %>

这里有一些潜在的陷阱,尤其是在多线程中。但是也许您可以以此为起点?另外,我尚未调试它,因此您可能需要做更多的工作。

祝好运,

直流电

2020-06-16