2

我正在工作JSP,我想在不使用 .how 的情况下单击 html 按钮调用 java 方法(函数)<script></script>?我尝试编写这段代码:

<button onclick="<%po.killThread();%>">
    <font size="4">Kill</font>
</button>

但它不起作用......所以请帮助我。

谢谢

4

5 回答 5

3

您误解了服务器端编程的工作原理。当您加载该页面时,网络服务器将到达该行 <button onclick="<%po.killThread();%>">立即解析并执行 JSP 片段(在您的情况下),并用该方法的返回值(如果有po.killThread())替换 和 之间的所有内容。所有这些都发生在服务器端,在客户端收到任何东西之前。(请注意,仅当该页面尚未被服务器加载并编译为 Servlet 时才会发生这种情况。)<%%>

因此,客户端收到的 HTML 将类似于 , <button onclick="some return value or nothing">,这意味着当您按下按钮时不会发生任何事情。如果您想在按钮按下时执行进一步的 JSP 命令,您将需要向服务器发出新请求 - 例如,通过重定向页面。

于 2013-08-14T08:40:31.730 回答
1

这将在您打开网站时调用函数 killThread。

尝试重定向到另一个调用该函数的 jsp。

于 2013-08-14T08:37:26.640 回答
1

这根本不会运行,因为在编译 jsp 页面后它将返回 po.killThread() 值但不会调用此方法

您可以通过查看页面源来看到这一点

于 2013-08-14T08:42:25.723 回答
1

JSP 是一种服务器端技术。我说的是服务器端吗?

为了了解 JSP 的工作原理并消除任何误解,JavaRanch Journal (Vol. 4, No. 2) : The Secret Life of JavaServer Pages是一本非常好的读物。

同一节选段,

  • JSP 是一种模板技术,最适合以与空白无关的格式交付动态文本文档。
  • JSP 页面中的模板文本(即任何非动态元素)包含所有空白和行终止符,成为最终文档的一部分。
  • JSP 中的所有动态元素都在服务器上进行解释,并且一旦将文档发送到客户端,就不可能进行进一步的动态交互(除非请求相同或另一个文档)。
于 2013-08-14T09:22:29.873 回答
0

如果您使用 JSP,那么要执行一些方法调用,您必须编写一个 servlet,然后调用 servlet 中的方法doPostdoGet方法。

另一方面,如果您想让事情变得更简单,请使用JSF可以帮助您实现目标的框架,因为它JSF支持事件处理。

于 2013-08-14T08:40:10.233 回答