我正在工作JSP
,我想在不使用 .how 的情况下单击 html 按钮调用 java 方法(函数)<script></script>
?我尝试编写这段代码:
<button onclick="<%po.killThread();%>">
<font size="4">Kill</font>
</button>
但它不起作用......所以请帮助我。
谢谢
您误解了服务器端编程的工作原理。当您加载该页面时,网络服务器将到达该行 <button onclick="<%po.killThread();%>">
并立即解析并执行 JSP 片段(在您的情况下),并用该方法的返回值(如果有po.killThread()
)替换 和 之间的所有内容。所有这些都发生在服务器端,在客户端收到任何东西之前。(请注意,仅当该页面尚未被服务器加载并编译为 Servlet 时才会发生这种情况。)<%
%>
因此,客户端收到的 HTML 将类似于 , <button onclick="some return value or nothing">
,这意味着当您按下按钮时不会发生任何事情。如果您想在按钮按下时执行进一步的 JSP 命令,您将需要向服务器发出新请求 - 例如,通过重定向页面。
这将在您打开网站时调用函数 killThread。
尝试重定向到另一个调用该函数的 jsp。
这根本不会运行,因为在编译 jsp 页面后它将返回 po.killThread() 值但不会调用此方法
您可以通过查看页面源来看到这一点
JSP 是一种服务器端技术。我说的是服务器端吗?
为了了解 JSP 的工作原理并消除任何误解,JavaRanch Journal (Vol. 4, No. 2) : The Secret Life of JavaServer Pages是一本非常好的读物。
同一节选段,
- JSP 是一种模板技术,最适合以与空白无关的格式交付动态文本文档。
- JSP 页面中的模板文本(即任何非动态元素)包含所有空白和行终止符,成为最终文档的一部分。
- JSP 中的所有动态元素都在服务器上进行解释,并且一旦将文档发送到客户端,就不可能进行进一步的动态交互(除非请求相同或另一个文档)。
如果您使用 JSP,那么要执行一些方法调用,您必须编写一个 servlet,然后调用 servlet 中的方法doPost
或doGet
方法。
另一方面,如果您想让事情变得更简单,请使用JSF
可以帮助您实现目标的框架,因为它JSF
支持事件处理。