日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

传智播客itcastbbs(四)

發(fā)布時間:2023/12/31 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 传智播客itcastbbs(四) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

=======用戶登錄
1. jsp文件:使用注冊剩下的部分;稍作修改;
增加checkbox:【7天自動登錄】

2. FormBean中沒有autoLogin屬性;

3. 寫Action.login
(3.1)UserService.getUserByLoginNameAndPassword
UserDAO.getUserByLoginNameAndPassword
(3.2)Session中設(shè)置user屬性為登錄的用戶實體對象;
(3.3) 注銷: 讓Session失效
(3.4)UserServiceImpl.getUserByLoginNameAndPassword
加密密碼;
(3.5)UserDAOImpl.getUserByLoginNameAndPassword
(3.5) 登錄測試完畢;

4. 實現(xiàn)自動登錄功能:
(4.1) 自動登錄的Cookie,
name=ItcastbbsAutoLogin;
什么時候產(chǎn)生并發(fā)送?
--在用戶登錄成功并選擇了自動登錄;
什么是否被刪除?
--在超過設(shè)置的maxAge時被刪除;
--在用戶注銷之后,也要被刪除;
什么時候被使用?
--有一個過濾器攔截每次請求。如果當(dāng)前這個request所關(guān)聯(lián)的session
未登錄就會檢測這個AutoLoginCookie;
Cookie:
Cookie的value:userId_expriyTime_MD5(currentTime);
數(shù)據(jù)庫:userId_expriyTime_MD5(currentTime);
(4.2) 實現(xiàn)步驟
--從Cookie中取出value, 從中取出用戶的id;
--根據(jù)userId取出數(shù)據(jù)庫中的autoLoginkey
--如果cookie.value與user.autoLoginKey相等,且未超出過期時間,就是登錄用戶;


==== 編碼實現(xiàn)
(4.3) Action.login
--生成autoLoginKey :
7* 24 * 3600 * 1000 + System.currentTime;
userId+ expiryTime + MD5(currentTime);
Keys: Word Completion
--發(fā)送AutoLoginCookie;
newCookie, setPath(), setMaxAge(), addCookie()
--數(shù)據(jù)庫中存一份autoLoginKey;
setAutoLoginKey(),updateUser()[update];

--logout
==Session失效
==刪除Cookie

(4.4)測試
通過httpwatch檢查cookie值

(4.5) 使用Filter檢測CheckAutoLoginFilter
/* ===攔截所有的請求
出現(xiàn)問題:
自動登錄也需要數(shù)據(jù)庫;
而此時事務(wù)還沒有打開,因為openSessionFilter是*.do
將兩個Filter增加對*.jsp和*.do的支持;

測試成功,并測試注銷功能;

(4.6) 顯示圖像:
// Tomcat -web.xml
response.setContentType("img/jpeg");//text/html;text/xml; img/jpeg;
response.getOutputStream().write();
flush(); //不用close

== jsp
---- html:img

(4.7) 大圖片的問題

如果圖片過大,顯示的時候圖片占用面積就大,需要壓縮;
工具類:
ImageUtils;及使用代碼;
將有關(guān)方法放在UserAction中;

????什么時候調(diào)用?沒有找到地方!!!


文章管理模塊

1. 實體分析: 軟件的設(shè)計是漸進(jìn)的,迭代的,循環(huán)的。
文章有關(guān)的實體:
幾個實體,主要屬性,實體之間的關(guān)系,與現(xiàn)有的實體之間的關(guān)系?

主題(,附件,投票),回復(fù);

Article(id, author, content,postTime, ipAddr)
Topic(lastArticlePostTime,lastReply,title, type, forum, replyCount,viewCount)
, Reply(floor, topic, type,)

修改Forum增加了
topicCount,articleCount, lastTopic

理順現(xiàn)有實體之間的關(guān)系;

附件實體:Attachement(id, path,article, size, filename, description, downloadCount)
Article中增加了attchements:Set<Attachment>

2. 編寫實體類:
2.1 將實體寫成JavaBean;
2.2 寫完JavaBean后寫映射文件;
幾個需要注意的映射:


這兩個一對一,配置成基于外鍵的單向一對一
Forum.lastTopic - Topic
Topic.lastReply -Reply

其他的都可以配成雙向,可以根據(jù)需要;
用戶與文章: 單向;
版面與主題:單向;

Article.content需要使用大文本屬性;



練習(xí):完成以上實體的映射文件并測試數(shù)據(jù)表的生成;

修改了一個實體,增加了4個

練習(xí)時,one-to-one

Forum.lastTopic

??? 使用many-to-one時:unique="true"值得思考,是否需要
如果多個Topic沒有回復(fù),他們的lastReply=null,lastReplyId為空,這樣unique就不正確了???

3.1 Forum
lastTopic
<many-to-onename, columnn, unique>

3.2 Article
<setname="attachments">
<keycolumn="articleId" />
<one-to-manyclass="Attachment" />
</set>

many-to-one 實現(xiàn)基于外鍵的一對一映射;

3.3 Attachment

3.4 測試,并檢查表結(jié)構(gòu)生成是否正確


步驟:
類圖 -> 實體-> hbm.xml -> 測試 ->檢查結(jié)構(gòu)
-> DAO(basic)


4. DAO的聲明: 基本的增刪改查功能,繼承即可;
DAO -> DAOImpl
TopicDAO, ReplyDAO,AttachmentDAO

注意無參構(gòu)造函數(shù)調(diào)用父類的構(gòu)造函數(shù),傳Class

5. 功能分析:
前臺版面列表;
單個版面顯示;
發(fā)表主題;
發(fā)表/引用回復(fù);
列表的分頁顯示;
發(fā)表文章帶有多個附件;

6. 實現(xiàn) 前臺版面列表:

直接用現(xiàn)成的復(fù)制
forum -> front ->list

ForumAction. forumList

7. 實現(xiàn) 某個版面的列表 showForum

左側(cè): 顯示分類和版面的列表;
右側(cè):
上面: 版面信息;
下面:顯示主題列表
分頁顯示;
按公告,置頂,普通的文章的順序顯示
每個部分按最后文章發(fā)表的時間降序

8. 文章的顯示 showTopic

顯示主題信息;
顯示文章列表;
分頁顯示,按發(fā)表的順序排序,先發(fā)的在前面;
如果文章中有附件,顯示附件;

9. 回復(fù):addReply
回復(fù)主題或引用文章;
發(fā)表完回復(fù)后顯示最后一頁,轉(zhuǎn)到回復(fù)主題的最后一頁;

10. 發(fā)表主題: addTopic
與addReply相似,內(nèi)容實用fckeditor;
可以帶有多個附件,附件可以動態(tài)的添加與刪除;

11. 分析功能所需要的Action方法:

ForumAction forumList, showForum;
ArticleAction showTopic, addTopicUI,addTopic,addReplyUI, addReply


通過Action,分析Service中的方法;

一點(diǎn)技巧: 直接寫實現(xiàn)類,然后抽取成接口->
沒有實現(xiàn)的方法,拋出UnsupportedException;

帖子類型的常量定義
公告2,置頂1,普通0

12. addTopic
保存Topic;
級聯(lián)保存Attachments;
更新Topic的lastArticlePostTime;
Forum topicCount, articleCount;
Form lastTopic;

addReply
保存Topic;
計算并設(shè)置樓層;當(dāng)前最后回復(fù)的樓層+1
級聯(lián)保存Attachments;
更新Topic的replyCount, lastReply
Forum的articleCount;
更新lastArticlePostTime;

=== 測試;
寫簡單的測試代碼JUit,查看效果;


=== 編碼過程中的一個錯誤
UserDAOImpl.getByLoginNameAndPassword
測試時,發(fā)現(xiàn)輸入的信息正常,剛注冊的一個用戶和密碼,總是獲取不到用戶和密碼;
如果使用list,總是返回n個null的列表;
原因: 改變了User的表id,以前是id,后來變成了userId;

總結(jié)

以上是生活随笔為你收集整理的传智播客itcastbbs(四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。