js與java是不同語言,運行在不同環境下,因此無法直接獲得對方數據。
java運行在伺服器端,在同一個jsp文件中,java先運行,js後運行,java可以生成一段js代碼,保證js運行得到相應的結果,因此可以用java定義js變數的方式來傳遞數據,例如:
<script>
var url="<%=url%>";
alert(username);
</script>
上面例子,<%%>中的內容會在伺服器端運行,在「」中間輸出網址,瀏覽器就會載入下面的結果:
<script>
var url="gif8.cn";
alert(url);
</script>
這部分就是標準的js代碼了。
② jsp 下拉框從資料庫中如何取值
直接在頁面前面連接資料庫查詢出結果result,然後下面就直接result裡面取就可以了。
先聲明(拿oracle舉例):
<%!
String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;
String DBURL = "jdbc:oracle:thin:@XXX.XXX.XXX.XXX:1521:XXX" ;
String DBUSER = "XXX" ;
String DBPASSword= "XXX" ;
Connection con = null ;
PreparedStatement pstmt = null ;
ResultSet rs = null ;
%>
執行查詢:
<%
String sql = "select * from XXX" ;
try
{
Class.forName(DBDRIVER) ;
con = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
pstmt = con.prepareStatement(sql) ;
rs = pstmt.executeQuery() ;
%>
顯示的時候如下:
<%
while(rs.next())
{
i++ ;
int id=rs.getInt("id");
String title = rs.getString("admin") ;
String author = rs.getString("user") ;
%>
<td><%=admin%></td>
<td><%=user%></td>
大概代碼差不多這樣了,你看著湊湊
③ 在jsp中下拉框中如何獲取資料庫中的值
但是還有一種方法 通過獲取下拉框的值 <select name="sel" onchange="check()"> -- 增加onchange事件 <%while (rs.next()) {%> <option value=""> -- 這里沒有給選項賦值 -- 改為,如:<option value="<%=rs.getString(1)%>"> <%=rs.getString(1)%> </option> <%}%></select><script type="text/javascript"> function check(){var id = document.getElementsByName("sel").value; -- 獲取下拉框的值 如:拼接url打開頁面, var url = 'xxxx.do?id=' + id; //注,具體的url你要自己拼寫,我這個是列子,不能用的 方法1,在本窗口打開頁面: window.location = url ; 方法2,新窗口打開頁面 window.open(url)}</script> 追問: 我終於發現了,能讀取數據,可是把讀取的數據放入資料庫中就有問題了,難道還要轉碼才行嗎? 回答: 當然`~~ 追問: 頁面編碼是gb2312那我要怎樣轉碼呢? 回答: 首先你要知道你的資料庫的是什麼編碼的,你頁面的編碼要符合你資料庫的編碼,這樣的轉碼才是正確的 追問: 現在我不是從頁面讀取數據了,而是直接在程序中測試 Date.valueOf("1987-3-7") 比如我用這樣的方法把這個數據放到資料庫中去就自動變成了1905-6-1了,感覺太怪了 這個就和編碼無關了 回答: 你具體的代碼我也不知道,也不好給你說,給你個UTF-8轉GB2312的代碼吧 private String utf8Togb2312(String str){ StringBuffer sb = new StringBuffer(); for(int i=0; i<str.length(); i++) { char c = str.charAt(i); switch (c) {case '+':sb.append(' ');break;case '%':try {sb.append((char)Integer.parseInt( str.substring(i+1,i+3),16));}catch (NumberFormatException e) { throw new IllegalArgumentException();}i += 2;break;default:sb.append(c);break;}}String result = sb.toString(); String res=null;try{byte[] inputBytes = result.getBytes("8859_1");
④ java中 jsp頁面如何從資料庫獲取select 中的值
可以再加一個option,默認顯示資料庫的值
<select name="">
<option value="<%=資料庫取值%>"></option>
<option value="發布"></option>
<option value="保存"></option>
</select>
⑤ jsp獲取資料庫中的數據
<%
//JSP頁面直接訪問資料庫
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try{
Class.forName("JDBC驅動");
conn = DriverManager.getConnection("url", "username", "password");
stmt = conn.createStatement();
rs = stmt.executeQuery("select factor, ratio from 表名 where id=1");
while(rs.next()){
String factor = rs.getString("factor");
String ratio = rs.getString("ratio");
%>
factor :<%=factor %>
ratio :<%=ratio %>
<%
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs != null) rs.close();
if(stmt != null) stmt.close();
if(conn != null) conn.close();
}catch(Exception e1){
e1.printStackTrace();
}
}
%>
修改 驅動、url、username、password、表名、欄位名成你應用的相應數據,然後將這些代碼加入到你的jsp頁面,就可以在jsp頁面直接讀取到資料庫中的對應表指定欄位的數據了,祝你好運!
⑥ jsp如何取值
首先,jsp本質就是servlet;
其次,用jsp的話,就一定要有支持jsp的web容器;
所以要實現你的版要求,肯定會權用到servlet。
根據你的需求,可以在jsp頁面這么寫:
1.導入你要使用的方法所屬的類:<%@pageimport="你的類全名"%>
2.編寫表達式:<%=Flight.getSpecificFlight()%><!--假設你的類名是Flight-->
⑦ 如何在jsp頁面獲取資料庫中的數據
建立資料庫連接
調用方法,比如list<User> userlist = DB.findAll(), req.setAttribute("list",userlist)
jsp部分:<c:forEach items="list" var="user">
<td>${user.id}</td> //顯示User對象的id屬性
</c:forEach>
用到forEach,要引入jstl.jar
⑧ JSP中el表達式的取值過程是怎樣的
el表達式取值必需是servlet四大作用(servletContext>session>request>pageContext)中有的值
⑨ 如何在jsp頁面獲取資料庫某個值
最簡單的JSP頁面中的資料庫操作方法:
<%@ page
language="java"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
%>
<%@page import="java.sql.*"%>
<center>
<H1> <font color="blue" size="12">管理中心</font></H1>
<HR />
<table width="80%" border="1">
<tr>
<th>ID</th>
<th>書名</th>
<th>作者</th>
<th>價格</th>
<th>刪除</th>
</tr>
<%
// 資料庫的名字
String dbName = "zap";
// 登錄資料庫的用戶名
String username = "sa";
// 登錄資料庫的密碼
String password = "123";
// 資料庫的IP地址,本機可以用 localhost 或者 127.0.0.1
String host = "127.0.0.1";
// 資料庫的埠,一般不會修改,默認為1433
int port = 1433;
String connectionUrl = "jdbc:sqlserver://" + host + ":" + port + ";databaseName=" + dbName + ";user=" + username
+ ";password=" + password;
//
//聲明需要使用的資源
// 資料庫連接,記得用完了一定要關閉
Connection con = null;
// Statement 記得用完了一定要關閉
Statement stmt = null;
// 結果集,記得用完了一定要關閉
ResultSet rs = null;
try {
// 注冊驅動
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// 獲得一個資料庫連接
con = DriverManager.getConnection(connectionUrl);
String SQL = "SELECT * from note";
// 創建查詢
stmt = con.createStatement();
// 執行查詢,拿到結果集
rs = stmt.executeQuery(SQL);
while (rs.next()) {
%>
<tr>
<td>
<%=rs.getInt(1)%>
</td>
<td>
<a href="prepareupdate?ID=<%=rs.getInt("ID")%>" target="_blank"><%=rs.getString(2)%></a>
</td>
<td>
<%=rs.getString(3)%>
</td>
<td>
<%=rs.getString(4)%>
</td>
<td>
<a href="delete?ID=<%=rs.getInt("ID")%>" target="_blank">刪除</a>
</td>
</tr>
<%
}
} catch (Exception e) {
// 捕獲並顯示異常
e.printStackTrace();
} finally {
// 關閉我們使用過的資源
if (rs != null)
try {
rs.close();
} catch (Exception e) {}
if (stmt != null)
try {
stmt.close();
} catch (Exception e) {}
if (con != null)
try {
con.close();
} catch (Exception e) {}
}
%>
</table>
<a href="insert.jsp">添加新紀錄</a>
</center>