0
public class Test extends HttpServlet {
private static final long serialVersionUID = 1L;

public Test() {
    super();
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();

    out.println("<HTML><HEAD><TITLE>MovieDB</TITLE></HEAD>");
    out.println("<BODY><H1>MovieDB</H1>");

    out.println("<a href = '#' onclick = 'on_Click();'> Call Function </a>");

}

public void on_Click()
{
    System.out.println("HELLO");
}
}

ページの HTML リンクで Java 関数 on_Click() を呼び出したいだけですが、これを行うにはどうすればよいですか?

4

2 に答える 2

0

Javaonclickではありません。それはJavaScriptです。Java とはまったく異なる言語です。それらに共通しているのは、言語名の最初の 4 文字、いくつかのキーワード、およびいくつかの構文だけです。しかし、それだけです。

リンクが、サーブレット マッピングの URL パターンに一致する URL を指すようにするだけです。の URL パターンにサーブレットをマッピングしたと想像してください/foo/*

<a href="foo">Call function</a>

doGet()これは、サーブレットのメソッドを呼び出すだけです。

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("Hello");
}

複数のアクションで同じサーブレットを再利用したい場合は、アクション識別子をリクエスト パラメータとして渡すだけです。

<a href="foo?action=bar">Call function</a>

doGet()サーブレットの

String action = request.getParameter("action"); // "bar"

またはパス情報として

<a href="foo/bar">Call function</a>

doGet()サーブレットの

String action = request.getPathInfo().substring(1); // "bar"

変な JavaScript のアプローチや回避策は必要ありません。

以下も参照してください。


具体的な問題とは関係ありませんが、HTML はServlet ではなくJSPに属します。

于 2013-02-01T00:32:14.807 に答える
0

サーブレットはサーバー上で実行されますが、HTML はユーザーのコンピューター上で実行されるため、javascript/ajax を使用してリクエストをサーバーに送信し、on_Click 関数を実行する必要があります。

于 2013-02-01T00:32:29.050 に答える