1、DAO模式 分包:依次建立
entity:實體包,放的是跟oracle數據庫中表結構相對應的對象的屬性,也就是這個對象有什么
dao:增刪改查接口,實現增刪改查的具體方法
service:同dao,也是一個接口,一個接口的實現類,方法什么的都跟dao差不多
servlet:新建servlet類,繼承HttpServlet類,一個方法建立一個servlet類,根據不同的方法選擇使用doGet()、doPost()方法 、services()既包含doGet 又包含doPost
新建jsp頁面
這些都是新建web項目
2、save方法,對應sql語句insert into
數據原型是干啥使的,當用戶要存入一條新紀錄時,用戶在jsp頁面輸入,在servlet獲得,存入實體對象,調用service層的save方法,service層再return給dao層
,再往數據庫插入
3、update更新數據方法跟add差不多。比add還要簡單多了,直接拿到id調用update方法,就會返回一個完整的實體對象,把實體對象存到作用域,轉發給edit.jsp;
不同點:在jsp頁面需要回填數據到表單 用el表達式
分頁查詢功能
java中萬物皆對象,在util包中新建個pageBean對象,包含pageIndex頁號、List results 查詢結果集、rowCount總行數/pageSize每頁行數=pageCount總頁數
在dao層寫接口。也叫find方法,傳參pageIndex頁號(在servlet層給出初始值,在jsp層需要用戶傳入)、pageSize每頁行數(在servlet層給規定每頁顯示幾個)、 模糊查詢搜索字段名(表中的)(需要用戶給)
寫實現類。先連接數據庫,先執行查詢所有記錄數的sql語句,得到總頁數與首尾行號
如果為true則再執行分頁的sql語句,從結果集中取出來封裝到book實體類,再封裝pageBean對象
dao層負責想方設法從數據庫得到數據;servlet層負責從jsp拿到數據,轉發或重定向到jsp
下面來說說servlet層:先考慮是doGet還是doPost,doGet是想查詢數據,搜索框,所以得先解決中文亂碼,先設pageIndex=1,pageSize=2,判斷瀏覽器是否傳頁號
a、數據分頁查詢
b、數據分頁顯示
復習步驟先從數據庫開始,sql語句,jdbc將java程序與數據庫連接起來,可以使java程序操作數據庫中的數據
由底層開始,層層往上,最后一直到jsp顯示層
1、sql語句
count()聚合函數 計總行數
row_number() over (partition by deptno order by sal desc)分區子句按部門編號分區,把查詢結果分為不同的組,類似於group by;排序子句,將每個分區排序。為查詢結果分配行號
order by desc 降序/ asc 升序 默認
select * from book 查詢book表中 的所有列
select 結果分配行號,book表中的所有列 from book where title like ?
select row_number() over (order by id desc) as rn,book表中的所有列 from book b where title like ?
列名起別名是as 名字 表名起別名 是直接名字即可
把表中所有列查詢結果都分配行號,id降序,模糊查詢
select t.*
from(select ROW_NUMBER() OVER(order by id desc) as rn,b.*
from book b
where title like '%a%') t
where t.rn between 2 and 14;
按照查詢條件把我想要的所有行顯示出來了,但是我想分頁顯示,就要設置每一頁顯示的首尾行號,這樣就能確保每一頁准確無誤的顯示了
查詢步驟
1、先獲得符合查詢條件的總行數
select count(*) as count from Book where title like '%a%';
把sql語句where like 查詢條件變成一個搜索欄,新建一個pageBean對象用來顯示分頁情況
先和數據庫建立連接,執行sql語句,得到總行數,求出總頁數,pageIndex 和pageSize servlet層會先給個默認值的
設置每頁首尾行號
2、再執行一次sql語句
開始分頁了
從數據庫里把數據取出來(結果集)DAO----->Entity放到對象中啊,集合中啊 service層返回DAO層 service----->servlet<-----jsp
3、servlet層
在list頁面調用分頁查詢方法
因為需要用戶傳參,所以就得先做非空判斷
在servlet層,只要轉發就寫的是xxx.jsp
只要重定向就是“list” response.sendRedirect("list");
4、index.jsp
搜索欄
URL開頭的斜線總結
1.在HTML標簽中設置src屬性、href屬性時
開頭的"/"代表服務器根目錄(web-apps) Tomcat目錄結構,web應用發布目錄
2.在配置Servlet或進行轉發時
開頭的"/"代表項目的WebRoot目錄
3.在重定向時,開頭的"/"代表服務器根目錄(web-apps)
轉發重定向時的路徑問題:
轉發時的路徑,基本都是xxx.jsp頁面,因為有數據要轉發到頁面然后顯示給用戶看
重定向時路徑有兩種情況:a.退出登陸直接重定向到login.jsp頁面;注冊成功后重定向到login.jsp頁面;路徑都是同一級的
b.登陸成功后要訪問后台background/list;添加成功后要