目 錄
1 緒論 1
1.1 項目背景 1
1.2 項目研究目的和意義 1
1.3 國內(nèi)外研究現(xiàn)狀 2
1.3.1國內(nèi)研究現(xiàn)狀 2
1.3.2國外研究現(xiàn)狀 2
1.4 論文工作內(nèi)容以及結(jié)構(gòu)安排 3
1.4.1論文工作內(nèi)容 3
1.4.2論文結(jié)構(gòu)安排 3
2 可行性分析及關(guān)鍵技術(shù)介紹 4
2.1 技術(shù)可行性 4
2.2 系統(tǒng)操作可行性 4
2.3 系統(tǒng)關(guān)鍵技術(shù)介紹 4
2.3.1java語言 4
2.3.2Eclipse IDE工具 5
2.3.3spring 5
2.3.4springMVC 5
2.3.5 mybatis 6
2.3.6 AJAX 6
3 系統(tǒng)需求分析 7
3.1 系統(tǒng)業(yè)務(wù)流程 7
3.2 系統(tǒng)功能性需求 8
3.3 系統(tǒng)用戶權(quán)限 9
3.4 系統(tǒng)非功能需求 9
3.4.1系統(tǒng)數(shù)據(jù)安全 9
3.4.2系統(tǒng)運行狀態(tài) 10
4 系統(tǒng)設(shè)計與實現(xiàn) 10
4.1 系統(tǒng)的設(shè)計目標與原則 10
4.2 系統(tǒng)功能設(shè)計 11
4.3 數(shù)據(jù)庫設(shè)計 12
4.3.1數(shù)據(jù)庫概念模型設(shè)計 12
4.3.2數(shù)據(jù)庫邏輯模型設(shè)計 13
4.3.3數(shù)據(jù)庫表設(shè)計 14
4.4 系統(tǒng)功能模塊實現(xiàn) 15
4.4.1用戶登錄與注銷 15
4.4.2用戶注冊模塊 16
4.4.3視頻上傳 17
4.4.4個人信息模塊 17
4.4.5視頻管理中心模塊 18
4.5.6在線視頻播放模塊 19
4.5.7管理員登錄模塊 20
4.5.8視頻管理模塊 22
4.5.9用戶管理模塊 24
4.5.10 權(quán)限管理模塊 24
5 系統(tǒng)測試 25
5.1 用戶登錄模塊測試 26
5.2 用戶注冊模塊測試 26
5.3 視頻上傳模塊測試 27
5.4 個人信息模塊測試 28
5.5 視頻管理模塊測試 28
5.6 管理員登錄模塊測試 29
5.7 后臺視頻管理模塊測試 30
5.8 后臺用戶管理模塊測試 30
6 結(jié)束語 31
6.1 總結(jié) 31
6.2 未來工作展望 31
謝 辭 32
參考文獻 33
附 錄 34
1關(guān)鍵代碼 34
1.1框架的配置文件 34
1.2 關(guān)鍵類 37
3 系統(tǒng)需求分析
3.1 系統(tǒng)業(yè)務(wù)流程
圖3-1 用戶業(yè)務(wù)流程圖
前臺系統(tǒng)的使用對象主要是用戶,用戶在前臺系統(tǒng)中的主要業(yè)務(wù)是進行用戶登錄、注冊、退出等基本操作;用戶的個人中心主要包含三個業(yè)務(wù)流程:查看個人信息、修改個人信息、對個人上傳的視頻進行管理;在影片管理業(yè)務(wù)流程里,分為四個子流程:搜索視頻、上傳個人新視頻、對已經(jīng)上傳好的視頻進行編輯修改、刪除個人視頻。
圖3-2 管理員業(yè)務(wù)流程圖
系統(tǒng)的管理員分為三種角色:視頻管理員、用戶管理員、權(quán)限管理員。每個角色都設(shè)置了特定的權(quán)限,分別對網(wǎng)站進行整體管理。
視頻管理員:負責(zé)對網(wǎng)站的視頻進行管理,包括視頻上傳,首頁輪播視頻管理,電影、電視劇、動漫、綜藝等類別的視頻進行編輯、刪除等操作。
用戶管理員:查看網(wǎng)站的用戶列表,對用戶上傳的視頻進行審批、刪除等管理。
權(quán)限管理員:對后臺系統(tǒng)的賬戶進行管理,增加新賬戶、對各個賬戶進行權(quán)限管理。
3.2 系統(tǒng)功能性需求
在線視頻網(wǎng)站的目的是實現(xiàn)滿足在線視頻播放、視頻上傳和下載等影視劇迷們對影視劇的日常需求的功能。為了達到這個目的,于是對系統(tǒng)提出了以下的系統(tǒng)功能:
(1)能夠在線播放視頻,實現(xiàn)用戶無論登錄與否都能在線播放視頻,同時實現(xiàn)播放列表功能。
(2)能夠讓用戶實現(xiàn)對個人信息的查看和修改,便于管理個人賬戶。
(3)能夠滿足用戶上傳自己的視頻,同時對已經(jīng)上傳的視頻進行編輯、搜索、刪除、播放等操作。
(4)能夠?qū)崿F(xiàn)管理員對首頁輪播視頻進行編輯、刪除、添加等管理,同時也要對首頁的電視劇和電影按播放量進行熱門排行榜。
(5)能夠?qū)崿F(xiàn)管理員對電影、電視劇、動漫、綜藝等視頻進行增刪改查等管理。
(6)能夠?qū)崿F(xiàn)管理員對用戶的視頻進行審批、刪除等管理。
(7)能夠?qū)崿F(xiàn)對管理員的權(quán)限進行修改、增加賬戶等管理。
3.3 系統(tǒng)用戶權(quán)限
在線視頻網(wǎng)站需要視頻管理員登錄后對網(wǎng)站的視頻進行增刪改查等操作,是實現(xiàn)了網(wǎng)站在線視頻播放功能的前提。視頻管理員首先將視頻設(shè)置為首頁輪播視頻、將電影、電視劇、動漫、綜藝等視頻上傳后形成網(wǎng)站視頻。用戶才對這些視頻進行搜索、播放等功能。用戶登錄后修改自己的個人信息、對個人視頻進行上傳、編輯、刪除等管理。
系統(tǒng)用戶主要有一下幾種:
(1)權(quán)限管理員:對后臺管理系統(tǒng)的賬戶進行新增賬戶、刪除賬戶、對原有賬戶進行授權(quán)管理。
(2)視頻管理員:對網(wǎng)站的視頻進行首頁輪播視頻的增加、修改、刪除,對電視劇、電影、動漫、綜藝等視頻進行查詢、刪除、新增等管理。
(3)用戶管理員:對網(wǎng)站的用戶列表進行查詢、對用戶上傳的視頻進行審批管理。
(4)用戶:用戶可以進行登錄注冊,對個人信息進行查詢、修改,上傳視頻,對已經(jīng)上傳的視頻進行修改、刪除,對網(wǎng)站的視頻和自己的視頻進行在線播放、下載等操作。
3.4 系統(tǒng)非功能需求
3.4.1系統(tǒng)數(shù)據(jù)安全
系統(tǒng)用戶在進行數(shù)據(jù)相關(guān)的增加、刪除、修改等操作時,系統(tǒng)必須確保數(shù)據(jù)的安全可靠,因此系統(tǒng)必須具備以下功能:
(1)操作前進行確認征求:用戶對信息的修改、刪除等敏感操作時,提交之前必須再次向用戶發(fā)出確認,防止誤操作導(dǎo)致數(shù)據(jù)的損失。
(2)數(shù)據(jù)準確性校驗:用戶在填寫信息時,對數(shù)據(jù)格式、類型等進行明確的提示,同時對輸入不正確的數(shù)據(jù)進行提示,避免了不準確的數(shù)據(jù)被保存到數(shù)據(jù)庫。
(3)數(shù)據(jù)的冗余與唯一性:用戶進行注冊時,使用ajax進行異步刷新,防止用戶輸入的用戶名與原有的用戶名重復(fù),導(dǎo)致數(shù)據(jù)冗余、混亂。為了確保數(shù)據(jù)的唯一性,對主鍵等具有唯一標識符的字段使用uuid自動生成,以達到保證數(shù)據(jù)的唯一性。
3.4.2系統(tǒng)運行狀態(tài)
為了確保網(wǎng)站能夠可靠的服務(wù)于人們觀看視頻等需求。必須做到系統(tǒng)能夠承受長期的運行、高效穩(wěn)定的完成系統(tǒng)的功能需求,網(wǎng)站系統(tǒng)必須滿足以下的要求:
(1)系統(tǒng)結(jié)構(gòu)設(shè)計合理。
網(wǎng)站系統(tǒng)使用了java作為開發(fā)語言,滿足了無操作系統(tǒng)的限制要求,實現(xiàn)了跨系統(tǒng)的功能。使用性能穩(wěn)定、高效的SSM作為后臺的整體框架,實現(xiàn)了各個模塊和各個層次之間的解耦,互不依賴,滿足了后期進行系統(tǒng)更新需求。使得網(wǎng)站系統(tǒng)具備了高可維護性、可拓展性。
(2)具備高度的維護性、開放性。
由于在線視頻網(wǎng)站是個不斷更新的系統(tǒng),因此本系統(tǒng)提供了對外開發(fā)的接口,以便日后進行系統(tǒng)的完善和更新。
(3)系統(tǒng)安全性高。
系統(tǒng)是供廣大用戶使用,因此系統(tǒng)安全性必須做到高度安全。對于用戶的信息,例如用戶的密碼等私密信息,在數(shù)據(jù)庫設(shè)計時使用了MD5加密算法進行加密,以達到了保證用戶信息的安全。本文轉(zhuǎn)載自http://www.biyezuopin.vip/onews.asp?id=12476對于網(wǎng)站后臺系統(tǒng)管理上,采用權(quán)限管理。實現(xiàn)了不同角色具有不同的操作權(quán)限,對不同的業(yè)務(wù)進行權(quán)限限制訪問。
4 系統(tǒng)設(shè)計與實現(xiàn)
系統(tǒng)的設(shè)計與實現(xiàn),就是將用戶的需求轉(zhuǎn)化成編程的思維方式。為了符號開發(fā)規(guī)范,需給各個功能模塊進行詳細的設(shè)計,同時對各個模塊進行相應(yīng)的數(shù)據(jù)庫設(shè)計。各個模塊之間的聯(lián)系做到關(guān)聯(lián)而不依賴。文章來源:http://www.zghlxwxcb.cn/news/detail-411703.html
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<c:set var="cxtPath" value="${pageContext.request.contextPath}"></c:set>
<c:set var="url" value="pictureUrl?url=E:/myvod/img/admin/"></c:set>
<html>
<head>
<title>在線視頻</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="在線視頻網(wǎng)站" />
<link href="css/indexMovie.css" rel='stylesheet' type='text/css' />
<link href="css/bootstrap.css" rel='stylesheet' type='text/css' />
<link href="css/style.css" rel="stylesheet" type="text/css" media="all" />
<!-- start plugins -->
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script src="js/responsiveslides.min.js"></script>
<link rel="stylesheet" href="css/baidulogin.css" />
<script src="${cxtPath}/js/user.js"></script>
<script>
$(function() {
$("#slider").responsiveSlides({
auto : true,
nav : true,
speed : 500,
namespace : "callbacks",
pager : true,
});
});
</script>
</head>
<body>
<script type="text/javascript" src="js/baidulogin.js"></script>
<div class="container">
<div class="container_wrap">
<!--頂部-->
<div class="header_top">
<div class="col-sm-3 logo" style="margin-top: -2%">
<img src="${cxtPath}/images/logo.png" alt="logo" title="sheep影音"/>
</div>
<div class="col-sm-5 nav" style="margin-top: -0.5%">
<ul>
<li><span class="simptip-position-bottom simptip-movable"
data-tooltip="電影"><a href="${cxtPath}/getMovieByCategory?category=1">
</a></span></li>
<li><span class="simptip-position-bottom simptip-movable"
data-tooltip="電視劇"><a
href="${cxtPath}/getMovieByCategory?category=2"> </a> </span></li>
<li><span class="simptip-position-bottom simptip-movable"
data-tooltip="動漫"><a href="${cxtPath}/getMovieByCategory?category=3">
</a></span></li>
<li><span class="simptip-position-bottom simptip-movable"
data-tooltip="綜藝"><a
href="${cxtPath}/getMovieByCategory?category=4"> </a></span></li>
</ul>
</div>
<div class="col-sm-4 header_right">
<ul class="header_right_box">
<li><c:if test="${user!=null}">
<p>
<a href="${cxtPath}/jsp/user/personalCenter.jsp"> <img
src="${cxtPath}/${user.userPriceUrl}" alt="頭像" title="個人中心"
style="border-radius: 50%;" width=32px height=32px /> <font
color="#31B0D5" size="4" title="個人中心">${user.userName}</font></a>
| <a href="${cxtPath}/userLogout">
<font color="#31B0D5" size="4" title="退出登錄">退出</font>
</a>
</p>
</c:if> <c:if test="${user==null}">
<p>
<div class="link">
<a href="javascript:showDialog();"> <font color="#31B0D5"
size="4" title="登錄">登錄</font>
</a>| | <a href="register.jsp"> <font
color="#31B0D5" size="4" title="注冊">注冊</font>
</a>
</div>
</p>
</c:if></li>
</ul>
</div>
<div class="clearfix"></div>
</div>
<!--彈出-->
<div class="ui-mask" id="mask" onselectstart="return false"></div>
<div class="ui-dialog" id="dialogMove" onselectstart='return false;'>
<div class="ui-dialog-title" id="dialogDrag"
onselectstart="return false;">
登錄通行證 <a class="ui-dialog-closebutton"
href="javascript:hideDialog();"></a>
</div>
<div class="ui-dialog-content">
<form action="${cxtPath}/userLogin" method="post" id="loginForm"
onsubmit="return check(this)">
<div class="ui-dialog-l40">
<input class="ui-dialog-input ui-dialog-input-username"
id="userName" type="input" placeholder="用戶名" value=""
name="userName" />
</div>
<div style="height: 25px;">
<font color="red" id="username_span"></font>
</div>
<div class="ui-dialog-l40">
<input class="ui-dialog-input ui-dialog-input-password"
id="userPassword" type="password" placeholder="密碼" value=""
name="userPassword" />
</div>
<div style="height: 25px;">
<font color="red" id="userPassword_span"></font>
</div>
<div class="ui-dialog-l41">
<input type="test" placeholder="驗證碼" value="" name="vcode"
id="codeid" /> <img id="code" src="${cxtPath}/vcode"
onclick="checkcode()" height="40px">
</div>
<div style="height: 25px;">
<font color="red" id="vodespan"></font>
</div>
<div>
<input type="submit" value="登錄" class="ui-dialog-submit" />
</div>
<div class="ui-dialog-l40" style="float: left;">
<a href="#">忘記密碼</a>
</div>
<div class="ui-dialog-l40" style="float: right;">
<a href="register.jsp">立即注冊</a>
</div>
</form>
</div>
</div>
<!--彈出 end-->
<!--輪播-->
<div class="slider">
<div class="callbacks_container">
<ul class="rslides" id="slider">
<c:forEach var="slider" items="${sliders}">
<li><img
style="position: relative; width: 1194px; height: 497px"
src="${cxtPath}/${url}${slider.id}${slider.sliderImage}"
class="img-responsive" alt="${slider.movieName}" /> <label
style="position: relative;"> <font color="#FFFFF"
size="4">上映時間:</font> <span class="m_1"> <f:formatDate
value="${slider.showTime}" pattern="yyyy-MM-dd" />
</span> <font color="#FFFFF" size="4">評分:</font> <span
class="m_1">${slider.grade}</span> <font
color="#FFFFF" size="4">下載次數(shù):</font> <span class="m_1">${slider.downloads}</span>
<font color="#FFFFF" size="4">播放次數(shù):</font> <span
class="m_1">${slider.plays}</span>
</label>
<div class="button">
<a href="${cxtPath}/player?movie=${slider.id}${slider.mvType}"
class="hvr-shutter-out-horizontal" title="點擊播放" >現(xiàn)在就去看</a>
</div></li>
</c:forEach>
</ul>
</div>
</div>
<div class="content">
<div class="box_1">
<h1 class="m_2">
<font color="#FFFFFF" size="7">熱門視頻</font>
</h1>
<!--搜索欄-->
<div class="search" style="text-align-last: center;">
<form action="${cxtPath}/searchIndexMovie" method="post">
<input type="text" value="萬部影片任你挑" onFocus="this.value='';"
onBlur="if (this.value == '') {this.value ='';}" name="movieName"> <input
type="submit" value="" title="點擊搜索">
</form>
</div>
<div class="clearfix"></div>
</div>
<div class="box_2">
<!--高分電影-->
<div class="col-md-5 grid_3">
<br />
<h3>
<font color="#DFF0D8">高分電影</font>
</h3>
<form>
<div class="row_1">
<div class="col-md-6 grid_4">
<c:forEach var="movie" items="${movies}" begin="0" end="2">
<br>
<div class="grid_2">
<a href="${cxtPath}/player?movie=${movie.id}${movie.mvType}">
<img src="${cxtPath}/${url}${movie.id}${movie.imgType}"
class="img-responsive" alt="${movie.movieName}"
style="width: 200px; height: 183px" title="點擊播放" />
</a>
</div>
<div class="caption1">
<p class="m_3">
<a
href="${cxtPath}/player?movie=${movie.id}${movie.mvType}">${movie.movieName}</a>
</p>
<p class="m_4">${movie.message}</p>
</div>
<br>
</c:forEach>
</div>
<div class="col-md-6 grid_4">
<c:forEach var="movie" items="${movies}" begin="3" end="5">
<br>
<div class="grid_2">
<a href="${cxtPath}/player?movie=${movie.id}${movie.mvType}">
<img src="${cxtPath}/${url}${movie.id}${movie.imgType}"
class="img-responsive" alt="${movie.movieName}"
style="width: 200px; height: 183px" title="點擊播放" />
</a>
</div>
<div class="caption1">
<p class="m_3">
<a
href="${cxtPath}/player?movie=${movie.id}${movie.mvType}">${movie.movieName}</a>
</p>
<p class="m_4">${movie.message}</p>
</div>
<br>
</c:forEach>
</div>
<div class="clearfix"></div>
<br>
<h4 align="right" style="margin-right: 50px;">
<a href="${cxtPath}/getMovieByCategory?category=1">更多</a>
</h4>
</div>
</form>
</div>
<!--熱播電視劇-->
<div class="col-md-5 content_right grid_3">
<br />
<h3 style="margin-left: 18px;">
<font color="#DFF0D8">熱播電視劇</font>
</h3>
<div class="row_3">
<div class="col-md-6 grid_4">
<c:forEach var="tvplay" items="${tvplays}" begin="0" end="2">
<br>
<div class="grid_2">
<a
href="${cxtPath}/player?movie=${tvplay.id}${tvplay.mvType}">
<img src="${cxtPath}/${url}${tvplay.id}${tvplay.imgType}"
class="img-responsive" alt="${tvplay.movieName}"
style="width: 200px; height: 183px" title="點擊播放" />
</a>
</div>
<div class="caption1">
<p class="m_3">
<a
href="${cxtPath}/player?movie=${tvplay.id}${tvplay.mvType}">${tvplay.movieName}</a>
</p>
<p class="m_4">${tvplay.message}</p>
</div>
<br>
</c:forEach>
</div>
<div class="col-md-6 grid_4">
<c:forEach var="tvplay" items="${tvplays}" begin="3" end="5">
<br>
<div class="grid_2">
<a
href="${cxtPath}/player?movie=${tvplay.id}${tvplay.mvType}">
<img src="${cxtPath}/${url}${tvplay.id}${tvplay.imgType}"
class="img-responsive" alt="${tvplay.movieName}"
style="width: 200px; height: 183px" title="點擊播放" />
</a>
</div>
<div class="caption1">
<p class="m_3">
<a
href="${cxtPath}/player?movie=${tvplay.id}${tvplay.mvType}">${tvplay.movieName}</a>
</p>
<p class="m_4">${tvplay.message}</p>
</div>
<br>
</c:forEach>
</div>
<div class="clearfix"></div>
<br>
<h4 align="right" style="margin-right: 50px;">
<a href="${cxtPath}/getMovieByCategory?category=2">更多</a>
</h4>
</div>
</div>
</div>
<!--排行榜-->
<div class="col-md-2 grid_6">
<br />
<h3>
<font color="#DFF0D8">播放榜</font>
</h3>
<c:forEach var="ranking" items="${rankings}" begin="0" end="3">
<div class="grid_2">
<a href="${cxtPath}/player?movie=${ranking.id}${ranking.mvType}">
<img src="${cxtPath}/${url}${ranking.id}${ranking.imgType}"
class="img-responsive" alt="${ranking.movieName}"
style="width: 160px; height: 143px" title="點擊播放" />
</a>
</div>
<div class="caption1">
<p class="m_41">${ranking.message}</p>
<p class="m_31">
<a href="${cxtPath}/player?movie=${ranking.id}${ranking.mvType}">${ranking.movieName}</a>
</p>
</div>
<br><br>
</c:forEach>
<h4 align="right" style="margin-right: 10px;">
<a href="#">更多</a>
</h4>
</div>
</div>
</div>
</div>
<div class="container">
<footer id="footer">
<div id="footer-3d">
<div class="gp-container">
<span class="first-widget-bend"></span>
</div>
</div>
<div id="footer-widgets" class="gp-footer-larger-first-col">
<div class="gp-container">
<div class="footer-widget footer-1">
<div class="wpb_wrapper">
<img src="images/f_logo.png" alt="" />
</div>
<br>
<p>好看的國產(chǎn)-最新國產(chǎn)-經(jīng)典國產(chǎn)-國產(chǎn)電影在線網(wǎng)站</p>
<p class="text">好看的國產(chǎn)-最新國產(chǎn)-經(jīng)典國產(chǎn)-國產(chǎn)電影在線網(wǎng)站</p>
</div>
<div class="footer_box">
<div class="col_1_of_3 span_1_of_3">
<h3>友情鏈接</h3>
<ul class="first">
<li><a target="_blank">愛奇藝</a></li>
<li><a target="_blank">騰訊視頻</a>
</li>
<li><a target="_blank">百度</a>
</li>
</ul>
</div>
<div class="col_1_of_3 span_1_of_3">
<h3>新聞動態(tài)</h3>
<ul class="first">
<li><a href="#">搶先發(fā)布</a></li>
<li><a href="#">top sellers</a></li>
<li><a href="#">Specials</a></li>
</ul>
</div>
<div class="col_1_of_3 span_1_of_3">
<h3>聯(lián)系我們</h3>
<ul class="first">
<li><a href="protocol.html" title="用戶協(xié)議">關(guān)于我們</a></li>
<li><a href="#">聯(lián)系方式</a></li>
<li><a href="${cxtPath}/checkAdmin" title="管理員登錄">后臺管理</a></li>
</ul>
</div>
<div class="clearfix"></div>
</div>
<!--版權(quán)聲明-->
<div class="copy" align="center">
<p>Copyright © 2015-2020.sheep.</p>
</div>
<div class="clearfix"></div>
</div>
</div>
</footer>
</div>
</body>
</html>
文章來源地址http://www.zghlxwxcb.cn/news/detail-411703.html
到了這里,關(guān)于基于SSM的在線視頻網(wǎng)站的設(shè)計與實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!