-1

私はこれとしてJavaファイルを持っています

    public class Execute {

    public void run(){
        try{
            Runtime runtimeInstance = Runtime.getRuntime();
            Process p = runtimeInstance.exec("cmd /c D:\\Data\\Personal\\abu\\CobaAppFuse\\ExecuteCLI\\src\\java\\cli\\abu.bat");
            System.out.print(p);

        }catch(Exception ex){
            System.out.print(ex);
        }


    }
}

jspファイルパスの場合、ファイルを実行するにはどうすればよいですか??

ファイル JSP

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="abu.execute.cli.Execute" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <table align="center" border="3">
            <tr>
                <td><input type="submit" value="submit" name="submit"/></td>
            </tr>
        </table>

    </body>
</html>

送信ボタンが押されたときにJavaファイルを実行したい ありがとう....

4

2 に答える 2

1

誰かが JSP ファイル x.jsp にアクセスするたびに、この手順を実行したいと考えています。

JSP ファイル内で Java コード形式を実行することは可能ですが、私は決してお勧めしません。理由を尋ねるかもしれませんが、これはこの投稿でこれまで以上に詳しく文書化されています。

あなたの質問に答えるには、サーブレットを作成する必要があります

@WebServlet("/YourServlet")
public class YourServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public YourServlet() {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      new Execute.run();
      request.getRequestDispatcher("/WEB-INF/_search.jsp").forward(request, response);
    }
}

さらに、webapp のパーミッションを変更する必要があります。このページに記載されています。

これは最も基本的なアプローチであり、最もクリーンなアプローチではないことに注意してください。通常、(実行計画を制御する) Java コードの実行は、サービス内で行われます。(agian) HttpServlet を宣言し、そこでサービスを宣言することで、アプリケーションにサービスを追加できます。

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
        new Execute.run();

        if (view.equals(request.getPathInfo().substring(1)) {
            request.getRequestDispatcher("/WEB-INF/" + view + ".jsp").forward(request, response);
        } else {
            response.sendRedirect(view);
        }
    } catch (Exception e) {
        throw new ServletException("Executing action failed.", e);
    }
}

以下のコメントの意味はわかりませんが、より完全なものにするために、回答に html コードを追加します。実際には、これは次のことを意味します。

送信時に、html はサーブレットへの HTTP-Post を作成する必要があります。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <table align="center" border="3">
            <tr>
                <td><form action='Myactionhandle'><input type="submit" value="submit" name="submit"/></form></td>
            </tr>
        </table>
    </body>
</html>

そして、サーブレットはコードを実行する必要があります。

@WebServlet("/Myactionhandle")
    public class YourServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;

        /**
         * @see HttpServlet#HttpServlet()
         */
        public YourServlet() {
            super();
        }

        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          new Execute.run();
          request.getRequestDispatcher("/WEB-INF/_search.jsp").forward(request, response);
        }
    }
于 2013-03-05T08:21:53.160 に答える
-1

JSP に JavaScript を追加します。ボタンをクリックすると、スクリプトレットを使用してオブジェクトを作成することにより、Java クラスを実行できる関数が呼び出されます。

于 2013-03-05T08:40:35.943 に答える