畢業設計之b/s下電影推薦系統的設計詳解與疑難解答(含中文亂碼詳細解答)

    emm,算是爲畢業論文寫草稿吧。這個系統是一個電影評價網站,通過用戶評分找出用戶打分最高的三部電影,然後分別以這三部電影爲基礎,挑選出相似度高的電影進行推薦。

1.系統總體設計和網站架構設計

 

 

使用軟件:mysql+eclipse(需要jdk)+navicat   web3.0以上

使用框架:數據庫端使用了c3p0和Dbutils。後端端是jsp+servlet。前端使用jquery和bootstrap。

網站架構:

2.外部引入

 

 

數據庫:配置c3p0-config.xml

Referenced lib:如上圖需要導入四個jar包

js:需要導入如上五個.js文件

css和 fonts是bootstrap自帶的(咱也不知道是幹啥的,咱也不敢刪)

3.細數開發來遇到的疑難問題(博主是小白,勿噴)

 

 

 3.1 對電影(movie)實體list按評分(movie.grade)排序

這個想了很多,後來發現可以用實體list的某個屬性進行排序。這樣就能按評分對電影排序進而根據推薦值截選前n部電影

3.2從hbuilder設計的界面移植進入jsp中,結果不可以使用

經過排查發現引入.js文件路徑錯誤,因爲文件放置路徑不同

3.3 錯誤,找不到或無法加載主類

這個當時也耽誤了一段時間,後來發現是因爲buildpath中libraries中有倆紅叉jar包。出現紅叉jar包是因爲自己引入jia包不是複製進去的,而是link進去的。所以要注意。

3.4 servlet返回jsp頁面與原來頁面不同。

這個具體原理不詳,反正就是以下兩種方式去jsp頁面展現的頁面不一樣。需要用b種類方式纔行,用a頁面是亂的。

 a: request.getRequestDispatcher("/page/pre/movie.jsp").forward(request, response);
 b: response.sendRedirect("http://localhost:8080/QFMR1/page/pre/movie.jsp");

3.5  ArrayList list 

 這個由於要將list再處理,不能直接創建list,要創建arraylist與list之間互動。

3.6 模糊查詢

很難受,整了很久,最後才整出來。

3.7  jsp和servlet跳轉的問題

本來是之前設計的jsp之間傳遞,後來發現這樣不利於網站建設,後來就一個jsp對應一個初始化servlet。session中傳遞一個mvlist,jsp中接受session中的mvlist,並初始化mvlist爲null。

3.8 亂碼問題(血的教訓,斷斷續續花了我將近10天才解決)
 

3.8.1  從servlet傳遞到jsp

response.getWriter().write("評論成功")

 用這個方法傳遞到jsp的中文字符會顯示問號,需要在上面加上

 response.setContentType("text/html;charset=utf-8");
  這樣就會傳遞中文          

3.8.2 從jsp傳遞到sevlet或jsp

<a  href="/QFMR1/initmoviecommentServlet?movie_name="張三" " ></a>

<a  href="recomment.jsp?movie_name="張三" " ></a>

如果傳遞到servlet或jsp頁面 需要String str=new String(str1.getBytes("ISO-8859-1"),"UTF-8"); 將接受的變量轉爲utf-8

3.8.3 和數據庫對接亂碼(重點)

a :  將eclipse  workspace 設置爲utf-8

b:在url後上加上characterEncoding=UTF-8&amp;useUnicode=true

 c:mysql數據庫編碼問題

進入mysql命令行,輸入show variables like 'character%'; 查看編碼集。

建議都設置爲utf-8(character_set_filesystem爲binary) 如果不是的話需要找到mysql目錄的my.ini文件並在[mysql][mysqld][client]裏添加如下代碼。

然後用命令行以管理員模式關閉mysql再開啓mysql,出現如上的編碼集就ok了,這樣基本就了亂碼,可能需要重啓電腦,之後要刷新數據庫鏈接和數據庫,mysql8.0以上需要自己注意一下my.ini位置。

3.9 圖片存儲問題

想了很久,最後是將文件放在img下,然後數據庫存儲路徑。

4.設計與源代碼(不知道多少軟件計算機的童鞋在等這個)

 

 

本網站我負責的模塊是推薦系統的設計和網站的建設。

4.1 網站建設

網站的非推薦相關功能包含登陸,註冊(使用jquery.validate),註銷電影關鍵詞分類,模糊搜索。都是基本的mvc模式進行設計。

4.2 推薦相關

4.2.1根據用戶評分推薦

用戶點擊電影可以查看電影的詳細信息,並且能夠進行評分和評論(涉及和另一個小夥伴的對接算法),寫入數據庫。將用戶評分最高的三部電影id寫入用戶表。推薦是根據用戶喜歡的電影id,來與其他電影進行比對,選取相似度值較高(涉及相似度算法1)的前n部電影進行二次推薦值計算(涉及推薦值算法2)選取m部電影,用戶已經評論過的電影不再推薦。

4.2.2用戶關鍵詞推薦 

表單輸入導演,演員,地區,類型,時長。後端接收數據並封裝成movie與數據庫比對(涉及算法3),並按評分降序(涉及算法1的子算法4)選出最多n部電影。

(樓主目前還在畢設階段,源代碼不能貼,7月份會發布出來)

大概就是這樣吧,後續可能還會在進行一些擴展與補充,感覺現在還有點單薄。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章