基于Servlet的在线音乐网站的设计与实现
Design and Implementation of the Music Website on Servlet
摘 要
摘 要
社会的发展,信息时代的到来,Internet已经渗透进各个领域,人们已经不再满足传统的方式来享受自己喜欢的音乐。新兴的网站在线播放音乐已经占据了主流市场。Music Fun在线音乐网站致力于为喜欢音乐的朋友们分享好听的声音,使用户能够在网上随时享受到音乐的乐趣。用户可以通过注册成为会员,会员登录到网站后,可以试听和收藏喜欢的单曲和专辑,也可以为自己喜欢的歌手投票。本网站特别提供专辑购买的功能,会员可以在本网站订购专辑。
作者通过对现有音乐播放网站进行详细分析,列出了该网站的功能需求描述,并利用UML工具对其进行建模,重点探讨了教学网站的设计和实现。系统以Java EE作为开发平台,运用MVC模式开发思想,采用Servlet框架技术实现。系统具有网上资源共享、互动平台、网上作业管理和后台基础信息管理等功能,较为完善地完成了课程网站的需求。
本文以在线音乐网站为背景,简要介绍了系统开发背景以及系统开发平台的特点,详细地阐述了基于UML的面向对象的系统分析与建模过程,并对资源共享、互动平台、用户中心等模块的实现过程进行了详细的阐述。
关键词:MVC;Servlet;音乐分享;在线播放;歌曲下载
I
Abstract
Abstract
With the development of the society and the coming of the information age, the network applications have penetrated into every area, and people no longer satisfied with traditional ways to enjoy their favorite music. New site to play music online has occupied the mainstream market. Music Fun online music site is dedicated to sharing a nice voice like music friends, enabling users to enjoy the joy of music on the Internet at any time. Users can sign up to become a member, Login to the site can listen to and collection of favorite singles and albums, you can also vote for their favorite singer. This site in particular album purchase, members can order album on this site.
Through analyzing detailed the existing OS course website, we group sum up the functional requirements description of Course teaching website, which make use of UML modeling the OS Course Website. We focus on the design and implementation of Course Website. Using the Java EE and Sevrlet framework, the OS Course Website system was realized by MVC patterns as development thinking. The system have resource sharing, interactive platform, on-line job management, back office information management and other functions, which more perfect completes the course website requirements.
Based on the OS course website, the paper briefly introduces the system development backgrounds and system developing platform characteristics, describes the object-oriented system analysis by UML and modeling process in detail, and detailed describes the resource sharing, interactive platform and on-line job management module realization process, and so on.
Key words: MVC;Servlet;Resource sharing;Interactive platform;On-line job bxmanagement
II
目 录
目 录
第1章 绪论 .............................................................................................. 1
1.1 课题研究的背景和现状................................................................................. 1 1.2 课题研究的意义............................................................................................. 1 1.3 课题研究的内容............................................................................................. 2 1.4 本人的主要工作............................................................................................. 2 1.5 本文组织......................................................................................................... 2
第2章 系统开发及相关技术概述 .......................................................... 4
2.1 Java 技术介绍 ................................................................................................ 4 2.2 Java Web技术的介绍 ..................................................................................... 5 2.3 Java 的优势 .................................................................................................... 5 2.4 系统相关技术概述......................................................................................... 6
2.4.1 MVC模式 ............................................................................................................ 6 2.4.2 Servlet框架结构及工作原理 ............................................................................. 7 2.4.3 JSP技术 ............................................................................................................... 8 2.4.4 MySQL 数据库 ................................................................................................. 10
第3章 系统需求分析 ............................................................................ 11
3.1 系统目标....................................................................................................... 11 3.2 系统需求分析............................................................................................... 11
3.2.1 浏览搜索 ........................................................................................................... 12 3.2.2 用户中心 ........................................................................................................... 12 3.2.3 资源发布 ........................................................................................................... 13 3.2.4 在线播放 ........................................................................................................... 14
3.3 系统用例图分析........................................................................................... 15
3.3.1 系统后台管理部分用例设计 ........................................................................... 15 3.3.2 系统前台用例设计 ........................................................................................... 21
第4章 系统设计 .................................................................................... 25
4.1 系统的架构设计........................................................................................... 25
III
目 录
4.2 系统数据库设计........................................................................................... 25
4.2.1 数据库概念设计 ............................................................................................... 26 4.2.3 数据库逻辑结构的设计 ................................................................................... 26
4.3 系统类图的设计........................................................................................... 29
4.3.1 在线播放资源类图的设计 ............................................................................... 29
4.4 系统开发相关规范....................................................................................... 30
4.4.1 开发工具 ........................................................................................................... 30 4.4.2 编码规范 ........................................................................................................... 31
第5章 系统实现 .................................................................................... 32
5.1 系统首页....................................................................................................... 32 5.2 用户中心功能实现....................................................................................... 34
5.2.1个人中心 ............................................................................................................ 34 5.2.2好友管理 ............................................................................................................ 37 5.2.3购物车功能实现 ................................................................................................ 39
5.3后台管理功能实现........................................................................................ 40
第6章 总结与展望 ................................................................................ 46
6.1系统总结........................................................................................................ 46 6.2工作总结与展望............................................................................................ 46
参考文献 .................................................................................................. 48
IV
第1章 绪论
第1章 绪论
1.1 课题研究的背景和现状
热爱音乐的人都是热爱生活的人,爱音乐的人应该感谢这个丰富的时代,更应该感谢发达的资讯和传媒让我们可以聆听到如此丰富多彩的音乐;但是同时爱音乐的人往往也会痛恨这个时代,那些随时在耳边响起的彩铃音乐,街道美发厅小卖部传出来的网络音乐,电视里反复播放的榜单音乐和选秀音乐,无时不刻的轰击着我们挑剔的耳朵,发达的资讯渠道却成为爱生活的我们最大的噪音来源。而执着于对高品质音乐追求的年轻人,耳机常年挂在头上,攒钱买正版唱片、到处外出看演唱,但是网络上各种盗版和的音质的声音还是时常充斥着我们的耳朵并侵害着那些认真做音乐的独立创作人,但是这些清苦的歌者们仍然保持着对音乐宗教式的信仰和追求。对于歌者,这仿佛并不是一个好的时代。
听者和歌者,为什么巨大的市场需求却无法很好养活一个为我们带来生命升华的创作群体?
同时在这个科技信息技术共享时代,互联网对人们生活、学习和工作的影响越来越大。人们已经不再满足传统的购买磁带,CD等或是低品质的在线音乐播放网站,随着生活条件的改善,现在的渴望那些属于自己的专属的高水平音质音乐播放和下载工具,通过建立个人档案和专属播放列表,彰显自己与众不同的音乐品味。
我们有必要搭建这样一个平台为音乐爱好者和创作者提供一个方便的交流机会,促进一些小众的,独立音乐人的发展和进步。
目前网上音乐类网站[2]也有很多,品质却参差不齐,很多的音乐网站在功能的实现上,歌曲的音质,数量,类别,更新速度,访问速度,交互能力等方面存在诸多问题,大部分此类网站都没能方便的为用户提供更好的音乐体验。构建一个新型独立的音乐分享网站,可以在线共享音乐,可以互动交流,可以编辑自己的精选集和播放列表,并具有完善的后台,将必将会给用户提供更完美更专业的音质服务和音乐体验。
1.2 课题研究的意义
基于上述问题的日益突出,开发一个个性化,高品质的音乐网站显得尤为重要。用户通过该网站可以定制个人专属的音乐属性, “Music Fun音乐网站”致
1
第1章 绪论
力于提供更完善的用户体验,会员可以管理个人主页,好友管理,编辑自己的收听习惯等。
1.3 课题研究的内容
“Music Fun音乐网站”需要满足来自三方角色的需求,这三个角色分别是游客、会员和系统管理员。
1.游客的需求:浏览网站信息,在线试听和基本的搜索功能。
2.会员的需求:管理个人信息,修改密码,在线收听,收藏歌曲专辑,置顶歌曲专辑,搜索功能。
3.管理员的需求:对系统会员个人信息的维护;对歌曲维护,包括对歌手、风格、专辑信息进行管理和维护;对首页基本信息进行更新,包括对新闻、公告信息进行管理和维护;对系统的维护和备份等等。
1.4 本人的主要工作
本人在“Music Fun音乐网站”中主要完成网站的需求分析、建模、系统的规划和设计所需要实验的模块功能,分析解决关键技术问题,功能和性能的测试,以及论文的撰写,“Music Fun音乐网站”中本人完成的四个重要模块:
1.浏览搜索:用户可以按关键字进行网站内部的资源检索。
2.用户中心:个人中心,提供个人信息管理,好友管理,留言管理,收听管理。
3.在线播放:实现音乐的在线播放和共享。
4.资源共享:管理员对整个网站的运营维护、系统用户的增删改、新闻的发布和管理、公告的发布和管理、互动平台管理等等。
1.5 本文组织
第1章 绪论,简述了课题研究的背景和意义,通过分析当前高校课程教学网站管理的现状确立了课题研究的内容;
第2章 通过分析Java EE技术,确立系统开发平台,并对系统实现过程中用到的相关技术进行简单的介绍;
第3章 使用用例分析技术对系统的需求进行了详细的分析; 第4章 详细阐述了系统数据库设计全过程;
2
第1章 绪论
第5章 详细介绍了系统中共享资源、互动平台、网上作业管理和后台管理各模块功能的实现;
第6章 全文的总结,说明了在撰写论文过程中的心得和体会,并总结系统开发过程中的经验以及教训,展望未来的应用前景。
3
第2章 系统开发及相关技术概述
第2章 系统开发及相关技术概述
在对系统开发本身的前景、意义分析之后,接下来就是确定开发的目标和功能需求,最后就是确定开发工具以及运用相关的技术来开发系统。通过对自身学习的方向和认识,确定采用Java EE[1]作为系统的开发平台。
2.1 Java 技术介绍
Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台总称。多年的实践运用,Java已经凸显自己的魅力,被诸多编程人员所接受并采用。其跨平台、动态的Web、Internet计算被广泛接受并发展甚广。
Java[15]经过多年的发展和实践,目前已经拥有三个成熟的体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。
Java SE(Java Platform,Standard Edition)。Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。
Java EE[1](Java Platform,Enterprise Edition)。这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构[7](service-oriented architecture,SOA[17])和 Web 2.0 应用程序。
Java ME(Java Platform,Micro Edition)。这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态[9]下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。
4
第2章 系统开发及相关技术概述
2.2 Java Web技术的介绍
Java Web[2],是用Java技术来解决相关web互联网领域的技术总和。Web包括:web服务器和web客户端两部分。Java在客户端的应用有java applet,不过应用的很少,Java在服务器端的应用非常丰富,比如servlet、jsp[5]和第三方框架等等。Java技术对Web领域的发展注入了强大的动力。
Java Web框架有很多,虽然各不相同,但基本也都是遵循特定的流程路数来的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或Annotation实现配置,运用Java面向对象的特点,面向抽象实现请求和响应的流程,支持JSP、Freemarker等等视图。
目前比较流行的Java Web开发框架有:sturts2、spring、hibernate,简称ssh框架。struts就是比较经典的MVC框架;spring在大部分Java EE应用中都被用来管理其他组件,它与struts的结合应用是的开发过程变得更加高效和易于管理;hibernate是一个开源的ORM框架,它对JDBC进行了非常轻量级的对象封装,在struts应用中使用hibernate,程序员能够以多种方式更加灵活地实现数据持久化。
2.3 Java 的优势
Java是目前使用最为广泛的网络编程语言之一。具有简单,面向对象,与平台无关,解释型,多线程,动态等特点。Java语言所具有的优势大致有以下几点:
1.Java语言简单是指这门语言既易学又好用。例如,Java不再有指针的概念。 2.面向对象基于对象的编程更符合人的思维模式,使人们更容易编写程序。Java 语言与其它面向对象语言一样,引入了类的概念,类是用来创建对象的模板,它包含被创建的对象的状态描述和方法的定义。
3.跨平台是Java 语言最大的优势。Java的虚拟机成功地解决了这个问题,Java编写的程序可以在任何安装了 Java虚拟机 JVM 的计算机上正确的运行,Sun公司实现了自己的目标 “一次写成,处处运行”。
4.解释型。Java不针对特定的CPU芯片进行编译,而是把程序编译为称作字节码的一个“中间代码”。字节码是很接近机器码的文件,可以在提供了 Java 虚拟机 JVM 的任何系统上被解释执行。Java 被设计成为解释执行的程序, Java的字节码经过仔细设计,很容易便能使用JIT 即时编译方式 编译技术将字节码直接转化成高性能的本地机器码,Sun 公司在 Java 2发行版中提供了这样一个
5
第2章 系统开发及相关技术概述
字节码编译器—JIT(Just In Time),它是Java虚拟机的一部分。Java运行系统在提供JIT的同时仍具有平台独立性,因而“高效且跨平台”对Java来说不再矛盾。
5.多线程[2]。Java 的特点之一就是内置对多线程的支持。多线程允许同时完成多个任务。实际上多线程使人产生多个任务在同时执行的错觉,因为,目前的计算机的处理器在同一时刻只能执行一个线程,但处理器可以在不同的线程之间快速地切换,由于处理器速度非常快,远远超过了人接收信息的速度,所以给人的感觉好像多个任务在同时执行。
6.安全。当使用支持Java的浏览器时,可以放心地运行Java的小应用程序 Java Applet ,不必担心病毒的感染和恶意的企图,Java小应用程序将限制在 Java运行环境中,不允许它访问计算机的其它部分。
7.动态。Java 程序的基本组成单元就是类,有些类是自己编写的,有一些是从类库中引入的,而类又是运行时动态装载的,这就使得 Java 可以在分布环境中动态地维护程序及类库。
2.4 系统相关技术概述
系统开发时所采用的相关模式及开发技术有:MVC模式、Struts2、Jsp、Jquery、MySQL和css+div[4]等。下面作一些简要分析。
2.4.1 MVC模式
MVC[3]架构是“Model(模型)View(试图)Controller(控制)”三个单词的首字母缩写。MVC模型是一中交互界面的结构组织模型,它能够使软件的计算模型独立于界面的构成。MVC模型由Trygve Reenskaug[19]提出,最早使用在SmallTalk-80环境中,并应用于用户交互应用程序中。最smalltalk语言和java语言有很多相似的地方,比如都是面向对象语言。Microsoft的MFC基础类也遵循了MVC的思想。MVC设计模式更深层次的影响了软件开发人员的分工,也更加便于分工。
事件[13] (Event)导致控制器(Controller)改变模型(Model)或视图(View),或者同时改变两者。只要Controller发生了改变Model的数据或属性,所有依赖的视图都会自动更新。类似的,只要Controller改变了View,View会从Model中获取数据来刷新自己。
MVC[3]是一种架构,需要其他模式协作完成。Struts2只实现的是MVC中的View和Controller两个部分,Model部分需要开发者自己来实现,Struts2提供了
6
第2章 系统开发及相关技术概述
抽象类Action使开发者能将Model应用于Struts2[11]框架中。MVC模型的原理如图2.1所示:
图2.1 MVC模型原理图
MVC架构是一个复杂的架构,其实现也显得非常复杂。但是,我们已经总结出了很多可靠的设计模式,多种设计模式结合在一起使用会使MVC架构的实现变得相对简单易行。Views可以看作一棵树,显然可以用Composite Pattern来实现。Views和Models之间的关系可以用Observer Pattern体现。Controller控制Views的显示,可以用Strategy Pattern实现。Model通常是一个调停者,可采用Mediator Pattern来实现。
MVC三个部分在Java EE架构中都有自己的位置。MVC与Java EE架构的对应关系是:View处于Web Tier[13]或是Client Tier,通常是JSP/Servlet[7],即页面显示部分;Controller也处于Web Tier,通常用Struts2来实现,即页面显示的逻辑部分实现;Model处于Middle Tier,通常用服务端[14]的spring或者EJB实现,即业务逻辑部分的实现。
2.4.2 Servlet框架结构及工作原理
servlet是在服务器上运行的小程序。这个词是在Java applet[11]的环境中创造的,Java applet是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(CGI(Common Gateway Interface)[16])应用程序完成的。然而,在服
7
第2章 系统开发及相关技术概述
务器上运行Java,这种程序可使用Java编程语言实现。在通信量大的服务器上,Java servlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。
Servet的工作流程如图2.2所示:
图2.2 Servlet的工作流程图[18]
1.Servlet 工作流程
用户通过浏览器向Web服务器发送请求 2.服务器定位用户请求资源
静态资源:*.html 读取文件内容发送到客户端
动态资源:服务器加载web.xml根据Servlet名字,定位Servlet 加载类(WEB-INF/classes)和类库(WEB-INF/lib/*.jar) 3.通过反射创建Servlet实例
Servlet ser=(Servlet)(Class.forName(“servlet类名”)).newInstance();
我们写的Servlet一定要实现Servlet接口或继承Servlet的实现类。
ser.service(request,response);
2.4.3 JSP技术
JSP(Java Server Pages) [4]是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux
8
第2章 系统开发及相关技术概述
下运行,也能在其他操作系统上运行。
JSP技术使用Java编程语言编写类XML的tags和scriptlets[7],来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP网站基本结构如图2.3所示:
图2.3 Jsp 网站结构示意图
JSP与Java Servlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet 是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、
9
第2章 系统开发及相关技术概述
Bea公司等,所以JSP迅速成为商业应用的服务器端语言。
JSP可用一种简单易懂的等式表示为:HTML+Java=JSP。
2.4.4 MySQL 数据库
MySQL[5]是一个小型关系数据库管理系统,开发者为瑞典MySQL公司。在2008年1月16号被SUN公司收购,而2009年SUN又被MySQL收购。目前MySQL被广泛地应用在Internet上的中小型网站中。
与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
正是基于MySQL其自身是开放源码软件和成本低,经济而受到相当多用户的青睐,并且凭借其在存储过程的优越性能使得其实用性也远超其他数据库模式,占据很大优势。
10
第3章 系统需求分析
第3章 系统需求分析
3.1 系统目标
Music Fun在线音乐网站致力于为喜欢音乐的朋友们分享好听的声音,使用户能够在网上随时享受到音乐的乐趣。用户可以通过注册成为会员,会员登录到网站后,可以试听和收藏喜欢的单曲和专辑,也可以为自己喜欢的歌手投票。本网站特别提供专辑购买的功能,会员可以在本网站订购专辑。
实现目标要求:
1.系统易操作:系统界面友好,操作简单。
2.需求功能完善:系统具备完善的音乐网站功能外,提供资源分享下载,共享优秀资源,提供很好的交流平台等。
3.系统易维护:系统除了有良好完善的功能外,还应该提给系统管理员和后期维护人员很好的操作方式,便于对系统的管理。
3.2 系统需求分析
通过对系统进行详细的分析与研究,最终得出了音乐分享网站的功能需求,系统主要由五个模块构成,系统结构如下图3.1所示:
浏览搜索 用户中心 资源发布 图3.1 Music Fun网站功能结构图 在线播放 购买专辑 Music Fun音乐分享网站 11
第3章 系统需求分析
3.2.1 浏览搜索
浏览搜索模块,为游客提供了解本网站的渠道,通过浏览游客可以获取最新的相关音乐讯息试听排行榜上的歌曲,搜索自己感兴趣的艺人和专辑单曲等。浏览搜索模块由三个子模块构成,其结构如下图3.2所示:
浏览搜索
新在资 闻线源 浏试搜 览 听 索
图3.2浏览搜索结构图
1.查看资源
用户还有网站游客均可以使用该子模块,通过该模块,用户可以查看系统提供的最新音乐新闻演出等。 2.资源搜索
系统用户均可以通过该子模块进行搜索资源,搜索为模糊搜索,即通过输入关键字,实施不完全匹配,从而获得一定量的信息。 3.在线试听
游客和系统用户均可以通过该子模块在线试听最新排行榜的歌曲,获取歌曲和专辑艺人的相关信息。
3.2.2 用户中心
用户中心模块,目的是为了系统用户提供更好的资源服务,游客经过注册登陆后成为本网站的用户,在这里可以编辑自己的个人详细信息,方便好友的查找,管理自己的播放列表和喜欢的歌手,发表个人的心情和博文以便交流分享,全方位打造专属自己的个人音乐空间。好友管理系统注册用户提供一个便捷的交流平台,可以通过此平台交流,生活上、学习上、情感上、社会上等等,可以浏览好友空间并留言个人中心模块由四个子模块构成,其结构如下图3.3所示:
12
第3章 系统需求分析
1.编辑信息
用户中心 编辑信息 收听管理 空间管理 好友管理 图3.3用户中心结构图
系统用户均可以通过本模块,添加修改自己的详细信息(昵称、密码修改、联系方式、兴趣爱好等),主要目的是提供一个展示自己的平台。
2.收听管理
登录系统用户均可以针对感兴趣歌曲,专辑,艺人进行置顶,提高他们在排行榜中的位置,此模块很好地表现了个人中心的目标和作用,系统会根据用户的投票进行排名并在首页公布,同时也记录用户自己专属的收听风格记录。
3.空间管理
登录系统用户均可以通过此模块,发表博文,留言。分享自己喜欢的音乐,并留下感悟心得。
4.好友管理
可以添加关注好友,可以取消关注,浏览好友空间并留言,可以一块分享周围等等。
3.2.3 资源发布
资源发布主要是系统管理员通过后台进行新闻,风格,歌手,专辑,单曲等各项信息的上传和发布。此模块致力为网站提供更新鲜更全面更丰富及时的资讯。资源发布模块由五个子模块构成,其结构如下图3.4所示:
13
第3章 系统需求分析
图3.4 资源发布结构图
1.新闻发布
管理员通过此子模块进行新闻的发布以便在首页中显示,和编辑已经发布的新闻,删除已经失效的新闻。
2.风格发布
管理员通过此子模块可以发布风格种类并编辑已发布的风格,在后续的信息添加时都会从属于一个或多个风格。
3.歌手发布
管理员添加歌手的详细信息,每个歌手的标签可以从属于一个或多个不同的风格,同时也可以管理已经添加的歌手或删除。
4.专辑发布
管理员通过此子模块发布歌手的专辑,专辑必须从属于某个已经发布的歌手,同时作为添加的标签,一张专辑可以属于一个或多个不同的风格种类。
5.单曲发布
管理员通过此子模块发布相关单曲,并对发布的单曲进行编辑或删除。一个单曲必须从属于某张已经发布的专辑,一首单曲可以属于一个或多个不同的风格种类。
3.2.4 在线播放
在线播放是该网站的核心功能,实现的个人的歌曲收听记录,收藏喜欢的专辑和歌手,能够按照风格查找单曲和相关艺人。在线播放模块由三个子模块构成,
14
第3章 系统需求分析
其结构如下图3.5所示:
歌 曲 播 放
1.单曲播放
在线播放 收听记录 编辑播放 图3.5 在线播放结构图
用户可以选择自己喜欢的单曲进行播放。 2.收听记录播放
用户可以根据系统记录的收听记录和自己的标记来快速播放喜欢的歌曲。 3.专辑播放
用户可以直接播放喜欢的专辑。
3.3 系统用例图分析
3.3.1 系统后台管理部分用例设计
系统后台操作是面向系统管理员对系统网站维护而设计的。
管理员可以通过本后台管理系统进行如下工作:对系统用户的管理、新闻的管理、网站公告的管理、风格进行管理、歌手,专辑,单曲管理。具体用例图如图3.6所示:
15
第3章 系统需求分析
管理新闻管理歌手管理用户管理员管理专辑管理风格管理单曲
图3.6 系统后台用例图
对上述用例说明具体如下: 1.管理风格
具体管理风格流程如下表3.1所示:
表3.1管理风格流程
用例名称 角色 前提条件 主事件流 分支事件流 管理风格 管理员 管理员必须完成登录 1.打开管理风格模块 2.添加风格(S1),也可以删除删除(S2) 添加风格 打开查看风格管理模块 显示添加页面 添加所有风格 删除风格 打开删除风格模块 显示风格列表 查找要删除的风格 删除该风格 删除成功后会出现提示框删除成功 异常事件流 管理员登录后台时,键入非法的标识符,指明错误 2.管理歌手
管理歌手的流程如下表3.2所示:
16
第3章 系统需求分析
表3.2管理歌手流程 用例名称 角色 前提条件 主事件流 管理歌手 管理员 管理员必须完成登录 打开管理歌手模块 查看歌手(S1),也可以修改歌手(S2),删除歌手(S3)以及添加歌手(S4) 更新歌手排行榜(S5) 分支事件流 S1:查看歌手 打开查看歌手模块 显示歌手列表 查看所有歌手的详细信息 S2:修改歌手 打开修改歌手模块 显示歌手列表 查找要修改的歌手 修改该歌手的具体信息 修改成功后会出现提示框修改成功 S3:删除歌手 打开删除歌手模块 显示歌手列表 查找要删除的歌手 删除该歌手 删除成功后会出现提示框删除成功 S4:添加歌手 打开添加歌手模块 显示歌手列表 添加歌手信息 添加成功后会出现提示框添加成功 S5:更新歌手排行榜 打开更新歌手排行榜模块 显示未更新的歌手排行榜 更新排行榜(数据库进行操作查找出按投票数进行排列) 更新成功后会有提示框更新成功 异常事件流 管理员登录后台时,键入非法的标识符,指明错误 3.管理专辑
管理专辑流程具体如下表3.3所示:
17
第3章 系统需求分析
表3.3管理专辑流程 用例名称 角色 前提条件 主事件流 管理专辑 管理员 管理员必须完成登录 打开管理专辑模块 查看专辑(S1),也可以修改专辑(S2),删除专辑(S3)以及添加专辑(S4) 更新最新专辑(S5) 分支事件流 S1:查看专辑 打开查看专辑模块 显示专辑列表 查看所有专辑的详细信息 S2:修改专辑 打开修改专辑模块 显示专辑列表 查找要修改的专辑 修改该专辑的具体信息 修改成功后会出现提示框修改成功 S3:删除专辑 打开删除专辑模块 显示专辑列表 查找要删除的专辑 删除该专辑 删除成功后会出现提示框删除成功 S4:添加专辑: 打开添加专辑模块 显示专辑列表 添加专辑信息 添加成功后会出现提示框添加成功 S5:更新最新专辑 打开更新最新专辑模块 显示未更新的最新专辑 更新专辑 异常事件流 管理员登录后台时,键入非法的标识符,指明错误 4.管理单曲
管理歌手的列表如下表3.4所示。
表3.4管理单曲流程
用例名称 角色 管理单曲 管理员 18
第3章 系统需求分析
前提条件 主事件流 管理员必须完成登录 打开管理单曲模块 查看单曲(S1),也可以修改单曲(S2),删除单曲(S3)以及添加单曲(S4) 更新单曲排行榜(S5) 更新最新单曲(S6) 分支事件流 S1:查看单曲 打开查看单曲模块 显示单曲列表 查看所有单曲的详细信息 S2:修改单曲 打开修改单曲模块 显示单曲列表 查找要修改的单曲 修改该单曲的具体信息 修改成功后会出现提示框修改成功 S3:删除单曲 打开删除单曲模块 显示单曲列表 查找要删除的单曲 删除该单曲 删除成功后会出现提示框删除成功 S4:添加单曲 打开添加单曲模块 显示单曲列表 添加单曲信息 添加成功后会出现提示框添加成功 S5:更新单曲排行榜 打开更新单曲排行榜 模块 显示未更新的单曲排行榜 更新排行榜(数据库进行操作查找出按点击数进行排列) S6:更新最新单曲 打开更新最新单曲模块 显示未更新的最新单曲 更新最新单曲 更新成功后会又提示框更新成功 异常事件流 管理员登录后台时,键入非法的标识符,指19
第3章 系统需求分析
明错误
5.管理会员
管理员进行会员管理的功能如下表3.5所示:
表3.5管理会员流程 用例名称 角色 前提条件 主事件流 管理会员 管理员 管理员必须完成登录 1.打开管理会员模块 2.查看会员(S1),也可以开启会员(S2)或屏蔽会员(S3) 3.向会员发送个性化消息(S4) 分支事件流 S1:查看会员 打开查看会员模块 显示会员列表 S2: 开启会员 打开查看会员模块 显示会员列表 查找要开启的会员 开启该会员 S3: 屏蔽会员 打开查看会员模块 显示会员列表 查找要屏蔽的会员 删除该会员 异常事件流 用户账号被管理员屏蔽或删除,无法设置,提示重新激活账号 6.管理新闻
管理新闻流程如下表3.6所示:
表3.6管理会员流程 用例名称 角色 前提条件 主事件流 管理新闻 管理员 管理员必须完成登录 打开管理专辑模块 查看新闻(S1),也可以修改新闻(S2),删除新闻(S3)以及添加新闻(S4) 更新最新新闻(S5) 分支事件流 S1:查看新闻 打开查看新闻模块 显示新闻列表 查看所有新闻的详细信息 S2:修改新闻 打开修改新闻模块 显示新闻列表 20
第3章 系统需求分析
查找要修改的新闻 修改该新闻的具体信息 修改成功后会出现提示框修改成功 S3:删除新闻 打开删除新闻模块 显示新闻列表 查找要删除的新闻 删除该新闻 删除成功后会出现提示框删除成功 S4:添加新闻: 打开添加新闻模块 显示新闻列表 添加新闻信息 添加成功后会出现提示框添加成功 S5:更新最新新闻 打开更新最新新闻模块 显示未更新的最新新闻 更新新闻 异常事件流 管理员登录后台时,键入非法的标识符,指明错误 3.3.2 系统前台用例设计
系统前台操作主要是针对游客和用户需求设计的。
用户可以通过系统进行一系列的操作:查看新闻、查看公告、在线收听、个人中心管理、互动平台的交流等等。具体如图3.7所示:
21
第3章 系统需求分析
登录注册浏览搜索游客浏览用户用户中心在线播放购买专辑
图3.7前台用例图
对于未注册用户的游客主要包括以下2种功能:注册(Register)和查询(ExecuteQuery) 。
对上述用例说明具体如下: 1.注册
游客可以在网站进行注册活动,以便享受更多的权利,具体如下表
3.7所示:
表3.7注册会员流程 用例名称 角色 前提条件 主事件流 异常事件流 2.试听、收藏单曲
注册 未注册的用户 无 用户访问网站的首页 进入用户注册页面 输入注册信息点击注册按钮(E1) 验证用户信息 验证通过保存信息 跳转到登陆成功提示页面 异常事件流:E1: 键入非法的标识符,指明错误 返回首页 注册用户可以进行单曲的在线播放和收藏功能,如下表3.8所示:
22
第3章 系统需求分析
表3.8试听,收藏单曲流程 用例名称 角色 前提条件 主事件流 分支事件流S1 分支事件流S2 分支事件流S3 异常事件流 3.试听、收藏、购买专辑
试听、收藏单曲 会员 用户必须完成登录 对歌曲进行试听(S1) 对歌曲进行下载(S2) 对歌曲进行收藏(S3) 在对应歌曲的试听栏点击试听按钮 歌曲就会加入到播放列表中进行播放 在对应歌曲的下载栏点击下载按钮 歌曲就会加入到下载列表中进行下载 在对应歌曲的收藏栏点击收藏按钮 点击后会出现提示框收藏成功 用户账号被管理员屏蔽或删除,无法设置,提示重新激活账号 注册用户可以进行专辑的在线播放,收藏和购买功能,如下表3.9所示:
表3.9试听,收藏,购买专辑流程 用例名称 角色 前提条件 主事件流 分支事件流S1 分支事件流S2 分支事件流S3 异常事件流 试听、收藏、购买专辑 会员 用户必须完成登录 查找专辑 点击专辑图片链接 跳转到专辑所在页面 对该专辑进行试听(S1) 对该专辑进行购买(S2) 对该专辑进行收藏(S3) 点击试听按钮 专辑的所有的单曲就会加入到播放列表中进行播放 在对应歌曲的下载栏点击下载按钮 歌曲就会加入到下载列表中进行下载 在对应歌曲的收藏栏点击收藏按钮 点击后会出现提示框收藏成功 用户账号被管理员屏蔽或删除,无法设置,提示重新激活账号 4.置顶
用户可以对自己所喜爱的歌曲进行置顶,用来改变其在排行榜中的排名,具体用例分析如下表3.10所示:
23
第3章 系统需求分析
表3.10试听,收藏,购买专辑流程 用例名称 角色 前提条件 主事件流 异常事件流 5.管理个人信息
置顶 会员 用户必须完成登录 查找所要投票的歌手 在歌手对应的投票栏进行投票 投票完成后会提示投票成功 用户账号被管理员屏蔽或删除,无法设置,提示重新激活账号 会员可以在登录后的个人中心管理自己的个人信息,如下表3.11所示:
表3.11管理个人信息流程 用例名称 角色 前提条件 主事件流 分支事件流S1 分支事件流S2 分支事件流S3 异常事件流 管理个人信息 会员 用户必须完成登录 当用户登录该网站(S1) 点击自己的用户名 跳转到自己的个人管理中心 对用户资料进行查看/修改(S1) 对密码的进行修改(S2) 可以打开收藏夹(S3) 查看自己的资料 对要进行修改的地方输入修改的内容 输入完成后点击保存按钮 会显示保存成功 输入要修改密码的相关信息 输入完成后点击确定按钮 完成后会显示修改成功 查看收藏夹中的歌曲和专辑 对想要删除的专辑或歌曲进行查找 查找成功后在相应栏点击删除按钮 完成后会出现提示框删除成功 用户账号被管理员屏蔽或删除,无法设置,提示重新激活账号 24
第4章 系统设计
第4章 系统设计
系统需求分析完成后,进入系统设计阶段。整个系统开发过程中,系统分析设计是重中之重,还有系统完成前的测试。有了详细和全面的系统设计,将会使后面的编码阶段更顺利的进行并提高编码速度。
4.1 系统的架构设计
整个系统架构采用MVC模式的思想,主要采用Servlet技术开发,前端用JSP或HTML显示。开发工具为:Myeclipse 6.0+Tomcat 6.0+MySQL 5.1
在线网站的设计采用了MVC三层模式进行设计的。系统运行后,用户通过浏览器访问系统,看到的只能是视图层,在视图层上,用户进行相应操作。视图层由若干JSP页面和HTML组成。控制器的核心是Struts.xml配置文件,它控制着页面的跳转,是系统的控制中心。用户发出请求,通过xml进行控制跳转,进入action类,通过ActionServlet找到指定的Action,并通过调用ActionBean进行业务逻辑方法的处理,返回ActionForward,最后ActionServlet根据返回的信息将请求再次发给JSP页面。网站系统框架结构图见图4.1:
图4.1系统框架结构图
4.2 系统数据库设计
本系统的E-R图,如下图4.2所示.该系统的实体有:歌手,歌手类型,歌曲,专辑,用户,信息,留言。
25
第4章 系统设计
图4.2 系统E-R图
4.2.1 数据库概念设计
数据库设计是系统实现的最重要的一步,良好的数据模型将会使用户的需求清楚、准确的描述出来。概念数据模型是一种面向问题的数据模型,是按照用户最直观的需求对数据建立的模型。
数据字典[3]是关于数据的信息的集合,作为分析阶段的工具有着重要的用途。数据字典是开发数据库的第一步,因此本文将相关数据以表格的形式列举出来如下所示:用户表(用户ID,用户名,用户密码,真实姓名,性别,联系地址,联系电话,邮箱号)
4.2.3 数据库逻辑结构的设计
每个系统都有不同功能模块,每个模块都涉及到一定量的数据表,数据表之间又有着一定的联系。E-R图的设计就是直观地表现出个实体类数据表之间的联系和各种动作,系统的功能几乎都要涉及到数据库中的不同的表,而数据库中的表的设计和表之间关系的设计,是数据库设计的重点。根据对系统的数据分析和各模块E-R图的设计,我们按照系统涉及到的实体进行数据库设计。
26
第4章 系统设计
Music Fun网站数据库名为“Music”,本数据库包括以下表:
(1)用户表Customer,该表主要用于储存用户资料信息,用于购买专辑时便于卖家联系,如真实姓名,联系地址等,如表4.1所示:
表4.1 用户表Customer 字段名 userID userName userSex userAddress userPhone userEmail userPost 注释 用户ID 用户名 性别 数据类型 长度 int varchar char 20 20 20 100 50 约束 是否为空 Not null null Not null null null Not null null 缺省值 外键UserPassed.userID Not null userRealname 真实姓名 varchar 联系地址 varchar 邮箱号 邮编 varchar varchar 联系电话 nvarchar 20 (2)歌曲收藏表SongCollection,该表主要用于储存用户喜欢的歌曲列表,如表4.2所示:
表4.2 歌曲收藏表Songcolletion 字段名 注释 数据类长度 型 int int 约束 主键 外键(Song.songID) 是否为空 缺省值 Not null Not null songCollectionID 歌曲收藏ID int userID songID 用户ID 歌曲ID 外键(UserPassed.userID) Not null (3)专辑收藏表AlbumCollection,该表主要用于储存用户喜欢的歌曲列表,如表4.3所示:
表4.3专辑收藏表AlbumCollection 字段名 注释 数据类长度 型 int int 约束 主键 外键(Album.albumID) 是否为空 缺省值 Not null Not null albumCollectionID 专辑收藏ID int userID songID 用户ID 专辑ID 外键(UserPassed.userID) Not null (4)订单详细表OrderDetails,该表主要用于储存订单信息,如4.4所示:
表4.4订单详细表OrderDetails 字段名 orderID userID orderTime 注释 订单ID 用户ID 数据类型 长度 约束 int int 100 money 主键 是否为空 缺省值 Not null Not null Not null 外键(UserPassed.userID) Not null 生成订单时间 varchar orderTotalCost 交易金额 (5)信息表Messages,该表主要用于储存管理员向会员发送的个性化消息。如4.5表所示:
表4.5消息表Messages
字段名
注释 数据类型 长度 约束 27
是否为空 缺省值 第4章 系统设计
messageID userID messageTitle messageTime 消息ID 用户ID 消息题目 int int varchar varchar 50 500 100 主键 Not null Not null Not null Not null 外键(UserPassed.userID) Not null messageContent 消息内容 消息发送时间 varchar (6)歌曲表Song,该表主要用于储存歌曲的资料,如歌曲名,歌曲的描述等,如4.6表所示:
表4.6 歌曲表Song 字段名 songID songName songURL songDescription songVote singerID albumID 注释 歌曲ID 歌曲名 歌曲URL 歌曲描述 歌手ID 专辑ID 数据类型 长度 约束 int varchar varchar text int int 50 300 主键 是否为空 缺省值 Not null Not null Not null null null 0 歌曲点击数 int 外键(Singer.singerID) Not null 外键(Album.albumID) Not null (7)歌手类型表SingerType,该表主要用于储存歌手分类,如4.7表所示:
表4.7 歌手类型表SingerType 字段名 singerTypeID singerTypeName 注释 歌手类型ID 歌手类型名 数据类型 int varchar 50 长度 约束 主键 是否为空 Not null Not null 缺省值 (8)歌手资料表SingerData,该表主要用于储存歌手详细资料信息,如4.8表所示:
表4.8 歌手资料表SingetData
字段名 singerID singerName singerSex singerTypeID singerVote singerImage 注释 歌手ID 歌手名 歌手性别 数据类型 长度 约束 int varchar char 20 20 主键 是否为空 缺省值 Not null Not null Not null 0 歌手类型ID int 歌手票数 int 300 text 外键Not null (SingerType.singerTypeID) 表4.9 专辑资料表Album null Not null null 歌手相片URL varchar singerDescription 歌手描述 (9)专辑资料表Album,该表主要用于储存专辑详细资料信息,如4-9表所示:
字段名 albumID albumName albumImage albumTime albumMoney albumDescription
注释 专辑ID 专辑名 专辑图片URL 专辑发行时间 销售价格 专辑介绍 数据类型 int varchar varchar varchar money text 28
长度 50 300 100 约束 主键 是否为空 Not null Not null Not null Not null Not null null 缺省值 null 第4章 系统设计
albumAmount 专辑数量 int Not null (10)好友表friend,该表主要用于储存好友关系资料信息,如4.10表所示:
表4.10 专辑资料表friend
字段名 ID FriendID UserID isagree iscare 注释 关系ID 好友ID 用户ID 是否为好友 是否添加为好友 数据类型 长度 int Int Int Smallint Smallint 约束 是否为空 主键 Not null 缺省值 (11)好友留言表liuyan 主要用来存储好友留言内容,如下表4.11所示:
表4. 11好友留言表liuyan 字段名 liuyanID UserId Content 注释 留言ID 用户ID 留言内容 数据类型 Int Int Varchar 4000 长度 约束 主键 是否为空 Not null Not null 缺省值 (12)收听记录listen 主要用来存储用户的收听记录,如下表4.12所示:
表4.12收听记录表listen 字段名 listenID UserID songID 注释 收听记录ID 用户ID 歌曲ID 数据类型 Int Int Int 长度 约束 主键 是否为空 Not null Not null 缺省值 4.3 系统类图的设计
类图是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等,显示出类、接口以及它们之间的静态结构和关系,它用于描述系统的结构化设计。
可以把类看作理论上的对象,类创建的所有对象都有相同的成员:属性、方法和事件。但是,每个对象都像一个独立的实体一样动作。类图的作用就是以图表的形式表现出不同实体不同对象所做的动作。
4.3.1 在线播放资源类图的设计
此模块是本系统的核心模块主要针对的游客和用户,可以通过本模块进行在线收听,游客一样可以通过本模块收听歌曲。所涉及到的实体数据表有:Customer、Listen,Singer,Album,OrederData 。该模块的类图如下图4.3所示:
29
第4章 系统设计
图4.3收听歌曲类类图
4.4 系统开发相关规范
4.4.1 开发工具
1.Myeclipse6.0:是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。是系统开发主要编码工具。
2.Mysql 5.1:系统采用MySQL数据库。
3.Dreamweaver8:Dreamweaver是美国MACROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器,它是第一套针对专业网页设计师特别发展的视觉化网页开发工具,利用它可以轻而易举地制作出跨越平台限制和跨越浏览器限制的充满动感的网页。系统静态网页的设计大多采用此软件进行编辑和设计。
4.PhotoshopCS2:一款强大的图像编辑软件,是Adobe公司旗下最为出名的图像处理软件之一,集图像扫描、编辑修改、图像制作、广告创意,图像输入与
30
第4章 系统设计
输出于一体的图形图像处理软件,深受广大平面设计人员和电脑美术爱好者的喜爱。系统首页采用此工具进行首页色调和布局的设计。
5.Navicat 8 for MySQL:MySQL数据库自身没有图形界面,是通过命令的形式进行操作;此工具即MySQL的图形界面,将会更直观地了解数据库的结构和表与表间的关系。
4.4.2 编码规范
1.资源规范
Struts2.1.8:系统采用Struts框架进行开发,系统采用的Struts标准Struts2.1.8。 Mysql-connector-java-3.1.12-bin.jar:系统数据库采用MySQL,此jar包即是连接数据库的驱动。 2.编码规范
编码是软件系统开发过程中最重要的部分之一,编码就是系统实现。在系统实现过程中,不同的系统大小代码量不同,需求也不同,在保证系统开发进度和质量的前提下,就必须进行开发人员的分工。分工意味着不同组员负责不同模块的实现,在负责不同模块的同时,保证项目进度和质量,必定需要一定的编码规范来约束和规范系统的编码。良好的编码规范会使项目的进展更顺利,并且能保证系统的质量和具有很好的后期维护性。 本系统的开发,代码结构如下图4.4所示:
图4.4 系统代码结构
1、com.jxsd.music.Dao,负责操作数据库
2、com. jxsd.music.DB,数据库信息配置,比如连接数据库的类。 3、com.jxsd.filter,页面过滤器 4、com.jxsd.music.Model,持久层类 5、com. jxsd.music.service,数据服务层 6、com.jxsd.music.Servlet,系统控制层
31
第5章 系统实现
第5章 系统实现
5.1 系统首页
首页的展示设计,在一定程度上决定着系统的成功与否,外观是给用户的第一感受。在“Music Fun”网站UI设计过程中,经作者分析研究认为,作为高品质休闲娱乐网站,主题风格应该大气时尚,并且进入系统后应该一目了然地清楚该系统具有哪些主要功能。因此决定该系统采用橘色和黑色为主色调,以photoshop为平台设计首页风格和布局,然后将图片基于切线进行切片,存储为web格式,从而系统首页成型,最终首页UI如图5.1所示。
图5.1 登陆后首页展示页面
登录部分的代码实现:
public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List 32 第5章 系统实现 List List int pageNo=Integer.parseInt(request.getParameter(\"pageNo\")); int pageSize=Integer.parseInt(request.getParameter(\"pageSize\")); int totalPageNo,num; try { SingerDataList=singerDataService.getTop(); SingerTypeList=singerTypeService.getPageModel(); songList=singerSongService.getTop(); newSongList=singerSongService.getNewSong(); albumList=albumService.getNewAlbum(); num=messageService.getPageModel().size(); totalPageNo=num/pageSize+(((num%pageSize)==0)?0:1); messagesList=messageService.getPageModel(pageNo, pageSize); request.setAttribute(\"SingerDataList\", SingerDataList); request.setAttribute(\"SingerTypeList\", SingerTypeList); request.setAttribute(\"songList\", songList); request.setAttribute(\"newSongList\", newSongList); request.setAttribute(\"albumList\", albumList); request.setAttribute(\"currentPageNo\", pageNo); request.setAttribute(\"totalPageNo\", totalPageNo); request.setAttribute(\"messagesList\", messagesList); request.getRequestDispatcher(\"/index.jsp\").forward(request, response); } catch (Exception e) { e.printStackTrace(); } } 33 第5章 系统实现 5.2 用户中心功能实现 5.2.1个人中心 图5.2登陆后进入个人中心的图示 转到个人中心后,自动获取最新的用户页面信心,由下列函数实现: public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action=request.getParameter(\"action\"); if(action==null) action=\"\"; System.out.println(action); if(\"updateInfo\".equals(action)) this.updateInfo(request, response); if(\"updatePassword\".equals(action)) this.updatePassword(request, response); if(\"findAllForAddFriend\".equals(action)) this.findAllForAddFriend(request, response); } public void updatePassword(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 34 第5章 系统实现 User user=new User(); String userPasswd=request.getParameter(\"userPasswd\"); int userID=Integer.parseInt(request.getParameter(\"userID\")); user.setUserPasswd(userPasswd); user.setUserID(userID); try { userService.updateUserPasswd(user); request.getSession().setAttribute(\"userPasswd\",user.getUserPasswd()); request.getRequestDispatcher(\"/update_code.jsp\").forward(request, response); }catch(Exception e){ System.out.println(e.getMessage()); } } 1. 收听记录:用户登陆后,对于已收听的歌曲或正在收听的歌曲进行“顶”操作,可以改变其在网站排行榜的排名。 2. 收藏单曲或专辑:用户可以对自己喜爱的专辑和单曲进行标记,建立自己的音乐风格,方面以后的使用。 3. 编辑信息:用户进入个人首页后,在首页左上方区域,点击按钮,即可进行编辑个人详细资料或更改密码,效果如图5.3。 图5.3个人信息管理页面 35 第5章 系统实现 该模块主要代码如下: public void updateInfo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { User user=(User)request.getSession().getAttribute(\"user\"); int userID=user.getUserID(); String userName=request.getParameter(\"userName\").trim(); String userRealname=request.getParameter(\"userRealname\").trim(); String userAddress=request.getParameter(\"userAddress\").trim(); String userPhone=request.getParameter(\"userPhone\").trim(); String userImage=request.getParameter(\"userImageFile\").trim(); if(userImage==null||\"\".equals(userImage)){ userImage=request.getParameter(\"userImage\").trim(); } String userSex=request.getParameter(\"userSex\").trim(); String userEmail=request.getParameter(\"userEmail\").trim(); user.setUserEmail(userEmail); user.setUserID(userID); user.setUserImage(userImage); user.setUserSex(userSex); user.setUserRealname(userRealname); user.setUserAddress(userAddress); user.setUserPhone(userPhone); user.setUserName(userName); try { userService.update(user); request.getSession().setAttribute(\"user\ request.getSession().setAttribute(\"userName\将登陆的用户信息存储 request.getSession().setAttribute(\"userPasswd\ request.getRequestDispatcher(\"/myInfo.jsp\").forward(request, response); }catch(Exception e){ System.out.println(e.getMessage()); } } 36 第5章 系统实现 5.2.2好友管理 用户登陆后在这里可以管理自己的好友,关注和取消关注自己的好友,审核对方发来的好友请求,或发送自己的好友申请。 在数据库的设计上专门建立一张好友表friend表,用来存储好友关系。与此同时,另外一张留言表,将保留用户的留言信息,用来和好友之间进行互动。具体如下图5.4所示: 图5.4 好友管理页面 public void findAllByUserIDAndCare(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Friend f=new Friend(); int userID=Integer.parseInt(request.getParameter(\"userID\")); System.out.println(\"userID=\"+userID); List list=null; try { list=friendService.findAllByUserIDAndCare(userID); request.setAttribute(\"list\", list); request.getRequestDispatcher(\"/findAllByUserIDAndCare.jsp\").forward(request, response); } catch (Exception e) { e.printStackTrace(); } } public void findAllByFriendIDAndCare(HttpServletRequest request, 37 第5章 系统实现 HttpServletResponse response) throws ServletException, IOException { Friend f=new Friend(); int friendID=Integer.parseInt(request.getParameter(\"userID\")); System.out.println(\"friendID=\"+friendID); List list=null; try { list=friendService.findAllByFriendIDAndCare(friendID); request.setAttribute(\"list\", list); request.getRequestDispatcher(\"/findAllByFriendIDAndCare.jsp\").forward(request, response); } catch (Exception e) { e.printStackTrace(); } } public void findAllFriendRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Friend f=new Friend(); int friendID=Integer.parseInt(request.getParameter(\"userID\")); System.out.println(\"friendID=\"+friendID); List list=null; try { list=friendService.findAllAddFriendRequest(friendID); request.setAttribute(\"list\", list); request.getRequestDispatcher(\"/findAllFriendRequest.jsp\").forward(request, response); } catch (Exception e) { e.printStackTrace(); } } public void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int ID=Integer.parseInt(request.getParameter(\"ID\")); int userID=Integer.parseInt(request.getParameter(\"userID\")); int friendID=Integer.parseInt(request.getParameter(\"friendID\")); Friend f=new Friend(); try{ 38 第5章 系统实现 f.setID(ID); f.setUserID(userID); f.setFriendID(friendID); friendService.delete(f); }catch(Exception e1){ System.out.println(e1.getMessage()); }finally{ request.getRequestDispatcher(\"FriendServlet?action=findAll&pageSize=5&pageNo=1\").forward(request, response); } } } 5.2.3购物车功能实现 用户选中喜欢的专辑后,可以将其添加到购物车,通过付款并购买。系统会将订单提交给后台管理员进行处理购买页面如下图5.5所示: 图5.5 购物车页面 public void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int userID=Integer.parseInt(request.getParameter(\"userID\")); int albumID=Integer.parseInt(request.getParameter(\"albumID\")); int singerID=Integer.parseInt(request.getParameter(\"singerID\")); java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat (\"yyyy-MM-dd HH:mm:ss\"); 39 第5章 系统实现 java.util.Date date1 = new java.util.Date(); String orderTime=formatter.format(date1); OrderDetails o=new OrderDetails(); o.setOrderTime(orderTime); o.setUserID(userID); o.setAlbumID(albumID); try { orderDetailsService.save(o); request.getRequestDispatcher(\"/OrderServlet?action=findAll&userID=\"+userID).forward(request, response); } catch (Exception e) { System.out.println(e.getMessage()); } } public void findAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int userID=Integer.parseInt(request.getParameter(\"userID\")); List list=null; try { list=orderDetailsService.getPageModel(userID); request.setAttribute(\"list\", list); request.getRequestDispatcher(\"/viewAllBuyAlbum.jsp\").forward(request, response); } catch (Exception e) { e.printStackTrace(); } } 5.3后台管理功能实现 一个系统的完整,取决于两个方面,首先是前台展示,其次是后台管理维护。强有力的后台管理,将会使系统的运行更为流畅。本系统也设计了较为完善的后台管理系统。后台的实现是针对系统管理员,一般情况下后台管理对界面显示要求并不高,唯一需要设计人员考虑的是,尽量使管理员操作简单,能在进入后台模块后一目了然地知道通过本系统所能完成工作。 后台给人的感觉首先需要的是简洁明了,于是后台的设计采用frame框架设 40 第5章 系统实现 计UI界面,以上下分的布局,左侧菜单右侧显示操作内容。具体色调暗蓝色,给管理员以严肃稳重的感觉。效果如图5.6所示: 图5.6 后台管理页面 1.会员管理:管理员登入系统过后,进入会员管理即可查看已经注册的会员 信息,同时可以管理新闻,一个完善的音乐网站,将必须存在对最新的相关新闻的转载和分享,能及时将社会上最新动态分享给系统用户。本系统设置歌手新闻,演唱会音乐节最新动态,主要工作是对新闻的发布和修改。效果如图5.7 图5.7 新闻发布页面 protected void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Messages m=new Messages(); String messageTitle=request.getParameter(\"messageTitle\"); String messageContent=request.getParameter(\"messageContent\"); String messageImage=request.getParameter(\"messageImage\"); 41 第5章 系统实现 java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat (\"yyyy-MM-dd HH:mm:ss\"); java.util.Date date1 = new java.util.Date(); String publishTime=formatter.format(date1); m.setMessageTitle(messageTitle); m.setMessageContent(messageContent); m.setMessageImage(messageImage); m.setPublishTime(publishTime); try{ messagesService.save(m); request.setAttribute(\"messages\", m); request.getRequestDispatcher(\"MessagesServlet?action=findAll&pageSize=5&pageNo=1\").forward(request, response); }catch(Exception e) { System.out.println(e.getMessage()); } } 2.歌手风格管理:管理员通过本链接系统的风格类别,风格将作为一个标签添加在歌手,专辑和单曲的信息选择上。完成作业列表中出现如图5.8;教师可以通过本链接对曾经布置过的作业进行查看。 3.歌手管理:歌手信息添加时可以直接勾选已经添加的风格,为复选框。歌手添加页面如图5.8: 图5.8 添加歌手的页面 public void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { SingerData sd=new SingerData(); String singerImage=request.getParameter(\"singerImage\"); 42 第5章 系统实现 String singerName=request.getParameter(\"singerName\"); String singerSex=request.getParameter(\"singerSex\"); String singerDescription=request.getParameter(\"singerDescription\"); String[] singerTypeNameList=request.getParameterValues(\"singerTypeName\"); String singerTypeName=\"\"; for(int i=0;i }catch(Exception e){ System.out.println(e.getMessage()); } } 1.单曲管理:管理员可以上传相关的音乐文件,作为网站资源,如下图5.9所示: 图5.9歌曲上传的页面 43 第5章 系统实现 public void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Song s=new Song(); String songURL=request.getParameter(\"songURL\"); String songName=request.getParameter(\"songName\"); String songTime=request.getParameter(\"songTime\"); int albumID=Integer.parseInt(request.getParameter(\"albumID\")); System.out.println(albumID); String songDescription=request.getParameter(\"songDescription\"); //先将歌曲上传到服务器 //设置文件的路径 String savePath=\"music/\"; songURL = savePath+ songURL.substring(songURL.lastIndexOf(\"\\\\\")+1, songURL.length()); System.out.println(\"songURL=\"+songURL); // 以上传文件存放路径和原文件名建立一个输出流 /*FileOutputStream fos = new FileOutputStream( \"D:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/Music/music\" + songURL); // 以上传文件建立一个输入流 FileInputStream fis = new FileInputStream(request.getParameter(\"file\")); // 将上传文件写入到输出流所对应的文件中 byte[] buffer = new byte[1024]; int len = 0; while ((len = fis.read(buffer)) > 0) { fos.write(buffer, 0, len); } */ s.setSongURL(songURL); s.setSongName(songName); s.setSongTime(songTime); s.setAlbumID(albumID); s.setSongDescription(songDescription); try { songService.save(s); request.getSession().setAttribute(\"song\",s); request.setAttribute(\"list\",songService.getPageModel()); request.getRequestDispatcher(\"SongServlet?action=findAll&pageSize=5&pageNo 44 第5章 系统实现 =1\").forward(request, response); }catch(Exception e){ System.out.println(e.getMessage()); } } 1. 订单处理: 管理员处理的订单页面如下图5.10所示; 图5.10 订单处理展示页面 45 第6章 总结与展望 第6章 总结与展望 6.1系统总结 互联网的快速发展,信息时代的全面铺盖,各种各样娱乐音乐网站层出不穷,良莠不齐,但高品质的个性化音乐分享网站少之又少,用户的需求不能得到最大的满足。 本文根据实际教学需要,利用网络环境,通过对音乐网站的研究和分析,结合软件工程方法,利用Java EE平台设计了一个基于Servlet的B/S架构“Music Fun网站”系统。 在系统开发过程中,更深层次地发现需求的重要性。在边开发边学习地状态下,对java web的开发有了更新的认识,也能更熟练地运用java web相关的技术。 在整个设计过程中认识到自己有多方面的不足: 1.在编码过程中还是不能完全根据需求来进行编码,直接反应到需求的分析不完善和不足。 2.对页面显示的一些特效的运用,只能单一地从网络资源中得到,未能通过学习JavaScript、Ajax等等语言自我编写,良好的举一反三,今后需要学习的东西还很多。 3.对网站前端显示美工的部分具有严重缺陷,对审美的把我对布局的分配等等都严重影响到网站开发出来后的效果,即使达到了之前需求的功能,但让人第一感觉是不怎么适用。 4.对技术知识的欠缺,导致编码过程中尤其吃力,在以后不管是继续学习还是工作,都得深入学习,不能知其表不就其理。 6.2工作总结与展望 Music Fun在线音乐网站目前来说,只是完成了系统所需要的基本功能。在系统操作方面、系统安全方面、系统管理方面都有待提高。实现基本功能是一方面,系统的完成最重要的就是操作简单方便、数据安全可靠、可移植性强。限于开发者本人技术水平以及其他一些原因,系统的实现和论文都会存在一定量的甚至严重的不足,有待进一步改进和完善。 就目前个人对系统的总结来说,至少还应在以下方面进一步开展工作。 46 第6章 总结与展望 1.就于用户操作来说,开发者不能以一个开发者的思维去设计功能的操作过程,应该从用户的角度出发。 2.就于目前音乐网站的发展,用户对于音乐品质的追求来看,对系统的所采录的音乐资源需要更好的把关。 3.系统的运行与维护,首先取决于系统的分析设计和程序员的代码质量,其次取决于良好的后台管理,优质的后台管理将会使一个系统的运行更流畅。 47 参考文献 参考文献 [1] 洪丹丹.基于J2EE轻量级框架的安全Web架构研究与应用[D].成都:电子科技大学,2009. [2] 刘中兵.开发者突击:Java Web主流框架整合开发:J2EE+Struts+Hibernate[M].北京:电子工业出版社,2008年 [3] 前沿科技、曾顺等编著.精通CSS+DIV网页样式与布局[M] .北京:人民邮电出版社,2007年 [4] 郭珍、王国辉等编著.JSP程序设计教程[M].北京:人民邮电出版社,2008年 [5] 蒋军强. MySQL数据库中乱码成因及解决办法探究[J]. 科技信息(科学教研),2007,(33) :389-390. [6] 王珊、萨师煊编著.数据库系统概论[M].北京:高等教育出版社,2004年 [7] 托卡斯编著.JavaScript高级程序设计[M].北京:人民邮电出版社,2006年 [8] 孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2004年 [9] 吴炜煜.面向对象分析设计与编程[M].北京:清华大学出版社,2007年 [10]单东林,张晓菲等编著.锋利的jQuery [M] .北京:人民邮电出版社,2009年 [11]李刚.Struts2权威指南—基于WebWork核心的MVC开发[M].北京:电子工业出版社,2007 [13] 张海藩.软件工程导论[M].北京:清华大学出版社,2002年 [14] Anna C. McFadden, George E. Marsh II, Barrie Jo Price. Computer Testing in Education. Computers in the Schools, pp. 0738-0569, 2002 [15] 李发致. Java 面向对象程序设计教程 [M].北京:清华大学出版社,2004年 [16] John R.Cameron. JSP and JSD:The Jackson approach to software development [M]. IEEE Computer Society Press,1989 [17] Bruce Eckel. Thinking in Java[M]. Beijing: China Machine Press,2004 [18] Waler Savitch. Java: an introduction to problem solving & programming[M].Beijing: Posts & Telecom press,2006 [19] Vicent Cholvi1, Antonio Fernández, Ernesto Jiménez, Pilar Manzano and Michel Raynal. A Methodological Construction of an Efficient Sequentially Consistent Distributed Shared Memory[J]. The Computer Journal Volume53, Issue9 , pp.1523-1534, 2010 48 致 谢 49 因篇幅问题不能全部显示,请点此查看更多更全内容