毕业设计之b/s下电影推荐系统的设计详解与疑难解答(含中文乱码详细解答)

    emm,算是为毕业论文写草稿吧。这个系统是一个电影评价网站,通过用户评分找出用户打分最高的三部电影,然后分别以这三部电影为基础,挑选出相似度高的电影进行推荐。

1.系统总体设计和网站架构设计

 

 

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

使用框架:数据库端使用了c3p0和Dbutils。后端端是jsp+servlet。前端使用jquery和bootstrap。

网站架构:毕业设计之b/s下电影推荐系统的设计详解与疑难解答(含中文乱码详细解答)_第1张图片

2.外部引入

 

 

数据库:配置c3p0-config.xml

Referenced lib:如上图需要导入四个jar包

js:需要导入如上五个.js文件

css和 fonts是bootstrap自带的(咱也不知道是干啥的,咱也不敢删)

3.细数开发来遇到的疑难问题(博主是小白,勿喷)

 

 

 3.1 对电影(movie)实体list按评分(movie.grade)排序

这个想了很多,后来发现可以用实体list的某个属性进行排序。这样就能按评分对电影排序进而根据推荐值截选前n部电影

毕业设计之b/s下电影推荐系统的设计详解与疑难解答(含中文乱码详细解答)_第2张图片

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 模糊查询

毕业设计之b/s下电影推荐系统的设计详解与疑难解答(含中文乱码详细解答)_第3张图片

很难受,整了很久,最后才整出来。

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

如果传递到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&useUnicode=true

 c:mysql数据库编码问题

进入mysql命令行,输入show variables like 'character%'; 查看编码集。

毕业设计之b/s下电影推荐系统的设计详解与疑难解答(含中文乱码详细解答)_第4张图片

建议都设置为utf-8(character_set_filesystem为binary) 如果不是的话需要找到mysql目录的my.ini文件并在[mysql][mysqld][client]里添加如下代码。

毕业设计之b/s下电影推荐系统的设计详解与疑难解答(含中文乱码详细解答)_第5张图片

毕业设计之b/s下电影推荐系统的设计详解与疑难解答(含中文乱码详细解答)_第6张图片

然后用命令行以管理员模式关闭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月份会发布出来)

大概就是这样吧,后续可能还会在进行一些扩展与补充,感觉现在还有点单薄。

 

你可能感兴趣的:(人生逆旅)