我写了一个JSP页面.就两上按钮,两个安装都分别调用了JAVA类方法.
当我刷新一下页面时后台就会打印成功,并且两个按钮都执行了,但是我真正点击按钮时又不会产生任何效果。
以下是我的代码,大虾看看。本人初学者。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html; charset=UTF-8" %> 
<%@ include file="/jsp/admin/includeAdmin.jsp"%>
<jsp:useBean id="MySqlBak" class="webapp.MySqlBak" scope="request" />
<html>
<head>
<title>数据库操作</title>
 <script type="text/javascript">
   function bak()
   {
   <%
   MySqlBak.save();
   %>
  
   }
function bak2()
{
<%
   MySqlBak.restoration();
   %>
}
     
 </script>
 
</head>
<body>
<p align="center"><b><font size="3"><strong>数据库操作</strong>
</font></b></p><hr/>
<p align="center">
<input type="button" name="sava"  value="数据库备份" onclick="bak();"/>     
<input type="button" name="restoration" value="数据库恢复" onclick="bak2();"/>
</p>
</body>
</html>

解决方案 »

  1.   

    你看一下它编译的JAVA文件,看它的执行顺序就知道是为什么了?
      

  2.   

    页面加载时会先运行JAVA代码..
      

  3.   

    页面生成时MySqlBak.save();MySqlBak.restoration(); 就已经执行了,所以你刷新页面就会看到执行效果
    生成的页面两个js函数bak() bak2() 是空的,点击按钮当然不会有反应了
      

  4.   

    <%MySqlBak.save();%>  你在JS里为什么要用<%%>把代码括起来呢?你把<%%>去掉应该就可以了 加载页面 通过点击按钮来调用JS脚本 执行命令!你加上<%%>在页面加载的时候会把<%%>里的代码直接执行~不加<%%>则代表它是一段JS脚本  个人觉得就是这的问题 你试试吧
      

  5.   

    lz还是通过form提交或者ajax调用后台方法吧...
      

  6.   

    把bean的scope改成session,试试看
      

  7.   

    楼主先刷新页面之后查看页面的源代码就明白了
    动态的标签是加载生成页面时就执行的
    就像你在页面中用  ${**} 的时候,在页面生成之后你看见的是**的真正内容一样。
    就是说在你生成页面的时候已经执行了MySqlBak.save(); 
    而真正调用JS的时候FUNCTION里是没有东西的
      

  8.   

    大哥你的JS里面直接填写JAVA代码是不行的,会被编译的,没有你这种用法。我知道你的意图,
    一般的做法是点击按钮,提交表单,把你的对象通过URL传到后台,同时还有个标志位,来区分方法。你这样做是绝对不可以的
      

  9.   

    你是不是想要这个
    <%@ page import="webapp.MySqlBak" %>
    <%
      MySqlBak mySqlBak = new MySqlBak();
      String command = request.getParameter("command");
      if("bak".equals(command)) {
        MySqlBak.save();
        return;
      }
      if("bak2".equals(command)) {
        MySqlBak.restoration();
        return;
      }
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@ include file="/jsp/admin/includeAdmin.jsp"%>
    <html>
    <head>
    <title>数据库操作 </title>
    <script type="text/javascript">
      function bak() {
        document.getElementById("command").value = "bak";
        document.getElementById("form1").submit();
      }
      function bak2() {
        document.getElementById("command").value = "bak2";
        document.getElementById("form1").submit();
      }   
    </script></head>
    <body>
    <p align="center"> <b> <font size="3"> <strong>数据库操作 </strong>
    </font> </b> </p> <hr/>
    <p align="center">
    <form action="本页" id="form1" method="post">
    <input type="hidden" id="command" name="command"/>
    <input type="button" name="sava"  value="数据库备份" onclick="bak();"/>   
    <input type="button" name="restoration" value="数据库恢复" onclick="bak2();"/>
    </form>
    </p>
    </body>
    </html> 有错误请指证
      

  10.   


    刚才没太看明白你的意思,但在JS里写<%%>肯定不行~你的意思是想点击按钮后调用MySqlBak类里的方法是吧?如果只是这样的话 按你这么写 不被执行就怪了 你完全可以做个中转页.点击后跳到那个页里执行你想要执行的方法就好了~然后提示备份成功或恢复成功之类的提示,并返回到操作页不就可以了吗?想要不刷新页面的效果就用DWR之类的东西做~