建筑三級(jí)資質(zhì)可承接工程范圍win7優(yōu)化
JavaWeb的實(shí)訓(xùn)是學(xué)校的一門課程,老師先講解一些基礎(chǔ)知識(shí),然后讓我們自己開發(fā)一個(gè)比較簡(jiǎn)單的Web程序??缮婕暗闹R(shí)何其之多,不是實(shí)訓(xùn)課的 3 周時(shí)間可以講得完的,只是快速帶過。他說:重點(diǎn)是Web開發(fā)的流程。
我的實(shí)訓(xùn)草草收?qǐng)?#xff0c;一水而過,但也仍然留下了一些雜亂筆記,謹(jǐn)供參考。
文章目錄
- 零、Hello
- 1、心得
- 2、問題
- 3、其他
- 一、實(shí)訓(xùn)前要求
- 1、eclipse
- 2、立項(xiàng)
- 3、需求分析
- 4、概要設(shè)計(jì)
- 5、前端設(shè)計(jì)
- 二、前端知識(shí)
- 三、操作任務(wù)
- 四、前端設(shè)計(jì)
- 1、主頁(yè)
- 2、登錄頁(yè)面
- 3、后臺(tái)管理
- 五、數(shù)據(jù)庫(kù)
- 1、數(shù)據(jù)庫(kù)基礎(chǔ)
- 2、MySQL基本使用
- 3、SQL語句
- 4、數(shù)據(jù)庫(kù)設(shè)計(jì)
- 5、數(shù)據(jù)庫(kù)實(shí)現(xiàn)
- 六、連接數(shù)據(jù)庫(kù):JDBC
- 1、使用流程
- 2、參數(shù)處理
- 3、簡(jiǎn)單封裝
- 七、MVC系統(tǒng)架構(gòu)
- 1、架構(gòu)介紹
- 2、系統(tǒng)架構(gòu)搭建
- 3、小結(jié)
- 4、Web項(xiàng)目運(yùn)行部署
零、Hello
1、心得
- 不要經(jīng)常打補(bǔ)丁式地去填充一些細(xì)節(jié),而更應(yīng)該去尋找更好的結(jié)構(gòu)。
2、問題
for
語法?- workbench創(chuàng)建外鍵的用法?
3、其他
- 中華英才網(wǎng):招聘網(wǎng)站
- 應(yīng)屆生:重視可塑性
一、實(shí)訓(xùn)前要求
大三暑假就可以實(shí)習(xí),只有一年了。(考研,考公,教資,就業(yè))
boos直聘。
- 日記:80-100字
- 7-10班答辯取消了
MVC: 一種項(xiàng)目架構(gòu)的設(shè)計(jì)模式,基于面向接口編程。
Servlet: 重要技術(shù),但是企業(yè)不用。能接受前端的用戶請(qǐng)求,把數(shù)據(jù)響應(yīng)前端。(servlet -> springmvc -> sprintboot)
JDBC: 數(shù)據(jù)庫(kù)連接技術(shù)
1、eclipse
工作空間的作用?會(huì)設(shè)置一些什么?
metadata:元數(shù)據(jù),描述數(shù)據(jù)的數(shù)據(jù)。
-
字體:不要改,有些字體無法被識(shí)別,如javascript會(huì)有一些要求。
-
字符編碼:utf-8
-
設(shè)置JDK?
對(duì)象
- 類是創(chuàng)建對(duì)象的模板
- 類的形成:對(duì)現(xiàn)實(shí)事物共同點(diǎn)的抽象
- 私有屬性能不能被繼承?能、不能都可以,要說出原因。
- 方法重寫:只修改函數(shù)體。
- 看源碼 ?
繼承
- 一個(gè)父類可以多個(gè)子類,但是一個(gè)子類只有一個(gè)父類。(子類屬于父類類型)
- 多態(tài)?接口?抽象?
2、立項(xiàng)
1)名稱:《交個(gè)朋友》
2)需求:(實(shí)際需要需求調(diào)研)
涉及部門:產(chǎn)品部(主),開發(fā)部(產(chǎn)品不懂技術(shù))
-
前端功能:用戶交互的界面
- 首頁(yè)
- 導(dǎo)航欄:注冊(cè),登錄,廣告(輪播圖),后臺(tái)管理,我的朋友,搜索
- 內(nèi)容:輪播圖廣告,系統(tǒng)推薦朋友
- Footer:版權(quán)信息
- 朋友詳情
- 頭像 --> 查看信息,但不同人的信息同一個(gè)模板(不用每人寫一個(gè)頁(yè)面)
- 個(gè)人中心
- 登錄用戶的信息
- 用戶如何交到朋友?(流程)
- 一方:注冊(cè) --> 登錄 --> 搜索 / 推薦朋友 --> 查看 --> 好友申請(qǐng) --> 等待
- 另一方:收到申請(qǐng) --> 查看詳情 --> 接受 / 拒絕(理由)
- 首頁(yè)
-
后臺(tái)功能:接受請(qǐng)求 --> 發(fā)牛響應(yīng)
- 登錄
- 用戶管理
- 審核用戶
- 禁用賬號(hào) / 解禁賬號(hào)
- 刪除用戶
- 修改用戶
- 朋友推薦
3、需求分析
1)涉及部門:開發(fā)部
需求分析是了解要做什么
4、概要設(shè)計(jì)
信息:
1)注冊(cè)信息:用戶昵稱,性別,密碼,確認(rèn)密碼
2)登錄信息:用戶昵稱,密碼
3)廣告信息:圖片,說明
4)用戶詳情:頭像,昵稱,真實(shí)姓名(對(duì)接公安系統(tǒng)),性別,職業(yè),宣言…
5)首頁(yè)推薦:頭像,昵稱,職業(yè)…
數(shù)據(jù)庫(kù)設(shè)計(jì):
5、前端設(shè)計(jì)
設(shè)計(jì)部門:前端設(shè)計(jì)部
過程:ps畫頁(yè)面原型 --> html頁(yè)面
前端崗位:
1)傳統(tǒng)前端:html / css / ps
2)現(xiàn)在前端:+ js框架 / 前端框架 / VUE前后端分離
一個(gè)標(biāo)簽:像java中的一個(gè)對(duì)象
二、前端知識(shí)
1)div標(biāo)簽,在網(wǎng)頁(yè)中劃出一塊空間。
占多大 --> 設(shè)置樣式。
注:div本是只是豎向排列的標(biāo)簽。
2)盒子模型:
3)網(wǎng)頁(yè)布局:略
前端框架:Bootstrap (v3)。
4)框架:寫好了很多東西,拿來用就好了。DIV(do it self)。
使用框架:導(dǎo)入.css
和.js
文件。
css的類選擇器(class)與id選擇器(id)的區(qū)別是什么?
5)響應(yīng)式:拉動(dòng)頁(yè)面窗口(改變大小、縱橫比),內(nèi)容仍然可以正常顯示,自適應(yīng)。
6)柵格:div塊的嵌套,一個(gè)橫向div可以分很多列。不同的屏幕大小設(shè)備,適用于不同的樣式。
- 12個(gè)分成5份?10/5,剩下的留白。
- 文本對(duì)齊:左中右。
- 學(xué)習(xí)框架:了解它能做哪些事情。
- 圖片:顯示形狀(方、圓、方形圓角)
三、操作任務(wù)
搭建eclipse環(huán)境,熟悉css,安裝bootstrap文件
四、前端設(shè)計(jì)
1、主頁(yè)
1)導(dǎo)航欄
- 組件:導(dǎo)航、分頁(yè)、縮略圖…
- 先確定需求,然后開始寫自己的前端頁(yè)面。
- 勾上
generate web .xml
- 建議整個(gè)網(wǎng)頁(yè)放在一個(gè)
container
容器中。 - nav:導(dǎo)航
- 交互:如下拉框,js文件。導(dǎo)航欄中引用了jquery框架(怎么看出來的?)
- 用行內(nèi)樣式可以覆蓋默認(rèn)樣式。在瀏覽器修改,快速調(diào)整,不用每次都修改都刷新瀏覽器。
2)廣告欄
- 調(diào)整圖片大小 / div形狀
- 調(diào)整兩欄之間的間隙
3)系統(tǒng)推薦
- 縮略圖
- 注意div標(biāo)簽的正確對(duì)應(yīng)和閉合。
4)其它
- 將導(dǎo)航欄固定在頂端,同時(shí)避免遮蓋。下面的廣告欄加上上邊距。
2、登錄頁(yè)面
- 新建文件:
register.html
- 版權(quán)信息固定在底部
- 柵格系統(tǒng):左廣告,右登錄頁(yè)
- 表單登錄:輸入框,單選按鈕
<a>
打開新標(biāo)簽頁(yè),使用target="_blank"
屬性。
3、后臺(tái)管理
- 不太注重前端的體驗(yàn)
- 用戶會(huì)有默認(rèn)的頭像
- 表格:
<tr>
,<th>
,<td>
,<table>
。
五、數(shù)據(jù)庫(kù)
1、數(shù)據(jù)庫(kù)基礎(chǔ)
關(guān)系型數(shù)據(jù)庫(kù)。
mysql安裝流程:安裝mysql,安裝mysql服務(wù),登錄,修改密碼,設(shè)置遠(yuǎn)程連接(具體見視頻)。
update user set host='%' where user='root';
- 官網(wǎng):mysql.com 。
移除mysql:停止服務(wù),mysqld -remove mysql
,刪除安裝文件目錄,刪除注冊(cè)表。(使用.exe
文件安裝的,按照普通軟件方式卸載)
-
?
services.msc
-
自己注冊(cè)購(gòu)買幾個(gè)域名?
-
社區(qū)版,8.x版本
-
準(zhǔn)備工作:如果機(jī)器上已經(jīng)有,只要能用就無需安裝。若有但不能用,需卸載干凈后才能安裝。
-
my.ini
-
mysql與mysql服務(wù)?
-
注冊(cè)表:維護(hù)計(jì)算機(jī)運(yùn)行的服務(wù)列表。
-
登錄時(shí)指定登錄端口號(hào),使用參數(shù)
-P
,使用不同版本的mysql -
概念區(qū)分:數(shù)據(jù)庫(kù)服務(wù)器,數(shù)據(jù)庫(kù),表,數(shù)據(jù)。
-
數(shù)據(jù)庫(kù)服務(wù)器:安裝了數(shù)據(jù)庫(kù)軟件的服務(wù)器。
-
應(yīng)用服務(wù)器:安裝了應(yīng)用程序的服務(wù)器。(企業(yè)中會(huì)分開部署)
-
數(shù)據(jù)庫(kù):在數(shù)據(jù)庫(kù)服務(wù)器中創(chuàng)建,用來存放數(shù)據(jù)表。
-
表:用來存放數(shù)據(jù),以行為單位。
-
Java | 數(shù)據(jù)庫(kù) |
---|---|
一個(gè)類 | 一張表 |
類屬性 | 表字段 |
屬性類型 | 字段類型 |
對(duì)象 | 一行 |
MySQL客戶端的安裝:navicat_trial。workbench是老版本。
- 本機(jī):
localhost
,127.0.0.1
- navicat_trial報(bào)錯(cuò):
1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
,應(yīng)該是版本太舊了。
2、MySQL基本使用
-
登錄:
mysql -u root -p
,其中-p
并不是password的意思,而是用于指定數(shù)據(jù)庫(kù),參數(shù)可以為空(即不選擇),在登錄后通過use <database_name>來選擇數(shù)據(jù)庫(kù)
。 -
sql的分類:DDL(數(shù)據(jù)定義語言), DCL(數(shù)據(jù)控制語言), DML(數(shù)據(jù)操作語言), DLL(數(shù)據(jù)事務(wù)語言)
-
創(chuàng)建數(shù)據(jù)庫(kù):可在客戶端中創(chuàng)建。
-
創(chuàng)建數(shù)據(jù)表
- (sex) 1boy 2girl,使用代號(hào)比使用字符串查詢更快。
- (birthday),如果使用
timestamp
(記錄從1970年開始的毫秒數(shù)),則1970前的生日無法表示??梢允褂?code>datetime。 - 表名字不使用
user
,因?yàn)槭莝ql的關(guān)鍵字。 - workbench顯然沒有navacat好用,比如寫入日期時(shí)沒有選項(xiàng)框,只能手打。
-
數(shù)據(jù)類型:int, varchar, double, datatime, timestamp; 長(zhǎng)串?dāng)?shù)字,若不用于運(yùn)算,一律使用varchar而不用int。
-
數(shù)據(jù)輸入:
-
主鍵:能夠唯一標(biāo)識(shí)一條字段。一般不參與業(yè)務(wù)邏輯運(yùn)算,如學(xué)生主鍵經(jīng)常使用id而不用學(xué)號(hào)。
- 修改表結(jié)構(gòu):在workbench中右鍵目標(biāo)表,選擇
alter table
。 - 設(shè)置自動(dòng)維護(hù)主鍵:勾選·
Auto Increment
。記錄已經(jīng)被使用過的主鍵的最大值,刪掉也不影響。
- 修改表結(jié)構(gòu):在workbench中右鍵目標(biāo)表,選擇
-
外鍵:在一張表中,關(guān)聯(lián)另一張表的約束。
-
鍵名沖突:例如學(xué)生表有個(gè)id,地址表也有個(gè)id,如果要?jiǎng)?chuàng)建外鍵就會(huì)有問題。因此,可以給每個(gè)表自己的主鍵加個(gè)標(biāo)識(shí),例如重命名為uid。
(或者給外鍵加個(gè)標(biāo)識(shí)成aid應(yīng)該也行 ) -
主外鍵約束。參照完整性,外鍵的值得在被關(guān)聯(lián)表中存在。約束的是外鍵列的值。
-
主外鍵約束的建立。外鍵不能參照不存在的主鍵,于是已經(jīng)被參照的主鍵也無法被刪除。
注意 :在開發(fā)過程中,表和表在結(jié)構(gòu)上體現(xiàn)主外鍵關(guān)系,但不創(chuàng)建主外鍵約束。因?yàn)閯h除(修改)一個(gè)主鍵字段,就要先刪除參照它的外鍵字段,這個(gè)外鍵字段的行可能又被被人參照,表間關(guān)聯(lián)和約束太多導(dǎo)致維護(hù)困難。
-
主表:表中有一個(gè)主鍵被其他表用來當(dāng)外鍵的表。
-
從表:把另外一個(gè)表中的主鍵當(dāng)作自己的外鍵的表。
-
3、SQL語句
-
增加:
insert into 表名(字段1, 字段2) values(值1, 值2)
-
修改:
update 表名 set 字段=新值, ... where 條件
-
刪除:
delete from 表名 where 條件
-
查詢:
select 字段1, 字段2... from 表名 where 條件
-
查詢部分?jǐn)?shù)據(jù):
limit
; -
模糊查詢。關(guān)鍵字
like
;通配符% _
;%
可以代表任意多個(gè)字符,_
可以代表任意一個(gè)字符。 -
排序。
order by
;對(duì)查詢好像結(jié)果排序,ASC(升序) | DESC(降序)
-
分組。
group by
;分組的目的是統(tǒng)計(jì)。常見的統(tǒng)計(jì)函數(shù)有(max min sum avg count)。
含有g(shù)oupy by的sql中,select后只能接被分組的字段或統(tǒng)計(jì)函數(shù)。否則在mysql5.x版本會(huì)報(bào)錯(cuò);在8.x中不會(huì)報(bào)錯(cuò)但是無意義。
-
多表連接查詢
-
子查詢
將一個(gè)查詢的結(jié)果作為另一個(gè)查詢的對(duì)象。
案例:和李四住在一起的人有哪些?
分析:首先知道李四住在哪,然后將李四住址作為條件進(jìn)行查詢。
-
-- 1、查詢部分?jǐn)?shù)據(jù)
select * from users limit 2; -- 返回查詢數(shù)據(jù)的前兩個(gè)
select * from users limit 0,1; -- 從0到1,注意下標(biāo)從0開始
-- 2、模糊查詢
select * from users where name like %航%;
-- 4、分組
select * from users group by aid; -- 顯示每組的第一條數(shù)據(jù)
select aid, count(id) from users group by aid; -- 查詢每個(gè)地址人數(shù)
-- 5、連接
select * from users,address where users.aid = address.id;
select * from users as u,address a where u.aid = a.id; -- 簡(jiǎn)化寫法
-- 6、子查詢 --> 和李四住在一起的人有哪些?
select id,name,aid from users where aid =
(select aid from users where name="李四");
4、數(shù)據(jù)庫(kù)設(shè)計(jì)
回頭再改表結(jié)構(gòu)是非常麻煩的。
三大范式:1NF(列的原子性),2NF(直接依賴,即所有其他屬性都直接依賴于主鍵),3NF(每個(gè)字段不能傳遞依賴于主鍵,如有aid列,就不要address列了)。
原則:數(shù)據(jù)庫(kù)的性能,比規(guī)范化重要。
數(shù)據(jù)庫(kù)設(shè)計(jì)的過程:
- 找出實(shí)體(對(duì)象)
- 找出實(shí)體的屬性
- 找出實(shí)體之間的關(guān)系 (E-R實(shí)體關(guān)系圖)
- 將ER圖轉(zhuǎn)換為表
找實(shí)體:
-
用戶實(shí)體 users:主鍵 uid,密碼 password,頭像 photo,昵稱 nickname,真實(shí)姓名 name,性別 sex,職業(yè) career,宣言 words,
審核狀態(tài) chechstatus(待審核1 通過2 未通過3) ,
賬號(hào)狀態(tài) accstatus(正常1 禁用2)
首頁(yè)推薦 indexstatus(未推薦1 已推薦2)
-
廣告實(shí)體 ad:主鍵 adid,圖片 image,說明
-
朋友實(shí)體 friends:主鍵 fid,邀請(qǐng)方 send,被邀請(qǐng)方 accept,邀請(qǐng)狀態(tài) status(未處理1 通過2 拒絕3)
-
職業(yè)表 carrer:主鍵 cid,名稱 cname
英文命名盡量通俗,去查的單詞可能后來自己都不認(rèn)識(shí)了。
5、數(shù)據(jù)庫(kù)實(shí)現(xiàn)
表的Comments在哪里體現(xiàn)?
為什么要單獨(dú)創(chuàng)建一個(gè)職業(yè)表?
- 頭像:用字符串存放路徑
六、連接數(shù)據(jù)庫(kù):JDBC
Web項(xiàng)目的三大塊:前臺(tái),后臺(tái),數(shù)據(jù)庫(kù)。
JDBC:Java DataBase Connectivity
1、使用流程
實(shí)現(xiàn)步驟:
- 導(dǎo)入驅(qū)動(dòng)jar包。數(shù)據(jù)庫(kù)廠商給java提供了連接db的實(shí)現(xiàn)類。java只提供接口,實(shí)際調(diào)用的數(shù)據(jù)庫(kù)廠商的實(shí)現(xiàn)。即java的同一套接口可以連接不同的數(shù)據(jù)庫(kù)。
- jar包放到
/lib
目錄下 - Add to Build Path,產(chǎn)生一個(gè)Referenced Libraries。
- jar包放到
- 注冊(cè)驅(qū)動(dòng)。
- 記得注冊(cè)時(shí)區(qū)
- localhost | 127.0.0.1
- 有多個(gè)異常:使用父類
Exception
捕獲所有的異常。
- 創(chuàng)建連接。
desc users
可以查看表的屬性。
- 創(chuàng)建業(yè)務(wù)sql。
- 創(chuàng)建傳送和執(zhí)行sql的對(duì)象。
PrepareStatement
- 修改操作,得到的是影響行數(shù)。
- 查詢操作,得到的是一張表。返回List,遍歷即可。
- 執(zhí)行sql,根據(jù)結(jié)果處理業(yè)務(wù)邏輯。
- 從語句的影響行數(shù)來判斷是否成功執(zhí)行
- 關(guān)閉資源。
-
在一行數(shù)據(jù)中取屬性。
- 使用各種
get
方法,一個(gè)個(gè)地取出屬性。 - 然后將這些屬性構(gòu)成一個(gè)對(duì)象。
- 使用各種
-
javabean:能夠存儲(chǔ)數(shù)據(jù)的一些類。(那記錄呢?)
-
自動(dòng)生成
get
和set
方法、構(gòu)造方法。source --> Generate Getters and Setters
-
標(biāo)準(zhǔn)的javabean:又腳vo(值對(duì)象),dto(數(shù)據(jù)傳輸對(duì)象),model(數(shù)據(jù)類型)
-
唯一作用:進(jìn)行數(shù)據(jù)存儲(chǔ)(封裝)和傳輸。
-
// ResultSet對(duì)象的使用示例
while(rs.next()) {String id = rs.getString(1);int sex = rs.getInt("sex");System.out.println(id);
}
重載:一件事情,根據(jù)不同的條件有不同的實(shí)現(xiàn)方式。
對(duì)比:突然感覺,python中的字典就很方便。
局部類型推斷 var:在java10版本后。
感想:好像,自己寫代碼的時(shí)間就過得特別快。
2、參數(shù)處理
-
sql注入。可以干嘛?
-
sql的執(zhí)行計(jì)劃?
-
防御:sql語句使用占位符參數(shù),查詢時(shí)再給參數(shù)賦值,會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換(內(nèi)部有很多處理),丟掉多余的部分。
將sex值只作為sex的字段值進(jìn)行設(shè)置,而不是組合sql語句。
-
組合模糊查詢:
nm+"%"
-
// _sex = "1 or 1=1"
// 可以被sql注入的語句
String sql = "select * from users where sex = " + _sex + ";";
PreparedStatement pstmt = conn.prepareStatement(sql);
// 防sql注入的語句
String sql = "select * from users where sex = ?;";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, _sex);select * from users where sex = '1 or 1=1';
問題:
pstmt.setString()
是將_sex
作為一個(gè)字符串加入sql語句的,它為什么可以正常執(zhí)行呢?在什么階段進(jìn)行了處理?答:你會(huì)發(fā)現(xiàn)下面這條語句就是可以正常執(zhí)行(即使sex的類型為int)。
select * from users where sex = '1 or 1=1';
3、簡(jiǎn)單封裝
- 一共只需要一個(gè),也只需要建立一次數(shù)據(jù)庫(kù)連接。
- 開發(fā)角度的封裝。
-
抽取connection對(duì)象的創(chuàng)建。
public static Connection getConn()
-
抽取資源的關(guān)閉。
public static void close(Connection conn, PreparedStatement pstmt)
- 單例模式?
- 靜態(tài)塊:只在類加載時(shí)執(zhí)行一次。
- finally關(guān)鍵字:不管catch執(zhí)不執(zhí)行,里面都會(huì)執(zhí)行。
- 條件判斷將null寫在前面(老手):
null != pstmt
;理論上可以避免空值異常。為啥?
感受:在jdbcUtil類中,多層嵌套的
try-catch-finally
看起來好丑。
七、MVC系統(tǒng)架構(gòu)
1、架構(gòu)介紹
不管java如何,先看生活中如何。
-
顧客:前端
-
靜態(tài)技術(shù):html,css,js,bs
-
動(dòng)態(tài)技術(shù):jsp,vue --> 靜態(tài)數(shù)據(jù)動(dòng)態(tài)化
-
-
下單:發(fā)送請(qǐng)求
-
服務(wù)員(控制層):控制整個(gè)業(yè)務(wù)流程走向,向前端負(fù)責(zé)。
- 接受前端請(qǐng)求,并將請(qǐng)求獲取到的數(shù)據(jù)響應(yīng)前端。
- 技術(shù):jsp,Servet,SpringMVC,SpringBoot
-
廚師(服務(wù)層):向控制層負(fù)責(zé),為控制層提供服務(wù)。
- 能夠提供各種方法,處理控制層的業(yè)務(wù)。
- 思想:面向接口編程。接口定義功能,實(shí)現(xiàn)類實(shí)現(xiàn)功能。控制層只需要調(diào)用接口方法即可,而無需知道具體實(shí)現(xiàn)。
-
配菜師(DAO層):數(shù)據(jù)訪問層,從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)交給服務(wù)層,為服務(wù)層服務(wù)。
- 只負(fù)責(zé)數(shù)據(jù)處理,將數(shù)據(jù)處理的結(jié)構(gòu)反饋給服務(wù)層即可。也面向接口編程。
- 數(shù)據(jù)庫(kù)連接技術(shù):JDBC,MyBatis
-
菜(DB數(shù)據(jù)庫(kù)):存放數(shù)據(jù)。
- MySQL,ORACLE,DB2
MVC:Model(數(shù)據(jù)模型),View(視圖),Controller(控制)
流程:View --> Controller --> Services --> DAO --> DB
2、系統(tǒng)架構(gòu)搭建
- src- edu.ft.control- edu.ft.services- edu.ft.dao- edu.ft.util- edu.ft.bean
- WebContent
- 層次展示包結(jié)構(gòu):Package Presentation --> Hierarchical
想法:總是只看功能,不關(guān)心如何實(shí)現(xiàn),真的好嗎?
理解mvc代碼執(zhí)行流程:(以模擬注冊(cè)為例)
-
control:把注冊(cè)信息入庫(kù),得到入庫(kù)的結(jié)果,將結(jié)果告知用戶。
-
service:給控制器提供一個(gè)能夠入庫(kù)的功能。
-
dao:給服務(wù)層提供一個(gè)能夠插入數(shù)據(jù)庫(kù)的功能。存粹地處理數(shù)據(jù),而不進(jìn)行任何業(yè)務(wù)邏輯的處理。
- control- Test
- services- impl :實(shí)現(xiàn)類- IUsersServiceImpl- IUsersService :一個(gè)接口
- dao- impl- IUsersDaoImpl- IUsersDao
- 使用對(duì)象傳數(shù)據(jù),避免冗長(zhǎng)的參數(shù)列表。
問題:注解Override是什么?
問題:給類再包一層接口,不會(huì)顯得多余嗎?
3、小結(jié)
- 需求分析:要做什么。
- 概要設(shè)計(jì):做成什么樣子。
- 詳細(xì)設(shè)計(jì):每一個(gè)細(xì)節(jié)怎么做。
各個(gè)步驟可以并行開始,而不是只能一條龍。
- 執(zhí)行計(jì)劃:解析sql
4、Web項(xiàng)目運(yùn)行部署
要實(shí)現(xiàn)靜態(tài)數(shù)據(jù)的動(dòng)態(tài)化。
-
服務(wù)器:運(yùn)行項(xiàng)目的一個(gè)容器,其實(shí)就是一個(gè)軟件,如tomcat。汽車要放到馬路環(huán)境,才能啟動(dòng)運(yùn)行。
-
在Eclipse中配置tomcat:windows --> Preferences --> Server --> Runtime Environments
-
給項(xiàng)目配置tomcat:右鍵項(xiàng)目 --> Propenties for … --> Java Build Path --> Libraries
-
運(yùn)行項(xiàng)目(部署到tomcat中):Window --> show view --> 搜索Servers --> open
默認(rèn)端口號(hào)為8080
-
訪問項(xiàng)目:url:
http://IP(localhost):端口號(hào)/項(xiàng)目資源
,例如http://localhost:8080/friends/index.html