数据库相关(JDBC,存储过程,以及大文本数据处理,mvc设计模式)
目錄
- 1.jdbc總結(模板、八股文):
- 2.CallableStatement:調用 存儲過程、存儲函數
- 3.1JDBC調用存儲過程的步驟:
- 3.2調存儲函數:
- 3.處理CLOB/BLOB類型
- 4.JSP訪問數據庫
- 5.JavaBean
- 6.MVC設計模式:
1.jdbc總結(模板、八股文):
try{ a.導入驅動包、加載具體驅動類Class.forName("具體驅動類"); b.與數據庫建立連接connection = DriverManager.getConnection(...); c.通過connection,獲取操作數據庫的對象(Statement\preparedStatement\callablestatement) stmt = connection.createStatement(); d.(查詢)處理結果集rs = pstmt.executeQuery() while(rs.next()){ rs.getXxx(..) ;} }catch(ClassNotFoundException e ) { ...} catch(SQLException e) {... } catch(Exception e) {... } finally {//打開順序,與關閉順序相反if(rs!=null)rs.close()if(stmt!=null) stmt.close();if(connection!=null)connection.close(); }--jdbc中,除了Class.forName() 拋出ClassNotFoundException,其余方法全部拋SQLException2.CallableStatement:調用 存儲過程、存儲函數
connection.prepareCall(參數:存儲過程或存儲函數名) 參數格式: 存儲過程(無返回值return,用out參數替代):{ call 存儲過程名(參數列表) } 存儲函數(有返回值return):{ ? = call 存儲函數名(參數列表) }create or replace procedure addTwoNum ( num1 in number,num2 in number,result out number ) -- 1 + 2 ->3 as beginresult := num1+num2 ; end ; /強調: 如果通過sqlplus 訪問數據庫,只需要開啟:OracleServiceSID 通過其他程序訪問數據(sqldevelop、navicate、JDBC),需要開啟:OracleServiceSID、XxxListener3.1JDBC調用存儲過程的步驟:
a.產生 調用存儲過程的對象(CallableStatement) cstmt = connection.prepareCall( “…” ) ;
b.通過setXxx()處理 輸出參數值 cstmt.setInt(1, 30);
c.通過 registerOutParameter(…)處理輸出參數類型
d.cstmt.execute()執行
e.接受 輸出值(返回值)getXxx()
3.2調存儲函數:
create or replace function addTwoNumfunction ( num1 in number,num2 in number) – 1 + 2
return number
as
result number ;
begin
result := num1+num2 ;
return result ;
end ;
/
JDBC調用存儲函數:與調存儲過程的區別:
在調用時,注意參數:"{? = call addTwoNumfunction (?,?) }"
3.處理CLOB/BLOB類型
處理稍大型數據:
a.存儲路徑 E:\JDK_API_zh_CN.CHM
通過JDBC存儲文件路徑,然后 根據IO操作處理
例如:JDBC將 E:\JDK_API_zh_CN.CHM 文件 以字符串形式“E:\JDK_API_zh_CN.CHM”存儲到數據庫中
獲取:1.獲取該路徑“E:\JDK_API_zh_CN.CHM” 2.IO
b.
CLOB:大文本數據 (小說->數據)
BLOB:二進制
clob:大文本數據 字符流 Reader Writer
存
a.先通過pstmt 的? 代替小說內容 (占位符)
b.再通過pstmt.setCharacterStream(2, reader, (int)file.length()); 將上一步的?替換為 小說流, 注意第三個參數需要是 Int類型
取:
a.通過Reader reader = rs.getCharacterStream(“NOVEL”) ; 將cloc類型的數據 保存到Reader對象中
b. 將Reader通過Writer輸出即可。
blob:二進制 字節流 InputStream OutputStream
與CLOB步驟基本一致,區別:setBinaryStream(…) getBinaryStream(…)
4.JSP訪問數據庫
JSP就是在html中嵌套的java代碼,因此 java代碼可以寫在jsp中(<% … %>)
導包操作:java項目 :1 Jar復制到工程中 2.右鍵該Jar :build path ->add to build Path
Web項目:jar復制到WEB-INF/lib
核心:就是將 java中的JDBC代碼,復制到 JSP中的<% … %>
注意:如果jsp出現錯誤:The import Xxx cannot be resolved
嘗試解決步驟:
a.(可能是Jdk、tomcat版本問題) 右鍵項目->build path,將其中 報錯的 libary或Lib 刪除后 重新導入
b.清空各種緩存:右鍵項目->Clean tomcat… clean (Project -clean或者 進tomcat目錄 刪除里面work的子目錄)
c.刪除之前的tomcat,重新解壓縮、配置tomcat,重啟計算機
d.如果類之前沒有包,則將該類加入包中
5.JavaBean
剛才我們將 jsp中 登錄操作的代碼 轉移到了LoginDao.java;其中LoginDao類 就稱之為JavaBean。
JavaBean的作用:
a.減輕的jsp復雜度
b.提高代碼復用(以后任何地方的 登錄操作,都可以通過調用LoginDao實現)
JavaBean(就是一個Java類)的定義:滿足一下2點 ,就可以稱為JavaBean
a.public 修飾的類 ,public 無參構造
b.所有屬性(如果有) 都是private,并且提供set/get (如果boolean 則get 可以替換成is)
使用層面,Java分為2大類:
a.封裝業務邏輯的JavaBean (LoginDao.java封裝了登錄邏輯) 邏輯
可以將jsp中的JDBC代碼,封裝到Login.java類中 (Login.java)
b.封裝數據的JavaBean (實體類,Student.java Person.java ) 數據
對應于數據庫中的一張表
Login login = new Login(uname,upwd) ;//即用Login對象 封裝了2個數據(用戶名 和密碼)
封裝數據的JavaBean 對應于數據庫中的一張表 (Login(name,pwd))
封裝業務邏輯的JavaBean 用于操作 一個封裝數據的JavaBean
可以發現,JavaBean可以簡化 代碼(jsp->jsp+java)、提供代碼復用(LoginDao.java)
public void sleep(String name,String place, int time)
{
}
public void sleep(Person per)
{
per.getName()
per.getPlace()
…
}
6.MVC設計模式:
M:Model ,模型 :一個功能。用JavaBean實現。
V:View,視圖: 用于展示、以及與用戶交互。使用html js css jsp jquery等前端技術實現
C:Controller,控制器 :接受請求,將請求跳轉到模型進行處理;模型處理完畢后,再將處理的結果
返回給 請求處 。 可以用jsp實現, 但是一般建議使用 Servlet實現控制器。
Jsp->Java(Servlet)->JSP
Servlet:
Java類必須符合一定的 規范:
a.必須繼承 javax.servlet.http.HttpServlet
b.重寫其中的 doGet()或doPost()方法
doGet(): 接受 并處 所有get提交方式的請求
doPost():接受 并處 所有post提交方式的請求
Servlet要想使用,必須配置
Serlvet2.5:web.xml
Servle3.0: @WebServlet
Serlvet2.5:web.xml:
項目的根目錄:WebContent 、src
所在的jsp是在 WebContent目錄中,因此 發出的請求WelcomeServlet 是去請求項目的根目錄。
Servlet流程:
請求 -> -> 根據中的 去匹配 中的,然后尋找到,求中將請求交由該執行。
2個/:
jsp:/ localhost:8888
comeServlet 是去請求項目的根目錄。
Servlet流程:
請求 -> -> 根據中的 去匹配 中的,然后尋找到,求中將請求交由該執行。
2個/:
jsp:/ localhost:8888
web.xml: / http://localhost:8888/項目名/
總結
以上是生活随笔為你收集整理的数据库相关(JDBC,存储过程,以及大文本数据处理,mvc设计模式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Git常见错误(附解决办法)
- 下一篇: 计算机网络基础必备(三次握手,四次握手,