今天在学习写web网页的时候遇到了个问题。
html页面画完了,该学习链接数据库了,利用java.sql包写了一些个数据库操作的函数。调用这些函数的时候需要用
“”包括起来,表示这是在服务器端执行的代码。
那我在页面的script语句中能调用这些方法吗?如何传参数呢?
已知的数据库操作函数:
DAOFactory.getPublicationDAOImpl().findByName(string name);
展现页面:aa.jap
在aa.jsp中有一些个输入框,和一个提交的按钮,当用户点击按钮的时候,进行这个页面的信息的提交。
import='.......'%>
%>
//跳转代码
function on_save()
{ //用户点击“保存”按钮
}
method="post">
cellPadding=0 cellSpacing=0 id="senfe">
width="24%"
align="center">名称
color="#000000">
name="name" type="text" class="userinfo" id="name" maxlength="20"
value =
> //一个输入框
name="back_save" class="buttons02"
onClick=on_save();/> //一个保存按钮
调用的是脚本 on_save()
我的处理:
在上述页面中:
function on_save()
{
var oDose=
window.document.getElementByIdx_x("name");//得到用户输入
DAOFactory.getPublicationDAOImpl().findByName(oDose.value);//进行数据库操作
}
这种做法是错误的。
因为:
前台/后台的函数不能互相直接调用的。页面的执行顺序是先执行Server端代码(既
%>)生成页面,然后被Browser下载装入后执行浏览器脚本语言后显示出来。浏览器的脚本语言触发页面更新的方法,服务器收到以后调用相应的服务器端代码进行更新页面的操作。所以Server端的函数不能直接调用Browser端的函数,反之亦然。(当然,可以使用服务器端的变量.)
所以 正确的做法是:
function on_save()
{
window.document.forms[0].action =
"/pubmanage/modify_update.jsp";
window.document.forms[0].submit();
//form[0]指的是页面中的第一个form
}
然后在modify_update.jsp中:
String name =
SystemConstant.getGBKString(request.getParameter("name"));
%>
window.location="../pubmanage/aaa.jsp?date=" +
new DATE();
//对name的调用 <%=name%>