如何使JSP函数仅在调用时运行?

时间:2017-10-19 12:06:28

标签: java mysql jsp

我有一个JSP页面如下:

Postgresql

正如您所看到的,当单击按钮时,我已经使它运行声明的JSP函数。但是当加载JSP文件时,函数会自动运行并且插入MYSQL查询会自动插入查询中给出的值。

我不希望函数<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Admin Tools</title> <jsp:include page="/basic/nav.jsp"/> <link rel="stylesheet" type="text/css" href="tools.css"/> </head> <body> <div class="container"> <h2>Admin Tools</h2> <br/><br/><br/><br/> <%@page import="java.sql.ResultSet"%> <% boolean def_admin = false, def_admin_changed = false; conn.connect.main(null); conn.dbc.main(null); ResultSet rstools = conn.connect.st.executeQuery("select * from admins where uname='admin'"); if (rstools.next()) { if (rstools.getString("uname").equals("admin") && rstools.getString("password").equals("123")) { def_admin = true; } if (rstools.getString("uname").equals("admin") && !rstools.getString("password").equals("123")) { def_admin_changed = true; } } %> <%if (def_admin == false) {%> Add Default Admin Account :<br/> <input type="button" value="Add" onclick="<% add_admin(); %>"/> <% } else if (def_admin == true && def_admin_changed == false) { %> Delete Default Admin Account :<br/> <input type="button" value="Delete" onclick="<% delete_admin(); %>"/> <% } else if (def_admin == true && def_admin_changed == false) { %> The Default Admin Password Exists but the password has been changed<br/> Do you still want to delete the Default Admin Account?<br/> <input type="button" value="Even so, Delete it" onclick="<% delete_admin(); %>"/> <% }%> <div id="tools_error"></div> <%! boolean insert_success = false; void add_admin() { try { int Urows; Urows = conn.connect.st.executeUpdate("insert into admins(uname,password) values('admin','123');"); if (Urows == 1) { insert_success = true; } else { insert_success = false; } %> <script> (function () { boolean i_s = "<%=insert_success%>"; if (i_s == false) { document.getElementById("tools_error").value = "There has been an error in Adding Default Admin"; } }); </script> <%! } catch (Exception e) { } } void delete_admin() { } %> </div> </body> <jsp:include page="/basic/footer.jsp"/> </html> add_admin()在加载时自动运行。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

TL; DR:你不能

加载页面时,您的Java代码执行一次。该页面不再出现在服务器上,因此您无法使用其后端功能。否则,这意味着重写HTML的人可能会使您的页面在后端执行任何代码。

加载页面后,其中的所有内容都是HTML和Javascript(CSS如果你想争吵)。

答案 1 :(得分:1)

当有人打开您的网页并点击按钮时,会在客户端执行网页中的事件(例如onclick事件)。 JSP页面是在打开网页时执行的,其结果是客户端收到的实际页面。因此,只有在加载页面(并编译JSP)时,您的方法才会执行。在您生成的网页中甚至看不到Java代码。如果你在浏览器中打开它并检查源代码,你会看到我的意思。