目 录
1已完成的设计研究工作及取得的初步成果
1.1 学习开发语言,配置开发工具
1.1.1部署开发环境
1.1.2学习并配置开发工具
1.2学习相关领域工具
1.2.1学习并配置搜索引擎工具
1.2.2学习软件工程与项目管理知识
2存在问题
2.1国际化问题
2.2现有数据的结构问题
2.3页面布局简陋的问题
3下一步工作计划
3.1完成未完成的页面功能模块
3.2完成数据的二次清洗
3.3完成当前系统所用数据库表的建立
4可预期成果
4.1图书推荐系统网站平台
4.2可扩展的Spring MVC内容展示平台
指导教师意见
系所意见
1已完成的设计研究工作及取得的初步成果
1.1 学习开发语言,配置开发工具
1.1.1部署开发环境
访问oracle.com网站,下载Java SE Development Kit 6 Update 45,安装,并且配置环境变量,将系统属性->环境变量中添加CLASS_PATH、JAVA_HOME两个用户变量,修改Path系统变量,之后便可以在命令行中调用Java命令。
访问springsource.org网站,下载并安装SPRING TOOL SUITE 3.2.0.RELEASE,基于ECLIPSE JUNO 4.2.2,集成了Maven项目管理工具,Git与CVS版本控制工具。其中的Spring Tool Suite插件提供了一系列的模板,用于方便的创建spring工程。
访问tomcat.apache.org网站,下载Tomcat软件。解压后,在Spring Tool Suite中添加新的server wizard,选择Tomcat v7.0 Server,将下载的Tomcat作为Server实例,配置完成之后,在Server面板中增加了一个服务器实例,用于调试运行程序。
访问mysql.com下载MySQL社区版,针对Windows的二进制版本,安装,配置root账户密码,启动,作为默认的数据库服务。
下载Git for Windows,安装,在工程目录下,使用init命令初始化Git,配置全局用户名,邮箱,添加修改的文件,并且在本地提交更改。
1.1.2学习并配置开发工具
新建Spring工程:新建一个Spring Template Project,选择Spring MVC Project,配置好工程的名称、包名称之后,开发工具会调用Maven,并按照集成在工具中的Maven工程配置信息,创建工程目录、模板文件,从远程服务器下载好依赖类库到本底的缓存目录,并且关联到工程中。
配置Maven工具:添加spring-jdbc、mybatis、mybatis-spring、mysql-connector-java依赖配置,用于解决spring中与mysql数据库连接的问题以及增加mybatis数据持久化工具的支持。保存后,开发工具自动调用Maven工具来更新依赖包。
数据库持久化工具MyBatis的配置:下载mybatis generator工具,解压,在lib目录下,新建一个xml文件,配置好mysql connector包、mysql连接地址、用户名、密码,java类型参数,java model类参数,java map配置文件参数,java dao类参数,以及数据库中每个表的独立的配置信息,用于覆盖默认的值。配置好之后,使用mybatis generator的命令来根据配置文件来生成对应的java类与xml配置。Spring要使用生产的Java类,还需要在工程中添加MyBatis的配置文件,修改contextConfiguration文件,用于创建数据库实例,再使用此实例创建事物管理实例,sql session工厂实例。利用刚刚使用generator创建的java类与sql session工厂实例,创建数据库中表的bean配置,添加到contextConfigura文件中,在servlet中需要用到的地方注入,用来访问数据库。
MySQL数据库的初始化与数据导入:根据之前配置的root用户密码,登陆MySQL,创建分配给程序的用户、数据库,使用mysqldump工具,导入之前从豆瓣采集到的图书数据.sql文件到新创建的数据库中。
Spring MVC框架的学习与开发:根据MVC的思想,将项目分为模块、视图与控制器三大块,模块与控制器之间使用注入方式来减少依赖,视图分块,用于提高复用率。Servlet中使用渐趋流行的注解来实现注入、dispatch以及缓存配置。页面使用JSP来实现,根据Servlet传入的参数来生产html页面,发送给浏览器,呈献给用户。目前已完成了index页面与搜索结果页面。
1.2学习相关领域工具
1.2.1学习并配置搜索引擎工具
从lemur网站下载最新版的galago源码,根据Unix编译脚本,使用maven工具在Windows中编译工程,将自带的类库添加到编译目录中,跳过单元测试,最终生成galago二进制文件与运行脚本,修改脚本,添加slf4j的类库地址。之后使用脚本运行,使用例子文件来生成索引。通过编译运行测试,了解了搜索引擎的运行方式与原理,对平台的开发有了更深刻的认识。在解决问题的过程中,对Maven工具更加熟悉。
1.2.2学习软件工程与项目管理知识
《人月神话》是软件工程领域非常出色并且历史也很悠久的一本著作,虽然历史悠久,与软件开发领域追求创新有些背道而驰,可是作者以少有的预见性,以及深刻的分析,让其中的思想历久弥新。其中提到的软件开发进度分析、软件开发团队组织结构等,对毕业设计这个项目有一定的促进作用,并且也试着使用其中的思想来规划项目进度与目标设定。
2存在问题
2.1国际化问题
开发过程中先是实现页面逻辑,遇到的中文问题不是很多,页面使用utf-8编码,中文也没有乱码。但是随着页面界面开发的增多,遇到越来越多的文字编码问题,而系统在设计之初便要求兼容多语言系统,因此,系统需要增加对多语言的支持。Java的i18n工具对国际化提供了很好的支持,而一些JSP的标签库也支持本地化,因此,后期会考虑加入这些工具来解决程序的国际化问题,使其支持更多更复杂的环境。
2.2现有数据的结构问题
现有数据是直接从豆瓣抓取,更偏向于人的思维方式,而对于程序来说,比较混乱,没有条理性,不便于索引与查询。若直接使用,则会严重影响系统的效率,因此需要对现有数据进行再次清洗整理,构建索引,以便于更加方便的检索、分类查询,提高系统的执行效率,让系统可用,易用。
2.3页面布局简陋的问题
目前并没有花过多时间在页面布局之上,只是使用简单的html标签对页面内容进行一个展示,用于测试功能。之后会对页面进行进一步美化,使用CSS与JQuery,增加布局与页面交互内容。考虑使用bootstrap等开源框架工具来提高页面布局效果以及减少工作量。
3下一步工作计划
3.1完成未完成的页面功能模块
还有用户注册登录、图书详细信息还有一些附属的小模块需要完成。而已完成的模块中,页面布局与国际化工作还没有开始,因此需要在接下来的这个月中,完成所有这些任务。并且通过测试,保证系统的稳定与内容的正确。
此工作预计在三周内完成。
3.2完成数据的二次清洗
当前数据并不适合于程序检索与索引,需要在功能完成之前,将数据清洗为易于使用的结构,根据关系数据库特性来安排数据的存储与查询。
此工作预计于三天完成。
3.3完成当前系统所用数据库表的建立
当前页面除了已有豆瓣数据之外,并没有其它表来存储用户信息、用户生成记录、网站日常记录、配置信息。这些表都需要自行设计并且创建,之后使用MyBatis Generator工具生成对象持久化代码。若项目要继续下去,则必须提前设计好数据库表,并且保证数据有效,利于检索,并且符合关系数据库的规范。
此工作预计于二日内完成。
4可预期成果
4.1图书推荐系统网站平台
构造出一个完善、可扩展、易于维护的图书推荐系统展示平台。利用此平台,服务提供商可以收集用户喜好,方便的修改扩展展示内容。为客户提供良好的用户体验,展示用户需求的信息,更好的实现图书展示的功能。
系统的推荐内容,对于提高用户的粘性,提高点击率,都有积极作用。
搜索功能,提供对系统数据库内存储图书的搜索查询实现,用户可以根据图书内容、标题、分类、关键词来搜索。
图书详细信息浏览功能,用户可以查看图书缩略图,图书标题、isbn号、出版社、作者、出版时间、简介、目录以及用户生成内容:用户评论、评分。
用户登录注册功能,用户可以注册账户,登录系统,系统记录用户的访问记录,访问页面、图书内容,用于提供给喜好推荐系统来分析并处理用户喜好信息,根据分析结果向用户推荐相关内容。
匿名用户访问记录,对匿名的,没有注册登录的用户,根据cookie来记录用户的访问记录,同样记录于数据库中。在用户使用相同的浏览器再次访问时,根据cookie来向用户推荐图书。而当用户登录之后,这些记录作为用户的访问记录来合并到用户的访问记录表之中。
图书评价评分功能,用户登录之后,可以对图书内容进行评分,对图书进行评价,评价内容显示在图书信息下方的评论区域中,而评分会对图书总评分有相应的影响。
4.2可扩展的Spring MVC内容展示平台
系统尽量在设计与开发中考虑到扩展性,按照MVC框架,将系统的耦合性尽量降低,提高代码的重用率,并且可以通过简单的修改便可适用于其它的功能需求。