




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【摘要】 随着经济和科技的高速发展,人们的生活水平也迅速的提高,伴随着是人们的生活方式也在潜移默化的改变着,人们的生活节奏在不断的加快,越来越多的时间花在工作和人际上,而相对的自己娱乐时间越来越少。对于这种改变,在线视频点播系统悄然而生,并且迅速被人们所接受和喜爱。 本课题主要采用的设计语言是java,所设计的在线视频点播系统最终达成包括用户模块、视频文件上传、注册、登录等功能和管理员模块、视频审核,发布、用户管理等功能。【关键词】 视频点播;java;html;SQL server 2005;1绪论1.1 背景及意义伴随着中国经济的快速发展,人们的生活节奏加快,生活方式简单快速化,人们的娱乐休闲时间越来越少,在传统的电视节目中,人们完全是被动的,节目提供者在什么时间段播放什么样的节目,人们就得按照节目提供者给得时间段去看相应的节目。这已经满足不了人们的需求,对于现在的生活节奏,人们已经不可能为了看一个节目而预先安排自己的时间。人们都希望能够随时的看自己想要看的节目。在线视频点播系统就是为了满足现在人们的需求。这种信息服务方式符合现在人们对信息资源的更深层次的要求。2相关技术和开发环境2.1 系统架构本系统主要采用MVC架构的设计模式。这种模式主要是把一个应用分成三部分设计的方式,使用这种模式会让程序设计更加的简单,也让耦合程度减至最小。视图(v)在本系统中也就是页面,用于展示数据和传递数据,没有处理在这里发生作为视图来讲。模型(M)表示企业提供的一些处理数据的逻辑。模型主要用来处理用户从界面传来的数据,它能够处理多个视图提供过的数据,并且能够被重复使用,提高了性能,减少了代码的重复性,有利于后期的维护。控制器(C)可看作第三方,主要是调用视图和模型的作用。它在这个过程中担任的只是指路的作用,看是要选择哪个视图和模型。2.2关键技术2.2.1 JDBC JDBC是为访问数据库而出现的一种JAVA技术,不同的数据库都有其对应的JDBC,不过他们的原理大都是一致的。它的作用就是为了让程序员更容易的去访问数据库和对数据进行增删改查的操作。它包含两部分:第一部分是提供给程序员使用的API,大部分API位于Java.sql包中,扩展的部分API位于Javax.sql包中。程序员只要熟悉JDBC API,就可以编写程序访问数据库、操作数据库的记录,而且操作不同的数据库代码几乎相同。当然对于不同的数据库我们需要用的不同数据库驱动包来完成对数据库的连接。2.2.2 Jquery Jquery是对JavaScript的封装,它简化了JavaScript语法具有很好的平台兼容性,因此极大的方便了开发人员操作DOM、更多的制作网页动画的函数、使用Ajax无刷新技术使得网页制作更加的简单功能效果更加的强大。 Jquery具有的优势:轻量级、强大的选择器、出色的DOM操作的封装、可靠的事件处理机制、完善的Ajax、出色的浏览器兼容性、开源等。12.2.3 HTML5 video标签 在html5中,增加了video标签用于在网页中嵌入视频播放功能。通过标签定义在HTML中嵌入的视频的相关属性设置。video 元素支持三种视频格式如图2.2.3: 图2.2.3视频格式2 标签的属性如图2.2.3(1) 图2.2.3(1)标签属性22.3开发环境及平台2.3.1 Eclipse Eclipse是一种免费的开发平台(IDE),现在主要用于开发JAVA 程序的工具,当然它也可以用于开发其他语言程序如C/C+、COBOL等,Eclipse之所以可以做到这样归功于它是开源的并具有众多的插件。Eclipse已经超越了开发环境的概念,它的目标是做成一个通用的平台,让尽量多的软件做为插件集成在上面,成为未来的集成的桌面环境。3Eclipse 环境搭建:JDK的安装在系统变量中添加以下环境变量: a. JAVA_HOME值为:安装JDK的目录; b.CLASSPATH值为:.;%JAVA_HOME%lib; c.PATH值为:%JAVA_HOME%bin;%JAVA_HOME%jrebin2.3.2 MyEclipseMyEclipse是EclipseIDE的扩展,利用它我们能极大的提高工作效率在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面。它通常是用于开发JAVA的工作平台是一种企业级应用。MyEclipse是功能丰富的JavaEE集成开发环境,包括了完备的编码,调试、测试和发布功能,完整支持HTML,Struts,jsp,css,JavaScript,Spring,SQL,Hibernate。4 在本课题设计中,将使用MyEclipse进行开发。2.3.3 Tomcat服务器Web服务器也有很多种,在本系统中只是简单的Web应用,所以选用Tomcat作为服务平台。它占用资源少,稳定且免费并且是独立运行的,有很好的扩展性和安全性,但它对J2EE的EJB程序无法运行,如果你要运行J2EE的EJB程序可使用Weblogic,WebSphere服务器。只要你把做好的项目布置到上面,就能够通过浏览器访问你想要访问的地址网页。2.3.4 SQL Server 2005 SQL Server是一个数据库平台,它的为了解决大数据量时容易出现的数据混乱,容易丢失,不会管理,不好操作等开发的一种软件,它的出现极大的方便了那些需要对大数据量的进行操作的用户。SQL Server 2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。5本系统采用SQL Server 2005版本用于数据的存储、处理和保护数据。3在线视频点播系统分析与设计3.1需求分析3.1.1系统目标 开发出一个功能实用,优秀的网站,为用户提供各种视频信息及交互平台,使用户能够在快节奏的生活环境中,在有条件的情况下能够随时的观看自己想要观看的视频,并且也能够成为视频的提供者,分享自己觉得好的视频。3.1.2可行性分析 随着人们生活节奏的加快,快餐式的文化越来越突出,人们不能够随心的安排自己的时间观看自己想要的视频信息,在线视频点播系统,为人们提供了自主选择的功能,让用户能够随时的观看自己想要的视频,在线视频点播系统,也越来越受人们的喜爱。它符合现在人们快餐式的生活方式。随着视频网站的不断完善,功能的不断增加,用户数也不断的增加,所以在线视频点播系统将有很好的发展空间。3.2在线视频点播系统概要设计系统的概要设计主要对系统的总体功能设计,模块的划分,系统数据库如何设计进行研究。3.2.1模块划分本系统主要分为两部分:1. 视频点播前端(用户)前端主要功能:1.用户选择视频。2.观看视频。3.上传视频。2. 视频点播后端(管理员)后端主要功能:1.用户管理。2.视频管理。3.2.2 功能模块的设计 用户权限和管理员权限,具体包括:1.用户:注册,登录,修改个人资料,上传视频,播放,评论,评分,搜索2.管理员:登录,用户管理,视频管理。3.2.3系统功能层次模块图 图3.2.3系统功能层次模块图3.3用户模块描述3.3.1用户注册模块设计校验功能有:1.验证必填项是否有输入。2.输入的格式是否正确。3.两次密码是否一样,用户名是否可用。注册成功的条件:1.所有必填项都有填。2.相应信息的输入格式符合条件。3.两次密码一样。3.3.2用户登录模块校验功能有:1.验证必填项是否有输入。登录成功的条件:1.用户名已经注册。2.用户名和密码正确。3.输入的验证码与随机产生的验证码一致。 图3.3.1用户注册模块流程图 图3.3.2用户登录模块流程图3.3.3个人中心校验功能有:1.验证必填项是否有输入。信息修改成功的条件:1.用户名无法修改。2. 相应信息的输入格式符合条件3. 所有必填项都有填。 3.3.4视频上传校验功能有:1.验证必填项是否有输入。2.输入的格式是否正确。视频上传成功的条件:1.视频的格式是.MP4 。2.图片格式是.Jpg。 3.视频的大小是否符合上传的大小。 图3.3.3个人中心流程图 图3.3.4视频上传流程图3.3.5视频点播 用户登录完后,跳转到首页,可进行视频的选择和点播。用户选择视频后如果视频需要积分,则用户需扣掉相应的积分,方能观看,如果积分不够则不能观看,用户需要购买积分后再点播方能观看。 图3.3.5视频点播流程图3.3.6评论模块 用户在观看视频的时候可以对该视频进行评论,发表对视频的看法,评论时用户必须是登录状态,评论字数不能大于500字符。图3.3.6视频评论流程图3.3.7视频评分模块 用户可对当前观看的视频进行评分,用户评分是需是登录状态,否则无法进行评分,最高分5分,最低分0分。3.3.8搜索模块 该模块的功能:1.快速搜索定位影片。3.3.9找回密码模块 该模块的作用是:帮助用户找回忘记的密码。 图3.3.7视频评分流程图 图3.3.8搜索模块流程图 图3.3.9找回密码模块流程图3.4管理员功能模块描述3.4.1登录模块校验功能有:1.验证必填项是否有输入。登录成功的条件:1.用户名和密码正确。2.输入的验证码与随机产生的验证码一致。图3.4.1管理员登录模块流程图3.4.2用户管理模块 用户管理模块作用:1.对用户进行删除。2.查看用户的评论。3.查看用户上传的视频。 图3.4.2用户管理模块流程图3.4.3视频管理模块 该模块管理员看查看审核通过的视频和未审核的视频并且管理员需对用户上传的视频进行审核,看是否有不良的信息,审核通过后方能发布视频,前端才能观看到该视频,否则管理员不给以发布且删除视频。4数据库设计4.1系统逻辑结构设计用户表:用户编号,用户名,密码,昵称,性别,手机号,用户积分,头像地址,真实姓名,身份证,邮箱,密保问题,密保答案,状态,权限,备注视频表:视频编号,用户编号,板块编号,视频标题,昵称,视频地址,视频封面,视频简介,视频积分,上传时间,播放次数,评分,视频状态,备注评论表:评论编号,视频编号,用户编号,评论内容,昵称,评论时间播放列表:播放编号,视频编号,用户编号,播放时间板块表:板块编号,板块名,所属主题,备注4.2表设计4.2.1表名的解释Users用户表Video视频表Comment评论表Playlist播放列表Board板块表4.2.2用户表解析4.2.3视频表解析4.2.4评论表解析4.3.5播放列表解析4.2.6板块表解析5界面设计5.1前台界面设计5.1.1主界面设计5.1.2前台登录界面设计5.1.3个人中心界面设计5.1.4用户注册界面设计5.1.5视频上传界面设计5.1.6视频播放界面设计5.1.7视频评论界面设计5.2后台界面设计5.2.1登录界面设计5.2.2管理员界面设计6关键代码6.1视频上传代码public class VideoUploadingServlet extends HttpServlet private static final long serialVersionUID = 1L;private ServletConfig config;public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException request.setCharacterEncoding(utf-8);response.setCharacterEncoding(utf-8);response.setContentType(text/html);PrintWriter out = response.getWriter();HttpSession session = request.getSession();User user = (User) session.getAttribute(user);int vScore = 0;java.util.Date date = new java.util.Date();SimpleDateFormat dateFormat = new SimpleDateFormat(yyyy-MM-dd);String path = this.getServletContext().getRealPath();/ 得到path=D:apache-tomcat-6.0.29webappsVideoOnlinepath = path + upload/; / 生成文件夹File f = new File(path);f.mkdirs(); / 生成文件夹uploadString relativePath = upload/; / 没有文件名的相对路径,上传时用SmartUpload su = new SmartUpload();su.initialize(getServletConfig(), request, response);try su.upload();/ 加载上传的文件 catch (Exception e1) out.println(alert(你传的视频太大了,重新上传!);location.replace(./uploadVideo.jsp);try String vCover = , vURL = ;String vTitle = su.getRequest().getParameter(vTitle);String vPresentation = su.getRequest().getParameter(vPresentation);String bTheme = su.getRequest().getParameter(bTheme);String bName = su.getRequest().getParameter(bName);String txtvScore = su.getRequest().getParameter(vScore);if (txtvScore != null & !txtvScore.equals() try vScore = Integer.parseInt(txtvScore); catch (Exception e) out.println(alert(只允许输入整数,系统将进行int强转);try vScore = (int) Double.parseDouble(txtvScore); catch (Exception e1) out.println(alert(Sorry!转换失败,请正确输入!);location.replace(./uploadVideo.jsp);return;if (vScore 0) out.println(alert(Sorry!请输入一个大于零的整数!);location.replace(./uploadVideo.jsp);return;String SQL = select * from Board where bTheme= + bTheme+ and bName= + bName + ;List listbID = BoardDao.selectBoardBySQL(SQL);if (listbID.size() = 0) out.println(alert(未填写模块主题!);location.replace(./uploadVideo.jsp); return;int bID = listbID.get(0).getbID();for (int i = 0; i su.getFiles().getCount(); i+) / 循环输出加载文件com.jspsmart.upload.File file = su.getFiles().getFile(i);if (file.getFieldName().equals(vURL) / 判断文件是哪个文本框传过来的if (!file.getFileExt().equals(mp4) / 判断文件格式out.println(alert(只允许添加mp4格式的视频!);location.replace(./uploadVideo.jsp);return;String ext = file.getFileExt();/ 获取文件格式 String saveVurlUrl = ;/ 保存地址 Stringfilename=String.valueOf(Calendar.getInstance().getTimeInMillis();/ 获取当前毫秒数saveVurlUrl = relativePath + filename + bID + . + ext; / 保存路径String sql = select * from Video where vURL=upload/+ saveVurlUrl + ;/ System.out.println(sql= + sql);List list = VideoDao.selectVideoBySQL(sql);/ System.out.println(list= + list.size();if (list.size() 0) out.println(alert(您上传的视频已存在,请重新上传!);location.replace(./uploadVideo.jsp);return;/ System.out.println(saveVurlUrl=+saveVurlUrl);file.saveAs(saveVurlUrl, su.SAVE_VIRTUAL); / 文件另存为vURL = saveVurlUrl;/ 有文件名的相对路径,播放时用,要保存到VIDEO表中的VURL字段 else if (file.getFieldName().equals(vCover) if (!file.getFileExt().equals(jpg) out.println(alert(只允许添加jpg格式的图片!);location.replace(./uploadVideo.jsp);return;String ext = file.getFileExt();/ 获取文件格式String savevCoverUrl = ;/ 保存地址Stringfilename=String.valueOf(Calendar.getInstance().getTimeInMillis();/ 获取当前毫秒数savevCoverUrl = relativePath + filename + bID + . + ext; / 保存路径 file.saveAs(savevCoverUrl, su.SAVE_VIRTUAL); / 图片另存为vCover = savevCoverUrl;/ 有文件名的相对路径,播放时用,要保存到VIDEO表中的VURL字段 System.out.println(vScore= + vScore);Video video = new Video(user.getuID(), bID, vTitle, user.getNickname(), vURL, vCover, vPresentation, vScore, Date.valueOf(dateFormat.format(date), 0, 0, 1, null);if (VideoDao.addVideo(video) out.println(alert(视频上传成功!!);location.replace(./index.jsp); else out.println(alert(视频上传失败!!);location.replace(./uploadVideo.jsp); catch (SmartUploadException e) e.printStackTrace();public final ServletConfig getServletConfig() return config;public final void init(ServletConfig servletconfig) config = servletconfig;6.2视频点播代码public class VideoVODServlet extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException request.setCharacterEncoding(utf-8); response.setCharacterEncoding(utf-8);response.setContentType(text/html);PrintWriter out = response.getWriter();String uID= request.getParameter(uID).trim();String vID= request.getParameter(vID).trim();String vScore= request.getParameter(vScore).trim();Video video= VideoDao.selectVideoByID(Integer.parseInt(vID); if(!uID.equals()&uID!=null&!vScore.equals()&vScore!=null&!vID.equals()&vID!=null) User user=UserDao.selectUserByID(Integer.parseInt(uID); if(user=null) out.print(非法用户); return; if(Integer.parseInt(uID)=video.getuID() out.print(您是视频上传者,可以免费观看!); return; int uscore= user.getuScore();String sql=select * from Playlist where vID=+Integer.parseInt(vID)+ and uID=+Integer.parseInt(uID); List list= PlaylistDao.selectPlaylistBySQL(sql); if( list.size()0) video.setpCount(video.getpCount()+1); VideoDao.updateVideo(video);Playlist playlist=new Playlist(Integer.parseInt(vID), Integer.parseInt(uID),Date.valueOf(new SimpleDateFormat(yyyy-MM-dd).format(new java.util.Date(); PlaylistDao.addPlaylist(playlist); out.print(您播放过此影片,可免费观看!); return; if(uscore=Integer.parseInt(vScore) user.setuScore(uscore-Integer.parseInt(vScore);/扣除观看视频用户积分 UserDao.updateUser(user); /添加视频观看历史记录Playlist playlist=new Playlist(Integer.parseInt(vID), Integer.parseInt(uID),Date.valueOf(new SimpleDateFormat(yyyy-MM-dd).format(new java.util.Date();/给视频上传者加积分(只加视频积分的一半,另一半给网站管理员) User videoUser=UserDao.selectUserByID(video.getuID();int videoUserScore= (int)(Integer.parseInt(vScore)/2);/视频上传者获得的积分int videoAdminScore=Integer.parseInt(vScore)-videoUserScore;/网站管理员获得的积分 videoUser.setuScore(videoUser.getuScore()+videoUserScore); UserDao.updateUser(videoUser); /给网站管理员加积分 List adminUserList=UserDao.selectUserBySQL(select * from Users where permission=2); if(adminUserList.size()0) for (User u:adminUserList) u.setuScore(u.getuScore()+videoAdminScore);UserDao.updateUser(u); if(PlaylistDao.addPlaylist(playlist) video.setpCo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化妆品知识培训学习课件
- 亮点6年级下册数学试卷
- 期末赢家九下数学试卷
- 审计岗位面试题目及答案
- 南京试卷数学试卷
- 桥梁气候因素分析与应对方案
- 机房监理基础知识培训课件
- 高职机械类专业基础课思政元素设计与实施
- 眉山中学入学考数学试卷
- 2025年小学老师笔试题目及答案
- 邯郸驾考c1科目四仿真考试
- 动环L1试题题库(494道)
- 分期付款购车计算器(带公式自动计算)
- 《自身免疫性溶血性贫血诊疗指南(2023年版)》解读
- 兴和园区地灾评估报告
- 合伙人解除关系承诺书
- 安全生产基本知识(乡镇办人员)培训课件
- 银行安全保卫工作会议记录
- 建筑八大员考试:试验员真题模拟汇编(共945题)
- 玩具厂作业指导书(含管理制度、规程)
- 禁用物质管理制度
评论
0/150
提交评论