第一范文网 - 专业文章范例文档资料分享平台

个性化音乐推荐系统设计与实现

来源:用户分享 时间:2025/5/23 14:33:46 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

简单的SimpleTagSupport类来重写doTag(),这样就使得开发人员在自定义标签的时候更加快捷。

JSP标签库中的自定义标签API的组织结构如图2-2所示。 图2-2 JSP自定义标签的API体系

本系统项目中在处理实体对象数据原型的管理逻辑时,由于分页功能的使用率非常高,因而在本系统我们使用了JSP 标准技术中的自定义标签库功能,定义了标签,标签极大的减少了JSP前台页面中的重复代码,为代码维护和界面显示带来了极大的便利。

2.1.5 Filter过滤器

Servlet API[6]代表着开源和开放的意思。2000年,三星公司通过发布Servlet 2.3规范,Filter过滤器的功能得到添加,接下来的2.4、2.5版本又使其各项功能得了进一步的改进。

在平时上网时,我们很少的会遇到这样一种情况,用户发的帖子中贴图显现出来的图文与本来所想的样子有很大的出入,出现这种情况最主要的原因就是贴子中的图片的来源网站用了“防盗链”的功能。而绝大多数的网站,在处理权限控制时(如在淘宝网购物必须具有已登录的账户),对于一些重要的操作过程都设置了审核这一环节(如检测到当前用户没有有效的登录状态,则拦截后续操作并转到提示页面)。这一类常用操作都是可以利用Filter过滤器来完成的。

在这一项目中,我们想到有的用户会通过浏览器地址栏暴力探索等非常规方式登录还没有完成的JSP页面造成逻辑错误,从而恶性的利用Filter过滤器拦截,让用户不能登录访问目的网页。

这归根到底是由于本项目所采用的方法是:页面只能用作后台间接反馈给用户的调用出来的结果,用户只能访问后台功能的各模块。

所谓监听器,其实和Java AWT/Swing[7]编程中的Listener是差不多的,一旦触发某一个事件,用户所指定的程序逻辑就会被立即执行,实现预设的目的。程序开发人员只要知道触发了一个事件所调用指定的Listener方法就行,而无需了解事件(Event)和监听器(Listener)是相互作用的过程。因此,只要把用户自己的业务逻辑编入所设定的方法程序中便可。

监听器有监听对象属性变化、监听对象的创建与销毁、监听Session内的对象、监听Session/Request/ServletContext等对象等这几种种类。

该项目中的使用Listener监听器做到了“单态登录”,如果处于登录状态,而这一帐户又在此时于异地登录,先前的登录便会被注销。

只要将业务逻辑编入到HttpSessionAttributeListener接口的attributeAdded()方法中便可实现这一功能。

2.2 MVC模式

Model-View-Controller可缩写为MVC[8]。Java EE中较为广泛的使用了这种分层的思想,主要特点就是提供对流程进行管理的用于控制导向的Controller,同时把业务逻辑和前台表现层隔离开来。

MVC思想最早是在1982年被提出来的,现在它作为差不多全部主流面向对像Web开发技术框架的标准,把业务逻辑和显示层进行分离,不但使得开发效率有所提升,而且具有部署快、可维护性高、耦合性低、重用性高等诸多优点。

如果不使用第三方框加,采用的又是原生的Java EE技术,我们一般就会这样的判断:POJO、DAO、Service等内容为Model层,JSP为View层,Servlet为Controller层,请参见图2-3所示。

图2-3 MVC分层思想

一般想思想意识中的POJO(也称为Bean、VO或原型)不局限于Model层,也不属于其他任何一层。比如在JSP页面当中的EL表达式一般情况下能通过“${bean.attribute}”的形式调用到一个POJO内部的东西。当然这种调用是建立在JSP API基础之上的,绝非与人为设定的Model层产生相互作用。POJO作为数据传递的媒介,将表数据以POJO的形式通过Hibernate等框架到达DAO层,DAO层再把POJO原型对象与Service的交换。在Struts 2.x框架中的ModelDriven接口中有些时候POJO也会作为Controller层与前台交互的媒介。

因此我们会错误的认为POJO与其他层是平等的,其实不然,把它归纳到Model层中是非常不科学的,它只是MVC分层中的一种通讯工具。但事事都无绝对性,这要看开发的人如何去理解和应用。

2.3 Spring框架

Spring框架是一功能强大的整合工具,一直是多框架的保护神,Spring是由Rod Johnson于2003年创建并兴起,它为项目的解耦与新需求的扩展带来了很多方便,设计的初衷是为了应对企业应用的复杂性,积极支持Java EE,弥补了其臃肿、低效等不足之处。当然对传统的Java EE框架也是一种挑点。

尽管Struts框架[8]充分的体现了MVC思想,但也带来局限性,Action与DAO层、Service层过于紧密的耦合,这将对项目的需要变化转型产生消极的影响。这种情况下我们可以使用Spring间接的协调,使用Spring的IoC机制来配置管理并维护这种耦合关系。只有这样,Struts的Action和DAO与Service才能不互相依赖,而是更好的互相配合工作了。

一样的道理,Hibernate也可以通过整合到Spring中来获得同样的良好效果。 虽然Spring框架中提供MVC模块,但暂时并没有使用它们,而使用的是Struts 2框架,这主要是因为该项目中大量的采用了Struts 2标签库内容。

2.4 AJAX技术

AJAX指的是“异步的JavaScript包括XML”(Asynchronous JavaScript and XML)。即在不需要等待服务器将结果返回就可以继续下面的业务逻辑,就是所说的“同步方式”。而传统的“同步方式”是客户端发出了一个请求,只有在服务器响应后,方可继续下一步的业务逻辑。

比如我们平时在一个网站注册一个用户名,用户名输入后直接显示用户名是不是被占用,而不需要刷新页面或者点击一控件。之所以这样,最主要的就是因为onkeyup或onblur等HTML事件触发了AJAX的回调函数,在JavaScript作用下,直接根据服务器的结果信息改变HTML代码内容,而不必刷新页面。

XMLHttpRequest对象是AJAX技术最核心的地方。常见的浏览器都支持AJAX技术,同时在不影响客户端当前的操作的情况下把数据通过一种简单的方式传递到服务器端。AJAX对数据的传递一般采用高效的JSON,但也习惯使用XML格式数据。

3 系统分析与设计 3.1 系统简介

本系统的主要功有,首先是对系统中用户、播放列表、歌曲、歌手等相关数据进行整合并存入数据库中,在需要时进行查询,并且还支持查看各类原型信息的查看、修改、删除等。通过本系统,用户可以很方便的了解到歌手的信息,以及专辑的信息,并且这些信息还可以保存在用的账户中,以便用户以后可以快速的查看。

3.2 系统框架设计

Struts 1.x原本是Apache中一个项目,但是现在已经成为java web开发中一个非常流行的网络框架,如果开发者想要基于Servlet和JSP创建一个可扩展的应用,Struts 1.x是一个不错的选择。而在后来的版本Struts 2.x中,是以WebWork为核心,从而使得那些与Servlet API相关的可避免的依赖关系不出现在核心业务控制层,不仅如此,Struts 2.x还提供了更方便的Validator、OGNL等工具,并且还抛弃了不繁琐的ActionForm。另外值得注意的一点是,一般软件的后续版本与之前本大同小异,没有什么根本的变化,但是在Struts框架中却不是这样,Struts 2.x和Struts 1.x具有完全不同核心,而它们具有相同的名字完全是因为Struts 1.x使用的广泛性。

本项目便是基于Struts 2.x搭建,并且在设计中使用了MVC模型,项目运行的逻辑如下:

(1)用户请求指定的Action;

(2)Action根据参数等条件进行导向;

(3)Action调用指定的业务逻辑完成后台操作并准备前台数据; (4)根据struts.xml配置文件将带有结果数据的前台页面反馈给浏览器。 数据持久化框架(Object-Relative Database-Mapping, ORM)一个在很多场景下对数据的访问都要求极其严格的框架,与Apache的iBatis提供的半自动化方式相比,Hibernate提供一种全自动化的数据持久化方案。在Hibernate中,

搜索更多关于: 个性化音乐推荐系统设计与实现 的文档
个性化音乐推荐系统设计与实现.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2swo93ox0147ty70k2cl_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top