java變量和javascript變量之間的傳遞示例
更新時間:2014年05月16日 17:01:43 作者:
用jsp做一個網(wǎng)站,其間涉及到j(luò)ava變量和javascript變量之間的互換,下文給出不錯的解決方案,希望對大家有所幫助
最近在用jsp做一個網(wǎng)站,其間涉及到j(luò)ava變量和javascript變量之間的互換,雖然網(wǎng)上資料眾多,但是眾說紛紜,并且很多都是帶有誤導性,做了許多嘗試,終于比較清楚的搞懂了這個問題。通俗一點來講,就是說java代碼是運行在服務(wù)器上的,返回的值只是靜態(tài)的存在于頁面,而javascript是腳本語言,是運行在客戶端的!它們是兩種完全不同的語言,變量不能直接進行交換,但是通過一定的方式,變量可以傳遞。
java變量傳遞給javascript變量,這個比較簡單,就是平時的普通方法就好:
var cnt = <%=number%>;
注意別漏掉等號!這個沒什么問題。
javascript變量傳遞給Javab變量,這個稍微復雜一些,但是清楚了原理其實也很簡單,這邊主要是通過表單提交以及表單元素來獲取和進行操作:
<script language="javascript">
function button_click(cnt) {
++cnt;
document.submitForm.msg.value = cnt;
document.submitForm.submit();
}
</script>
<%
number = request.getParameter("msg");
if(number==null)
number="1";
RdData.setIndex(number);
RdData.readData();
out.println("<br />");
out.print(RdData.getIndex() + ".");
out.print(RdData.getTitle());
out.println("<br />");
out.println("A." + RdData.getStrA());
out.println("<br />");
out.print("B." + RdData.getStrB());
out.println("<br />");
out.print("C." + RdData.getStrC());
out.println("<br />");
out.print("D." + RdData.getStrD());
%>
<input name="index" type="text" value="<%=RdData.getIndex()%>" />
<input type="button" value="btn" name="bt" onclick="button_click(<%=number%>)">
<form name="submitForm">
<input type="hidden" name="msg" value=<%=RdData.getIndex()%>/>
</form>
特別注意表單和javascript代碼部分!通過表單的隱藏元素把數(shù)據(jù)庫取出來的一個數(shù)據(jù)傳給處理函數(shù),進行相關(guān)操作后,提交表單,java代碼通過request.getParameter()獲取,就OK啦~~~其實當時挺糾結(jié)的一個問題是變量不同步,因為我要實現(xiàn)的功能是每點擊按鈕一次計數(shù)器加一并對數(shù)據(jù)庫進行一次讀操作,如果計數(shù)器不一致就會直接導致讀取的順序問題,刷新頁面是可以解決問題,但是一直刷新也不是個好辦法。于是想到傳一個參數(shù)進去,OK,好了
java變量傳遞給javascript變量,這個比較簡單,就是平時的普通方法就好:
復制代碼 代碼如下:
var cnt = <%=number%>;
注意別漏掉等號!這個沒什么問題。
javascript變量傳遞給Javab變量,這個稍微復雜一些,但是清楚了原理其實也很簡單,這邊主要是通過表單提交以及表單元素來獲取和進行操作:
復制代碼 代碼如下:
<script language="javascript">
function button_click(cnt) {
++cnt;
document.submitForm.msg.value = cnt;
document.submitForm.submit();
}
</script>
復制代碼 代碼如下:
<%
number = request.getParameter("msg");
if(number==null)
number="1";
RdData.setIndex(number);
RdData.readData();
out.println("<br />");
out.print(RdData.getIndex() + ".");
out.print(RdData.getTitle());
out.println("<br />");
out.println("A." + RdData.getStrA());
out.println("<br />");
out.print("B." + RdData.getStrB());
out.println("<br />");
out.print("C." + RdData.getStrC());
out.println("<br />");
out.print("D." + RdData.getStrD());
%>
<input name="index" type="text" value="<%=RdData.getIndex()%>" />
<input type="button" value="btn" name="bt" onclick="button_click(<%=number%>)">
<form name="submitForm">
<input type="hidden" name="msg" value=<%=RdData.getIndex()%>/>
</form>
特別注意表單和javascript代碼部分!通過表單的隱藏元素把數(shù)據(jù)庫取出來的一個數(shù)據(jù)傳給處理函數(shù),進行相關(guān)操作后,提交表單,java代碼通過request.getParameter()獲取,就OK啦~~~其實當時挺糾結(jié)的一個問題是變量不同步,因為我要實現(xiàn)的功能是每點擊按鈕一次計數(shù)器加一并對數(shù)據(jù)庫進行一次讀操作,如果計數(shù)器不一致就會直接導致讀取的順序問題,刷新頁面是可以解決問題,但是一直刷新也不是個好辦法。于是想到傳一個參數(shù)進去,OK,好了
相關(guān)文章
JSP上傳圖片產(chǎn)生 java.io.IOException: Stream closed異常解決方法
在做jsp上傳圖片時,把java代碼直接改成 jsp,上傳時產(chǎn)生異常,很是疑惑,于是搜索整理了一下解決方法,需要了解的朋友可以參考下2012-12-12