版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、JDBC程序的工作模板程序的工作模板 try Class.forName(JDBC驅動類驅動類); catch (ClassNotFoundException e) System.out.println(無法找到驅動類無法找到驅動類); try Connection con=DriverManager.getConnection(JDBC URL,數(shù)據(jù)庫用戶名數(shù)據(jù)庫用戶名,密碼密碼); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(SELECT a, b, c FROM Table1); whi
2、le (rs.next() int x = rs.getInt(a); String s = rs.getString(b); float f = rs.getFloat(c); con.close(); catch (SQLException e) e.printStackTrace(); 獲得數(shù)據(jù)庫連接獲得數(shù)據(jù)庫連接 發(fā)送發(fā)送Sql語句語句 處理結果處理結果 注冊注冊JDBC驅動驅動 JDBC URL用來標識數(shù)據(jù)庫用來標識數(shù)據(jù)庫 必須處理的異常必須處理的異常 釋放資源釋放資源 必須處理的異常必須處理的異常參考幻燈 JDBC驅動驅動 5-1 JDBC驅動由數(shù)據(jù)庫廠商驅動由數(shù)據(jù)庫廠商提供提供
3、在個人開發(fā)與測試中,可以使用在個人開發(fā)與測試中,可以使用JDBC-ODBC橋連方式橋連方式 在生產(chǎn)型開發(fā)中,推薦使用純在生產(chǎn)型開發(fā)中,推薦使用純Java驅動方式驅動方式 JDBC API JDBC Driver Manager 純純Java 驅動驅動 JDBCODBC橋橋 Java 應用程序應用程序 ODBC 參考幻燈 JDBC驅動驅動 5-2 橋連橋連 將對將對JDBC API的調用,轉換為對另一組數(shù)據(jù)庫連接的調用,轉換為對另一組數(shù)據(jù)庫連接API的調用的調用 優(yōu)點:可以訪問所有優(yōu)點:可以訪問所有ODBC可以訪問的數(shù)據(jù)庫可以訪問的數(shù)據(jù)庫 缺點:執(zhí)行效率低、功能不夠強大缺點:執(zhí)行效率低、功能不夠
4、強大 JDBC-ODBC橋橋 Java 應用程序應用程序 JDBC APIODBC APIODBC層層 參考幻燈 JDBC驅動驅動 5-3 使用使用JDBC-ODBC進行橋連進行橋連 1、在控制面板、在控制面板ODBC數(shù)據(jù)源數(shù)據(jù)源系統(tǒng)系統(tǒng)DSN中配置數(shù)據(jù)源中配置數(shù)據(jù)源 2、編程,通過橋連方式與數(shù)據(jù)庫建立連接、編程,通過橋連方式與數(shù)據(jù)庫建立連接 -語法語法- Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection con =DriverManager.getConnection(jdbc:odbc:news,sa,sa); JDBC-ODB
5、C橋驅動類橋驅動類 的完全限定類名的完全限定類名 數(shù)據(jù)源名稱數(shù)據(jù)源名稱 演示:配置演示:配置ODBC數(shù)據(jù)源數(shù)據(jù)源 參考幻燈 JDBC驅動驅動 5-4 純純Java驅動驅動 由由JDBC驅動直接訪問數(shù)據(jù)庫驅動直接訪問數(shù)據(jù)庫 優(yōu)點:優(yōu)點:100% Java,快又可跨平臺,快又可跨平臺 缺點:訪問不同的數(shù)據(jù)庫需要下載專用的缺點:訪問不同的數(shù)據(jù)庫需要下載專用的JDBC驅動驅動 JDBC 驅動驅動 Java 應用程序應用程序 JDBC API 參考幻燈 JDBC驅動驅動 5-5 使用純使用純Java驅動方式進行直連驅動方式進行直連 1、下載數(shù)據(jù)庫廠商提供的驅動程序包、下載數(shù)據(jù)庫廠商提供的驅動程序包 2、
6、將驅動程序包引入工程中、將驅動程序包引入工程中 3、編程,通過純、編程,通過純Java驅動方式與數(shù)據(jù)庫建立連接驅動方式與數(shù)據(jù)庫建立連接 -語法語法- String URL=jdbc:microsoft:sqlserver:/localhost:1433; DatabaseName=news; Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); Connection con = DriverManager.getConnection(URL,sa,sa); sql server數(shù)據(jù)庫驅動類的數(shù)據(jù)庫驅動類的 完全限定類名完全限定
7、類名 演示:在工程中引入演示:在工程中引入JDBC驅動程序包驅動程序包 數(shù)據(jù)庫名稱數(shù)據(jù)庫名稱 參考幻燈 小結小結 1 JDBC橋連與純橋連與純Java驅動兩種方式的優(yōu)缺點分別是什么?驅動兩種方式的優(yōu)缺點分別是什么? JDBC URL的作用是什么?的作用是什么? 參考幻燈 創(chuàng)建數(shù)據(jù)表:創(chuàng)建數(shù)據(jù)表:FirstLevelTitle JDBC應用應用 要求對新聞標題進行管理:要求對新聞標題進行管理: 1、新聞標題存儲在、新聞標題存儲在Sql Server 2000中中 2、通過、通過JDBC對新聞標題進行增、刪、改、查操作對新聞標題進行增、刪、改、查操作 操作步驟操作步驟 使用使用Statement插
8、入數(shù)據(jù)插入數(shù)據(jù) 使用使用PreparedStatement 增、刪、改、查數(shù)據(jù)增、刪、改、查數(shù)據(jù) 字段名稱字段名稱字段說明字段說明數(shù)據(jù)類型數(shù)據(jù)類型大小大小 Id序號序號int4 TitleName標題名稱標題名稱varchar50 Creator創(chuàng)建者創(chuàng)建者varchar50 CreateTime創(chuàng)建時間創(chuàng)建時間datetime8 1 2 參考幻燈 使用使用Statement插入數(shù)據(jù)插入數(shù)據(jù) 2-1 使用橋連方式向使用橋連方式向FirstLevelTitle表中插入一條記錄表中插入一條記錄 代碼片斷代碼片斷 public static void main(String args) Connec
9、tion con = null; Statement statement = null; try String strSql = insert into FirstLevelTitle values(1,軍事軍事,網(wǎng)管網(wǎng)管,getdate(); try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException e) System.out.println(無法找到驅動類無法找到驅動類); con = DriverManager.getConnection(jdbc:odbc:news,sa,sa); st
10、atement = con.createStatement(); statement.executeUpdate(strSql); catch (SQLException sqlE) sqlE.printStackTrace(); finally closeStatement(statement); closeConnection(con); 建立連接建立連接 執(zhí)行執(zhí)行sql語句語句 數(shù)據(jù)庫連接使用完數(shù)據(jù)庫連接使用完 畢,及時釋放畢,及時釋放 載入載入JDBC-ODBC橋驅動類橋驅動類 異常處理異常處理 異常處理異常處理 完整代碼實現(xiàn)完整代碼實現(xiàn) 參考幻燈 使用使用Statement插入數(shù)據(jù)插
11、入數(shù)據(jù) 2-2 使用純使用純Java驅動方式向驅動方式向FirstLevelTitle表中表中 插入一條記錄插入一條記錄 代碼片斷代碼片斷 public static void main(String args) Connection con = null; Statement statement = null; try String strSql = insert into FirstLevelTitle values(1,軍事軍事,網(wǎng)管網(wǎng)管,getdate(); try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);
12、 catch (ClassNotFoundException e) System.out.println(無法找到驅動類無法找到驅動類); con = DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433; +DatabaseName=news,sa,sa); statement = con.createStatement(); statement.executeUpdate(strSql); catch (SQLException sqlE) sqlE.printStackTrace(); finally /
13、釋放連接釋放連接 載入載入sql server數(shù)據(jù)數(shù)據(jù) 庫驅動類庫驅動類 建立連接建立連接 執(zhí)行執(zhí)行sql語句語句 完整代碼實現(xiàn)完整代碼實現(xiàn) 參考幻燈 小結小結 2 在使用純在使用純Java驅動方式進行數(shù)據(jù)庫連接時,如果程序在運行時驅動方式進行數(shù)據(jù)庫連接時,如果程序在運行時 拋出異常:拋出異常: java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=news 那么出錯的原因是什么?如何解決?那么出錯的原因是什么?如何解決? 請單獨建立一個
14、類請單獨建立一個類ConnectionManager,專門負責建立數(shù)據(jù),專門負責建立數(shù)據(jù) 庫連接、以及關閉連接,并思考這樣做帶來的好處是什么庫連接、以及關閉連接,并思考這樣做帶來的好處是什么 找不到合適的驅動類,原因:沒有把數(shù)據(jù)庫驅動包引入工程找不到合適的驅動類,原因:沒有把數(shù)據(jù)庫驅動包引入工程 好處在于:既便于管理、又可以提高代碼的復用性好處在于:既便于管理、又可以提高代碼的復用性 完整代碼實現(xiàn)完整代碼實現(xiàn) 參考幻燈 PreparedStatement PreparedStatement接口接口 (預編譯的(預編譯的 SQL 語句)語句) Statement 接口接口 當當 SQL 語句將運
15、行多次時,盡語句將運行多次時,盡 量使用量使用PreparedStatement,以,以 便提高運行效率便提高運行效率 PreparedStatement 接口繼承接口繼承 Statement接口接口 PreparedStatement比普通的比普通的Statement對象使用起來更對象使用起來更 加靈活,更有效率加靈活,更有效率 參考幻燈 使用使用PreparedStatement插入數(shù)據(jù)插入數(shù)據(jù) public class NewsFirstTitleDB2 public static void main(String args) Connection con = null; Prepare
16、dStatement pStatement = null; try SimpleDateFormat hmFromat = new SimpleDateFormat(yyyy-MM-dd hh:mm:ss); con = ConnectionManager.getConnection(); String strSql = insert into FirstLevelTitle values(?,?,?,?); pStatement = con.prepareStatement(strSql); pStatement.setInt(1, 1); pStatement.setString(2, 軍
17、事軍事); pStatement.setString(3, 管理員管理員); pStatement.setString(4, hmFromat.format(new Date(); pStatement.executeUpdate(); catch (SQLException sqlE) sqlE.printStackTrace(); finally ConnectionManager.closeStatement(pStatement); ConnectionManager.closeConnection(con); 參數(shù)化的查詢語句參數(shù)化的查詢語句 設置每個設置每個 ? 參數(shù)的值,參數(shù)的值
18、, 列號從列號從1開始開始 執(zhí)行執(zhí)行sql語句語句 參考幻燈 使用使用PreparedStatement刪除數(shù)據(jù)刪除數(shù)據(jù) public class NewsFirstTitleDB3 public static void main(String args) Connection con = null; PreparedStatement pStatement = null; try con = ConnectionManager.getConnection(); String strSql = delete from FirstLevelTitle where TitleName = ?; p
19、Statement = con.prepareStatement(strSql); pStatement.setString(1, 軍事軍事); int row = pStatement.executeUpdate(); System.out.println(“成功刪除了成功刪除了+row+行數(shù)據(jù)行數(shù)據(jù)!); catch (SQLException sqlE) sqlE.printStackTrace(); finally ConnectionManager.closeStatement(pStatement); ConnectionManager.closeConnection(con);
20、返回刪除記錄的行數(shù)返回刪除記錄的行數(shù) 參考幻燈 使用使用PreparedStatement更新數(shù)據(jù)更新數(shù)據(jù) public class NewsFirstTitleDB4 public static void main(String args) Connection con = null; PreparedStatement pStatement = null; try con = ConnectionManager.getConnection(); String strSql = update FirstLevelTitle set Creator = ? where Id = ?; pSta
21、tement = con.prepareStatement(strSql); pStatement.setString(1, 編輯編輯); pStatement.setInt(2, 1); int row = pStatement.executeUpdate(); System.out.println(成功更新了成功更新了+row+行數(shù)據(jù)行數(shù)據(jù)!); catch (SQLException sqlE) sqlE.printStackTrace(); finally ConnectionManager.closeStatement(pStatement); ConnectionManager.c
22、loseConnection(con); 返回更新記錄的行數(shù)返回更新記錄的行數(shù) 參考幻燈 小結小結 3 使用使用PreparedStatement語句執(zhí)行如下操作:語句執(zhí)行如下操作: 刪除表刪除表FirstLevelTitle中所有中所有Id小于小于10的記錄,并在控制臺的記錄,并在控制臺 輸出刪除記錄的行數(shù)輸出刪除記錄的行數(shù) 完整代碼實現(xiàn)完整代碼實現(xiàn) 參考幻燈 使用使用PreparedStatement查詢數(shù)據(jù)查詢數(shù)據(jù) 2-1 public class NewsFirstTitleDB5 public static void main(String args) int id = 0; Con
23、nection con = null; PreparedStatement pstmt = null; ResultSet resSet = null; try con = ConnectionManager.getConnection(); String sqlStr = select max(id) from FirstLevelTitle ; pstmt = con.prepareStatement(sqlStr); resSet = pstmt.executeQuery(); if (resSet.next() id = resSet.getInt(1); catch (Excepti
24、on e) e.printStackTrace(); finally ConnectionManager.closeResultSet(resSet); ConnectionManager.closeStatement(pstmt); ConnectionManager.closeConnection(con); System.out.println(新的一級新聞標題的新的一級新聞標題的Id為:為: + (id + 1); 查詢新聞一級標查詢新聞一級標 題的題的Id的最大值的最大值 關閉結果關閉結果 集、語句、集、語句、 以及連接以及連接 對新聞一級標題對新聞一級標題Id的的 最大值加一,作為
25、新最大值加一,作為新 的一級標題的的一級標題的Id 獲取數(shù)據(jù),列獲取數(shù)據(jù),列 號從號從1開始開始 返回結果集返回結果集 參考幻燈 從數(shù)據(jù)庫中取出所有的新聞一級標題從數(shù)據(jù)庫中取出所有的新聞一級標題 代碼片斷代碼片斷 public static List getAllFirstLevelTitleList() /省略部分變量聲明語句省略部分變量聲明語句 ArrayList list = new ArrayList(); try dbConnection = ConnectionManager.getConnection(); String strSql = select * from FirstL
26、evelTitle order by CreateTime desc; pStatement = dbConnection.prepareStatement(strSql); res = pStatement.executeQuery(); while (res.next() int id = res.getInt(id); String title = res.getString(TitleName); String creator = res.getString(Creator); Date time = res.getDate (“CreateTime”); FirstLevelTitl
27、e fTitle = new FirstLevelTitle(id, title,creator, time); list.add(fTitle); /省略省略catch、finally子句子句 return list; 使用使用PreparedStatement查詢數(shù)據(jù)查詢數(shù)據(jù) 2-2 查詢新聞一級標題查詢新聞一級標題 創(chuàng)建標題對象,并添創(chuàng)建標題對象,并添 加入加入ArrayList中中 返回結果集返回結果集 完整代碼實現(xiàn)完整代碼實現(xiàn) 參考幻燈 總結總結 使用使用PreparedStatement語句執(zhí)行如下操作:語句執(zhí)行如下操作: 取出表取出表FirstLevelTitle中中Id的最大值
28、的最大值 向表向表FirstLevelTitle中插入一行新記錄,其中中插入一行新記錄,其中Id值為原值為原Id最大最大 值值加一加一 完整代碼實現(xiàn)完整代碼實現(xiàn) 參考幻燈 Thank you 參考幻燈 JSP簡介簡介 第四章第四章 21參考幻燈 回顧回顧 JDBC的英文全稱是什么?的英文全稱是什么? JDBC的主要作用是什么的主要作用是什么 ? PreparedStatement 與與 Statement相比,具有什么優(yōu)相比,具有什么優(yōu) 勢?勢? 參考幻燈 預習檢查預習檢查 為什么第一次請求為什么第一次請求JSP頁面時,響應速度比較慢?頁面時,響應速度比較慢? JSP文件中,有幾種注釋方法?格
29、式是什么?文件中,有幾種注釋方法?格式是什么? 參考幻燈 本章任務本章任務 為新聞發(fā)布系統(tǒng)創(chuàng)建為新聞發(fā)布系統(tǒng)創(chuàng)建JSP頁面頁面 能夠在能夠在Eclipse中部署運行該新聞發(fā)布系統(tǒng)中部署運行該新聞發(fā)布系統(tǒng) 參考幻燈 掌握掌握JSP的定義、作用、以及頁面組成的定義、作用、以及頁面組成 掌握如何創(chuàng)建掌握如何創(chuàng)建JSP頁面頁面 掌握掌握JSP頁面的執(zhí)行過程頁面的執(zhí)行過程 本章目標本章目標 參考幻燈 為什么需要為什么需要JSP 2-1 為什么需要基于為什么需要基于B/S技術的動態(tài)網(wǎng)頁?技術的動態(tài)網(wǎng)頁? B/S技術的特點是什么?技術的特點是什么? 使用動態(tài)網(wǎng)頁,可以動態(tài)輸出網(wǎng)頁內容、同用戶進行交互、對網(wǎng)頁
30、內容使用動態(tài)網(wǎng)頁,可以動態(tài)輸出網(wǎng)頁內容、同用戶進行交互、對網(wǎng)頁內容 進行在線更新進行在線更新 應用應用 服務器服務器 IE IE 解釋執(zhí)行解釋執(zhí)行 HTML文件文件 從服務器端檢索到的信息從服務器端檢索到的信息 返回響應返回響應 客戶端的請求信息客戶端的請求信息 發(fā)送請求發(fā)送請求 訪問數(shù)據(jù)庫訪問數(shù)據(jù)庫 返回結果返回結果 運行運行JSP等服務等服務 器端腳本程序器端腳本程序 1 用戶輸入用戶輸入 2 3 4 數(shù)據(jù)庫數(shù)據(jù)庫 服務器服務器 參考幻燈 為什么需要為什么需要JSP 2-2 如何在瀏覽器上動態(tài)輸出當前日期?如何在瀏覽器上動態(tài)輸出當前日期? 輸出當前日期輸出當前日期 你好,你好,ACCP!
31、今天是今天是 顯然,無法通過靜態(tài)顯然,無法通過靜態(tài)HTML完成這個效果,試一試完成這個效果,試一試JSP,看看是否可行,看看是否可行 運行結果運行結果 參考幻燈 什么是什么是JSP JSP(Java Server Pages)是指:)是指: 在在HTML中嵌入中嵌入Java腳本語言腳本語言 由應用服務器中的由應用服務器中的JSP引擎來編譯和執(zhí)行嵌入的引擎來編譯和執(zhí)行嵌入的Java腳本語言腳本語言 命令命令 然后將生成的整個頁面信息返回給客戶端然后將生成的整個頁面信息返回給客戶端 JSP頁面頁面 數(shù)據(jù)庫數(shù)據(jù)庫 服務器服務器 應用應用 服務器服務器 編譯、執(zhí)行編譯、執(zhí)行 客戶端客戶端 嵌入嵌入 J
32、ava腳本語言腳本語言 12 3 4 返回頁面信息返回頁面信息 參考幻燈 JSP 頁面組成頁面組成 4-1 JSP 頁面的元素包括:頁面的元素包括: 靜態(tài)內容靜態(tài)內容 指指 令令 表達式表達式 小腳本小腳本 HTML靜態(tài)文本靜態(tài)文本 以以“ ” 結束。結束。 比如:比如: 聲聲 明明 標準動作標準動作 以以“jsp: 動作名動作名 ” 開始,以開始,以“ ” 結束結束 比如:比如: 注釋注釋 參考幻燈 JSP 頁面組成頁面組成 4-2 輸出當前日期輸出當前日期 你好,你好,ACCP!今天是!今天是 指令指令 靜態(tài)內容靜態(tài)內容 小腳本小腳本 表達式表達式 注釋注釋 參考幻燈 JSP 頁面組成頁面
33、組成 4-3 在瀏覽器上觀看運行結果在瀏覽器上觀看運行結果 查看網(wǎng)頁源文件查看網(wǎng)頁源文件 可以通過源代碼查看可以通過源代碼查看 到到HTML注釋的內容注釋的內容 所有注釋內容都不可見所有注釋內容都不可見 參考幻燈 JSP 頁面組成頁面組成 4-4 合理、詳細的注釋有利于代碼后期的維護和閱讀合理、詳細的注釋有利于代碼后期的維護和閱讀 在在JSP文件的編寫過程中,共有三種注釋方法:文件的編寫過程中,共有三種注釋方法: HTML的注釋方法:的注釋方法: JSP注釋標記:注釋標記: 在在JSP腳本中使用注釋:腳本中使用注釋: 缺點:不安全,加大缺點:不安全,加大 網(wǎng)絡傳輸負擔網(wǎng)絡傳輸負擔 參考幻燈 小
34、結小結 1 請編寫一個請編寫一個JSP頁面頁面exercise1.jsp,要求:,要求: 至少包含三種注釋至少包含三種注釋 完整代碼實現(xiàn)完整代碼實現(xiàn) 參考幻燈 創(chuàng)建新聞發(fā)布系統(tǒng)的創(chuàng)建新聞發(fā)布系統(tǒng)的JSP頁面頁面 5-1 回憶第一章內容,請說明開發(fā)回憶第一章內容,請說明開發(fā)JSP動態(tài)網(wǎng)站的幾動態(tài)網(wǎng)站的幾 個步驟個步驟 創(chuàng)建創(chuàng)建Web項目項目 開發(fā)步驟開發(fā)步驟 設計設計Web 項目的項目的 目錄結構目錄結構 編寫代碼編寫代碼 (創(chuàng)建(創(chuàng)建 JSP) 部署、運行部署、運行 本章將從這里開始,帶領大家創(chuàng)本章將從這里開始,帶領大家創(chuàng) 建新聞發(fā)布系統(tǒng)的建新聞發(fā)布系統(tǒng)的JSP頁面頁面 參考幻燈 創(chuàng)建新聞發(fā)布
35、系統(tǒng)的創(chuàng)建新聞發(fā)布系統(tǒng)的JSP頁面頁面 5-2 設計設計Web項目的目錄結構:項目的目錄結構: 創(chuàng)建目錄創(chuàng)建目錄ch04:存放:存放JSP頁面頁面 創(chuàng)建目錄創(chuàng)建目錄CSS:存放樣式表文件:存放樣式表文件 創(chuàng)建目錄創(chuàng)建目錄images:存放圖片:存放圖片 參考幻燈 創(chuàng)建新聞發(fā)布系統(tǒng)的創(chuàng)建新聞發(fā)布系統(tǒng)的JSP頁面頁面 5-3 使用使用JSP模板向導創(chuàng)建模板向導創(chuàng)建JSP頁面,共有三步:頁面,共有三步: 1 2 3 右鍵點擊右鍵點擊“WebRoot”下的下的“ch04”,從右鍵菜單中選擇:新建,從右鍵菜單中選擇:新建其他其他 在新彈出的窗口中,選擇在新彈出的窗口中,選擇“Web”下的下的“JSP”,
36、點擊,點擊“下一步下一步” 在下一個新彈出的窗口中,輸入文件名在下一個新彈出的窗口中,輸入文件名index.jsp,點擊,點擊“完成完成” 演示:使用演示:使用JSP模板向導創(chuàng)建模板向導創(chuàng)建JSP頁面頁面 參考幻燈 創(chuàng)建新聞發(fā)布系統(tǒng)的創(chuàng)建新聞發(fā)布系統(tǒng)的JSP頁面頁面 5-4 手工創(chuàng)建手工創(chuàng)建JSP頁面,共有兩步:頁面,共有兩步: 1 2 右鍵點擊右鍵點擊“WebRoot”下的下的“ch04”,選擇:新建,選擇:新建文件文件 在新彈出的窗口中,輸入文件名在新彈出的窗口中,輸入文件名index.jsp,點擊,點擊“完成完成” 演示:手工創(chuàng)建演示:手工創(chuàng)建JSP頁面頁面 參考幻燈 創(chuàng)建新聞發(fā)布系統(tǒng)的
37、創(chuàng)建新聞發(fā)布系統(tǒng)的JSP頁面頁面 5-5 采用你認為最方便的方式,把靜態(tài)新聞發(fā)布系統(tǒng)的所采用你認為最方便的方式,把靜態(tài)新聞發(fā)布系統(tǒng)的所 有頁面轉換為有頁面轉換為JSP頁面,并部署運行頁面,并部署運行 演示:頁面轉換、并部署運行演示:頁面轉換、并部署運行 參考幻燈 生活中的歡迎頁面生活中的歡迎頁面 通常情況下,訪問某個網(wǎng)站時,我們只需要知道網(wǎng)站的域通常情況下,訪問某個網(wǎng)站時,我們只需要知道網(wǎng)站的域 名就可以了。名就可以了。 比如:比如: 現(xiàn)在看到的就是現(xiàn)在看到的就是 新浪的首頁面新浪的首頁面 參考幻燈 如何設置歡迎頁面如何設置歡迎頁面 歡迎頁面,就是歡迎頁面,就是web應用的默認訪問頁面應用的默
38、認訪問頁面 在配置文件在配置文件web.xml中設置歡迎頁面中設置歡迎頁面 index.jsp 假定在假定在web應用應用(news)下存在一個下存在一個index.jsp頁面,頁面, 輸入輸入http:/localhost:8080/news地址時,地址時,web容器會容器會 默認調用默認調用index.jsp頁面頁面 參考幻燈 JSP 執(zhí)行過程執(zhí)行過程 2-1 3 執(zhí)行執(zhí)行 2 翻譯翻譯 編譯編譯 1 請求請求 響應響應 Web容器處理容器處理JSP文件請求需要經(jīng)過文件請求需要經(jīng)過3個階段:個階段: 翻譯階段:翻譯階段:JSP文件會被文件會被Web容器中的容器中的JSP引擎轉換成引擎轉換成
39、Java源碼源碼 編譯階段:編譯階段:Java源碼會被編譯成可執(zhí)行的字節(jié)碼源碼會被編譯成可執(zhí)行的字節(jié)碼 執(zhí)行階段:容器接受了客戶端的請求后,執(zhí)行編譯成字節(jié)碼的執(zhí)行階段:容器接受了客戶端的請求后,執(zhí)行編譯成字節(jié)碼的 JSP文件;處理完請求后,容器把生成的頁面反饋給客戶端進行文件;處理完請求后,容器把生成的頁面反饋給客戶端進行 顯示顯示 應用服務應用服務 器器 客戶端客戶端 JSP文件文件 .java .class 參考幻燈 JSP 執(zhí)行過程執(zhí)行過程 2-2 執(zhí)行執(zhí)行 第二次請求第二次請求 響應響應 第一次請求之后,第一次請求之后,Web容器可以重用已經(jīng)編譯好的字節(jié)容器可以重用已經(jīng)編譯好的字節(jié) 碼
40、文件碼文件 應用服務器應用服務器 客戶端客戶端 .class 注意:如果對注意:如果對JSP文件進行了修改,文件進行了修改,Web容器會重新對容器會重新對 JSP文件進行翻譯和編譯文件進行翻譯和編譯 演示:演示:JSP頁面修改前后的響應速度頁面修改前后的響應速度 參考幻燈 JSP運行環(huán)境運行環(huán)境 Web容器(如:容器(如:Tomcat)提供)提供 JSP引擎,負責引擎,負責JSP文件的執(zhí)行,文件的執(zhí)行, 提供提供JSP的運行時環(huán)境的運行時環(huán)境 在在Eclipse中部署中部署Web應用,等應用,等 同于在同于在Web容器中部署容器中部署Web應用應用 與與Eclipse中中Web應用的應用的 目
41、錄結構一模一樣目錄結構一模一樣 參考幻燈 小結小結 2 為什么為什么JSP頁面在第一次請求時會比較慢,而之后對同頁面在第一次請求時會比較慢,而之后對同 樣的樣的JSP頁面的請求會非????頁面的請求會非常快? 參考幻燈 總結總結 歡迎登錄新聞發(fā)布系統(tǒng)歡迎登錄新聞發(fā)布系統(tǒng) 在運行在運行welcome.jsp時,會出現(xiàn)什么現(xiàn)象?如何時,會出現(xiàn)什么現(xiàn)象?如何 改正?改正? 出現(xiàn)中文亂碼,出現(xiàn)中文亂碼, 把字符集改為:把字符集改為:GBK WEB-INF文件夾中的內容無法對外發(fā)布,文件夾中的內容無法對外發(fā)布, 把把images文件夾拖至文件夾拖至WebRoot文件夾下文件夾下 參考幻燈 Thank yo
42、u 參考幻燈 JSP指令和腳本元素指令和腳本元素 第五章第五章 47參考幻燈 回顧回顧 為什么第一次請求為什么第一次請求JSP頁面時,響應速度比較慢?頁面時,響應速度比較慢? JSP文件中,有幾種注釋方法?格式是什么?文件中,有幾種注釋方法?格式是什么? 參考幻燈 預習檢查預習檢查 列舉一些列舉一些page指令的常用屬性,并說明它們的作用指令的常用屬性,并說明它們的作用 在在JSP文件中,有幾種輸出數(shù)值的方法(如:輸出文件中,有幾種輸出數(shù)值的方法(如:輸出10與與 30的乘積)?分別怎樣表示?的乘積)?分別怎樣表示? 參考幻燈 本章任務本章任務 升級新聞發(fā)布系統(tǒng)升級新聞發(fā)布系統(tǒng) 顯示存儲在數(shù)據(jù)
43、庫中的新聞一級標題顯示存儲在數(shù)據(jù)庫中的新聞一級標題 頁面顯示效果:頁面顯示效果: 參考幻燈 掌握掌握page指令的常用屬性指令的常用屬性 掌握掌握JSP 腳本元素的用法腳本元素的用法 小腳本小腳本 表達式表達式 方法聲明方法聲明 本章目標本章目標 參考幻燈 為什么需要為什么需要page指令指令 在在Java文件中,通過兩種方式引入其它包中的類:文件中,通過兩種方式引入其它包中的類: 使用使用import關鍵字(優(yōu)點:一次引入,處處使用)關鍵字(優(yōu)點:一次引入,處處使用) 使用完全限定的類名(即必須加上包名)使用完全限定的類名(即必須加上包名) 在在Java文件中,如何引入其它包中的類?文件中,
44、如何引入其它包中的類? 在在JSP文件中,同樣可以使用文件中,同樣可以使用import關鍵字引入關鍵字引入Java類文件,一旦引入,整類文件,一旦引入,整 個個JSP文件都可用。文件都可用。 此時,需要使用到此時,需要使用到page指令。指令。 參考幻燈 page指令示例指令示例 輸出當前日期輸出當前日期 你好,你好,ACCP! 今天是今天是 已經(jīng)通過已經(jīng)通過page指令的指令的import 屬性引入這些類文件了屬性引入這些類文件了 參考幻燈 什么是什么是page指令指令 page指令指令 通過設置內部的多個屬性來定義整個頁面的屬性通過設置內部的多個屬性來定義整個頁面的屬性 語法:語法: pa
45、ge指令常用屬性指令常用屬性 屬性屬性描述描述默認值默認值 language指定指定JSP頁面使用的腳本語言頁面使用的腳本語言java import 通過該屬性來引用腳本語言中使用到通過該屬性來引用腳本語言中使用到 的類文件的類文件 無無 contentType用來指定用來指定JSP頁面所采用的編碼方式頁面所采用的編碼方式 text/html, ISO-8859-1 參考幻燈 小結小結 1 編寫一個編寫一個JSP,要求:,要求: 向一個向一個ArrayList對象中添加對象中添加10個字符串個字符串 使用使用for循環(huán)進行添加,存儲內容依次是循環(huán)進行添加,存儲內容依次是 “第第1個字符個字符
46、串串” 、”第第10個字符串個字符串“ 最后在頁面上輸出:添加完畢最后在頁面上輸出:添加完畢 使用使用page指令來引入指令來引入ArrayList類類 JSP頁面不能出現(xiàn)中文亂碼頁面不能出現(xiàn)中文亂碼 完整代碼實現(xiàn)完整代碼實現(xiàn) 參考幻燈 JSP 腳本元素腳本元素 JSP 腳本元素腳本元素 小腳本小腳本 表達式表達式 聲明聲明 JSP 腳本元素是用來嵌入腳本元素是用來嵌入Java代碼的,主要用來實現(xiàn)頁代碼的,主要用來實現(xiàn)頁 面的動態(tài)請求面的動態(tài)請求 JSP 腳本元素包括:腳本元素包括: 參考幻燈 什么是小腳本什么是小腳本 JSP 小腳本小腳本 就是在就是在JSP頁面里嵌入一段頁面里嵌入一段Jav
47、a代碼代碼 語法:語法: 輸出當前日期輸出當前日期 你好,你好,ACCP! 今天是今天是 out.print負責在頁面上負責在頁面上 進行輸出進行輸出 在在JSP中嵌入的中嵌入的 Java代碼代碼 參考幻燈 小結小結 2 使用兩個一維數(shù)組分別存儲學生姓名、學生成績使用兩個一維數(shù)組分別存儲學生姓名、學生成績 在頁面中每隔一行輸出一名學生的姓名與成績在頁面中每隔一行輸出一名學生的姓名與成績 運行結果示意圖運行結果示意圖 完整代碼實現(xiàn)完整代碼實現(xiàn) 參考幻燈 什么是表達式什么是表達式 表達式表達式 表達式是對數(shù)據(jù)的表示,系統(tǒng)將其作為一個值進行計算和顯示表達式是對數(shù)據(jù)的表示,系統(tǒng)將其作為一個值進行計算和顯示 語法:語法: 使用表達式顯示數(shù)據(jù)。使用表達式顯示數(shù)據(jù)。 顯然,表達式更有利于在顯然,表達式更有利于在 HTML中顯示數(shù)據(jù)中顯示數(shù)據(jù) 12 使用小腳本顯示數(shù)據(jù)使用小腳本顯示數(shù)據(jù) 參考幻燈 小結小結 3 使用一個一維數(shù)組存儲兩個學生的成績,在頁面中輸出使用一個一維數(shù)組存儲兩個學生
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022部編人教四年級下語文教案第一單元至第八單元
- 2024電子商務平臺建設及運營委托合同
- 2024年香港二零二四年度房產(chǎn)抵押借款合同范本3篇
- 建設工程造價咨詢合同文本
- 建設工程施工投標合同
- 柜臺租賃合同本范文
- 食用菌產(chǎn)品購買合同
- 房屋拆遷安置合同
- 2024簡易版場地租賃合同樣本版B版
- 2024石材質量檢測與認證合同書正本規(guī)范版3篇
- 2023年黑龍江民族職業(yè)學院招聘工作人員考試真題
- 北京林業(yè)大學《計算機網(wǎng)絡安全》2023-2024學年期末試卷
- 基因檢測與健康保險
- 實驗室安全教育課件
- 初中七年級數(shù)學運算能力培養(yǎng)策略(課件)
- 北京市東城區(qū)2023-2024學年高二上學期期末考試+英語 含答案
- 服裝廠安全教育培訓規(guī)章制度
- 車輛修理廠自查自糾整改方案及總結報告
- 2024版成人腦室外引流護理TCNAS 42─20241
- **鎮(zhèn)家庭醫(yī)生簽約服務績效分配方案
- 湖北省八校2025屆高二生物第一學期期末質量檢測模擬試題含解析
評論
0/150
提交評論