freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)論文_基于struts2和hibernate框架的bbs論壇系統(tǒng)(編輯修改稿)

2024-12-13 20:49 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 state,pdate,, Userqusetion,useranswer等等,然后設(shè)置主鍵和自增長(zhǎng)。 這兩個(gè)實(shí)體 JAVA類(lèi)對(duì)應(yīng)在數(shù)據(jù)庫(kù)中就是兩張表一張 uers一張 article,通過(guò) annotation的 @Entity來(lái)識(shí)別其中類(lèi)中的每個(gè)私有屬性都代表了數(shù)據(jù)庫(kù)中相 應(yīng)表格下的一個(gè)字段通過(guò) @Id來(lái)確認(rèn)主 @GeneratedValue來(lái)生成自動(dòng)增長(zhǎng)的字段。 ( 1)登錄功能 登錄功能是注冊(cè)用戶(hù),游客和管理員都有可能會(huì)用到的功能,本項(xiàng)目的登錄界面如下圖 圖 10登陸界面示意圖) 展示 。 圖 10 登 陸界面示意圖 登錄界面相當(dāng)簡(jiǎn)單主要就是一個(gè)表單 form method=post id=loginForm action=UserAction!login focus=這個(gè)表單是提交到 UserAction這個(gè)類(lèi)的 login方法,通過(guò)login這個(gè)方法來(lái)接受表單 提交的用戶(hù)名和密碼是否合法。頁(yè)面跳轉(zhuǎn)提交數(shù)據(jù)我是利用 Struts2來(lái)實(shí)現(xiàn)的,主要就是一個(gè) UserAction類(lèi)中的 login這個(gè)方法的實(shí)現(xiàn)需要設(shè)計(jì)下,我設(shè)計(jì)的方法是這樣的: public String login() { if(LOGIN_MANAGER.equals((user))) { HttpServletRequest request = ()。 HttpSession session = ()。 (LOGINUSER, user)。 (MANAGER, user)。 return login_manager_success。 } else if(LOGIN_USER.equals((user))) { 13 HttpServletRequest request = ()。 HttpSession session = ()。 (LOGINUSER, user)。 return login_user_success。 } else { return login_false。 } } 通過(guò)這個(gè) login方法可以驗(yàn)證表單傳過(guò)來(lái)的到底是注冊(cè)用戶(hù)還是管理員或者是還沒(méi)注冊(cè)過(guò)的用戶(hù),若是管理員就在 session中將管 理員的信息保存進(jìn)去,并且返回一條管理員登錄成功的信息login_manager_success。如果是注冊(cè)用戶(hù)也在 session中保存信息,并且也返回一條用戶(hù)登錄成功的信息 login_user_success;如果是未注冊(cè)過(guò)的用戶(hù)那么也會(huì)返回登錄失敗信息“ login_false” 然后通過(guò)Struts2的配置文件 。相應(yīng)的 下: action name=UserAction class= result name=login_user_success type=redirectAction param name=actionNameArticleAction/param param name=methodindex/param param name=page0/param /result result name=login_manager_success/result result name=login_manager_successadmin//result result name=login_false/result 這個(gè)配置文件的作用相當(dāng)于一個(gè)調(diào)度著,他根據(jù)返回信息的不同將頁(yè)面跳轉(zhuǎn)到相應(yīng)的頁(yè)面,若接受到得信息是“ login_false”便將頁(yè)面跳轉(zhuǎn)到 ,也就是說(shuō)如果密碼不正確或者非注冊(cè) 用戶(hù)便會(huì)返回到登錄頁(yè)面,讓用戶(hù)再次輸入或者選擇注冊(cè)。 (2)主題帖的展現(xiàn) 作為論壇來(lái)說(shuō),展示主題帖子是個(gè)必須的功能,這是用戶(hù)來(lái)了解大概內(nèi)容的途徑,如下圖 圖 11主題帖的展示圖示 。 主題帖子羅列出來(lái)的都是主題帖,用戶(hù)點(diǎn)擊這些主題帖能夠進(jìn)入詳細(xì)的內(nèi)容,能看見(jiàn)對(duì)主題帖的回復(fù)或者是對(duì)回復(fù)的回復(fù),主題帖的分頁(yè)顯示是這個(gè)項(xiàng)目里面比較有難度的一段,我的完成代碼如下: % ArticleDao ad = new ArticleDaoImpl()。 int maxRecords = 10。 int getPage = (Integer)(PAGEOFROOT)。 ListArticle rootarticles = new ArrayList()。 rootarticles = ()。 int sumRecords = ()。 int maxPage = (sumRecords%maxRecords==0)?(sumRecords/maxRecords):((sumRecords/maxRecords)+1)。 14 rootarticles = (maxRecords*getPage,(getPagemaxPage1)?maxRecords:sumRecordsmaxRecords*getPage)。 String name = null。 % 圖 11 主題帖的展示圖示 這 段代碼 中 rootarticles 是將要 顯示的 分頁(yè)后 的帖子 ,通過(guò)調(diào) 用 ArticleDaoImpl類(lèi)的getRootArticle(int startIndex, int maxResults)這個(gè)方 法來(lái)得到需要展示的帖子,返回的值是一個(gè)裝了 Article類(lèi)型的 List只要遍歷這個(gè) List我們就能取出每一條帖子了。 這個(gè)方法的代碼如下: public List getRootArticle(int startIndex, int maxResults) { ListArticle list = new ArrayList()。 SessionFactory sf = ()。 Session session = ()。()。 Query q = (from Article article where =0 order by desc)。 list = (startIndex).setMaxResults(maxResults).list()。 ().mit()。 ()。()。return list。} 15 其中使用到了 Hibernate的 HSQL語(yǔ)言來(lái)取得數(shù)據(jù)庫(kù)中的數(shù)據(jù),返回裝滿(mǎn)信息的 List。然后在 通過(guò) 遍歷 %if(rootarticles!=null) { for(Article a : rootarticles) { % 來(lái)取得每條帖子的內(nèi)容將他們展示在 trtd之中就能完美的解決分頁(yè)的問(wèn)題。 ( 3)詳細(xì)內(nèi)容的展現(xiàn) 當(dāng)點(diǎn)擊主題帖中的任意一條帖子是,就需要彈出他和他回復(fù)貼的詳細(xì)內(nèi)容,這就需要設(shè)計(jì)展示詳細(xì)內(nèi)容的頁(yè)面來(lái)完成功能了 如下圖 圖 12詳細(xì)信息展示帖示意圖 圖 12 詳細(xì)信息展示帖示意圖 這個(gè)頁(yè)面的重要的地方也在于它的分頁(yè)顯示,但是詳細(xì)頁(yè)面的展示和主題帖的展示是有區(qū)別,主題帖展示的所有的主題信息的標(biāo)題,而詳細(xì)信息不僅要展示點(diǎn)擊的主題帖子的內(nèi)容和標(biāo)題還要展示所有的它的子帖的所有內(nèi)容,這就需要我們通過(guò)遞歸調(diào)用來(lái)得到所有的主題帖的子貼了。遞歸這個(gè)思想是很奇妙的思想,他雖然有時(shí)候只有幾段短短的代碼,卻能完成很多很難完成的任務(wù),編寫(xiě)遞歸最重要的是找到程序的入口和停止遞歸的條件,我采用了如下設(shè)計(jì) : public List getTreeArticles(Article article) { ArticleTree at = new ArticleTree()。 List list = new ArrayList()。 SessionFactory sf = ()。 Session session = ()。 ()。 Query q = (from Article article where 16 =+()+ order by asc)。 for(Article a:(ListArticle)()) { (a)。 } (list, article)。 ().mit()。 ()。 ()。 return list。 } getTreeArticles(Article article)這個(gè)方法傳進(jìn)去的是主題帖的對(duì)象,返回的是所有這個(gè)主題帖的子帖的 List,當(dāng)然這個(gè)方法本身并沒(méi)有遞歸的思想在里面但是需要注意的是這個(gè)方法所調(diào)用的一個(gè)方法 tree( list, article)這個(gè)方法是個(gè)遞歸的方法代碼如下 public void tree(List list,Article article) { SessionFactory sf = ()。 Session session = ()。 ()。 Query q = (from Article article where =+()+order by asc)。 for(Article a :(ListArticle)()) { (a)。 if(()==0) { tree(list,a)。 } } ().mit()。 ()。 (sf)。 } 他通過(guò)一個(gè)判斷語(yǔ)句 if判斷 所得到的帖子的 isleaf字段是否為 0,如果是 0說(shuō)明他還有子帖,就遞歸調(diào)用自身這個(gè)方法,循環(huán)往復(fù),從而能把所有主題帖子的所有回復(fù),甚至是針對(duì)回復(fù)的回復(fù)都給查找出來(lái)并且都存放在一個(gè) List里面這樣就能讓調(diào)用這個(gè)方法的主體能夠得到一個(gè)裝滿(mǎn)回復(fù)帖子的容器 List。得到了 裝滿(mǎn)回復(fù)帖對(duì)象的容器的話(huà)下面就好辦了 % UserDao ud = new UserDaoImpl()。 ArticleDao ad = new ArticleDaoImpl()。 Article art = new Article()。 ArticleTree at = new ArticleTree()。 art = (Article)(ARTICLE)。 int getPage = (Integer)(PAGEOFTREE)。 List treeArticle = (art)。 17 int maxRecord =()。 int recordOfPage = 6。 int totalPage = maxRecord%recordOfPage==0?maxRecord/recordOfPage:maxRecord/recordOfPage+1。 List articles = (treeArticle,getPage*recordOfPage,getPagetotalPage1?recordOfPage:maxRecordgetPage*recordOfPage)。 (getPagetotalPage1?recordOfPage:maxRecordgetPage*recordOfPage)。 String name =null。 User user =(User)(LOGINUSER)。 name = ()。 int homepage = 0。 homepage = (Integer)(HOMEPAGE)。 % getPage這個(gè) int類(lèi)型的變量在這個(gè)頁(yè)面中有著舉足輕重的作用,他是用來(lái)在各個(gè)頁(yè)面間轉(zhuǎn)換的關(guān)鍵變量,當(dāng)前如果在第一頁(yè)的話(huà),若選擇第二頁(yè)就必須得到第二頁(yè)的內(nèi)容,點(diǎn)擊第三也當(dāng)然必須得到第三頁(yè)的內(nèi)容,這個(gè) getPage就是完成這個(gè)功能的 int totalPage = maxRecord%recordOfPage==0?maxRecord/recordOfPage:maxRecord/recordOfPage+1。 List articles = (treeArticle,getPage*recordOfPage,getPagetotalPage1?recordOfPage:maxRecordgetPage*recordOfPage)。 通過(guò)雙目運(yùn)算符用 getPage來(lái)計(jì)算出各個(gè)頁(yè)面所要取得的對(duì)應(yīng)數(shù)據(jù)庫(kù)中的信息,能夠充分的達(dá)到功 能。 ( 4)注冊(cè)功能的實(shí)現(xiàn) 注冊(cè)是論壇里面不能缺少的功能,他的主要注意的方面就是表單的驗(yàn)證,有的程序用服務(wù)器端的表單驗(yàn)證,但是我缺更傾向于客戶(hù)端的表單驗(yàn)證,因?yàn)檫@樣可以大大的減少錯(cuò)誤訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的時(shí)間,這樣也能更增加了論壇的性能。在注冊(cè)頁(yè)面里面加上一段 js的驗(yàn)證代碼這樣就能完成表單的驗(yàn)證了: script language=javascript function checkreg() { var flag = true。 if (==) {alert(請(qǐng)輸入用戶(hù)名 )。 ()。 flag = false。} if (3 || 20) {alert(用戶(hù)名長(zhǎng)度限制為 3 20 位 )。 ()。 18 flag = false。} if (==) {alert(請(qǐng)輸入密碼 )。 ()。 flag = false。} if (==) {alert(
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1