2013-02-28 76 views
5
  • 我在Java文件會話變量(TestConnection.java)

session.setAttribute( 「CONNECTION_DBNAME」,則dbname)。Javascript代碼讀取Java變量值

  • 如何閱讀CONNECTION_DBNAME值到JavaScript文件。(utility.js)
+0

這是一個JSP(Java服務器頁面)的Web應用程序? – mellamokb 2013-02-28 07:00:30

+0

是的..首先我需要讀取從java到JavaScript的CONNECTION_DBNAME值。然後從JavaScript到jsp頁面。 – Rachel 2013-02-28 07:01:52

回答

7
First access the variable in scriptlet. 

<% 
    String param= (String)session.getAttribute("CONNECTION_DBNAME"); 
%> 

Then use like this. 

    <script> 
    var X = '<%=param%>'; 
    </script> 

然後您可以使用x訪問該名稱。

+2

爲什麼不使用JSP EL?另外,爲了這個工作,它不能是一個JavaScript文件,除非這個容器是作爲JSP進行處理的。 – 2013-02-28 14:21:41

0

您不能從客戶端訪問會話變量。您可以爲客戶端提供Ajax調用以動態檢索值,或者將值設置在腳本塊中。

JSF:

<script>var dbName = "#{myBean.value}";</script> 

(從字面上會話,關鍵是行情需要在那裏,如果它是一個字符串):

<script>var dbName = "#{session.getAttribute('CONNECTION_DBNAME')}";</script> 

但是之前,您應該朝這個方向去考慮因爲通過這種機制給JavaScript訪問數據庫沒什麼意義。除非你的數據庫被公開暴露,否則你似乎是暴露數據庫連接細節的途徑,而客戶端應該不需要或不需要這些細節。您的服務器/頁面應作爲中繼來獲取此信息。

現在,如果這是一個管理控制檯,那麼你可能仍然不希望它在JavaScript中,但顯示設置是可以接受的。無論如何,除非連接詳細信息是用戶特定的,否則在會話中可能不需要它們。

3
<script> 
<% 
    String dbname=(String)session.getAttribute("CONNECTION_DBNAME"); 
%> 
    </script> 

這個代碼是有用的給你..

1

您可以使用隱藏的元素在JSP從會議獲得的價值,如: - <textarea id="txtData" style.display='none'><%=session.getAttribute("CONNECTION_DBNAME") %></textarea>

之後,你可以在你的JavaScript中獲得的價值通過var dbConnName=document.getElementById("txtData").value;

你就完成了。

1

Scriptlets在十多年前就已經脫穎而出!

一個更好的辦法... 在JSP中,包括在一個隱藏的DIV值:

<div id="javaValues" style="display: none;"> 
    <div id="employee">${employee}</div> 
    <div id="dept">${dept}</div> 
</div> 

使用<div>的,而不是<input type="hidden">,因爲他們不會與你的表單張貼干擾。

在javascript中(假設jQuery的),那麼你可以訪問值,例如:

var employee = $("#employee").html().trim(); 
    var dept = $("#dept").html().trim();