0、效果展示
1、概述
该系统分为后台管理员登录、前台用户,具体功能描述如下所示:
管理员(后台用户)
系统管理:该模块实现的功能有公告管理、发布公告、友情链接、网站留言管理、管理员设置、后台登录日志。
会员管理:对注册的用户进行管理,包括删除、修改等操作,可按日期、会员名进行搜索。
视频点播管理:可对视频点播进行分类,在每个分类下,可进行视频点播的添加、删除、修改等操作。并提供多种条件的查询。
视频点播资讯管理:该模块实现的功能有管理视频点播资讯、发布视频点播资讯,如标题、是否显示等。
注册会员管理:该模块是对注册会员的信息管理,如会员名、注册时间、登录次数、上次登录时间等。
会员(前台用户)
注册、登录界面:用户通过填写自己的个人信息进行注册。注册后的用户可以通过会员登录界面进行登录,登录后可以进行相应的操作,如下载视频点播,评论视频点播等。
主界面:包括系统公告,视频点播资讯、视频点播列表、热点视频点播、网站投票、视频点播查询、留言板等。
系统公告:用户可在主界面查看公告。
搜索视频点播:可按照视频点播类型、地区、歌名、歌手名等条件进行搜索。
视频点播下载:注册的用户可对视频点播进行下载。
留言板:会员登录网站后可以查看网站留言和在线留言等。
2、搭建环境
本文以实现一个视频点播网站-视频播放网站-电影在线观看网站-电视剧在线欣赏网站为目标,从环境搭建到编码实现全过程讲述
我们使用javaweb、J2EE来构建视频点播网站-视频播放网站-电影在线观看网站-电视剧在线欣赏网站,环境使用最新版jdk和tomcat,配合mysql数据库
开发工具使用idea(也可以使用eclipse),数据库管理工具使用Navicat Premium
开发框架使用JavaBean Servlet MVC结构;
没有使用SSH(Struts+Spring+Hibernate)或SSM(Spring+SpringMVC+MyBatis),这两个框架我们在别的项目中再介绍开发过程
在项目中会引入My97DatePicker作为前端日期时间选择工具,使用fckeditor作为富媒体编辑器(也可以使用百度的ueditor)
使用DWR(Direct Web Remoting)用于改善web页面与Java类交互,实现远程服务器端AJAX读取登录数据。
使用JSTL(Java server pages standarded tag library,即JSP标准标签库),此库是由JCP(Java community Proces)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签库,并由Apache的Jakarta小组来维护。开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。
3、数据表结构
字段名称 | 自动增长 | 字段类型 | 说明 |
id | - | int | - |
title | - | varchar | 标题 |
content | - | varchar | 内容 |
addtime | - | datetime | 日期 |
adder | - | varchar | 发布人 |
ifhide | - | int | - |
4、后端代码示例
package com.action;
/**
* 网站公告
* @author Administrator
*
*/
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.bean.AfficheBean;
import com.bean.SystemBean;
import com.util.Constant;
import com.util.Filter;
public class AfficheServlet extends HttpServlet {
/**
* Constructor of the object.
*/
public AfficheServlet() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to
* post.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(Constant.CONTENTTYPE);
request.setCharacterEncoding(Constant.CHARACTERENCODING);
String sysdir = new SystemBean().getDir();
HttpSession session = request.getSession();
try {
String username2 = (String) session.getAttribute("user");
if (username2 == null) {
request.getRequestDispatcher("error.jsp").forward(request, response);
} else {
AfficheBean afficheBean = new AfficheBean();
String method = request.getParameter("method").trim();
if (method.equals("addAffiche")) {// 增加公告
String title = Filter.escapeHTMLTags(request.getParameter("title").trim());
String content = Filter.escapeHTMLTags(request.getParameter("content").trim());
String adder = username2;
String ifhide = Filter.escapeHTMLTags("1");
int flag = afficheBean.addAffiche(title, content, adder, ifhide);
if (flag == Constant.SUCCESS) {
request.setAttribute("message", "操作成功!");
request.getRequestDispatcher(sysdir + "/affiche/index.jsp").forward(request, response);
} else {
request.setAttribute("message", "系统维护中请稍后再试!");
request.getRequestDispatcher(sysdir + "/affiche/index.jsp").forward(request, response);
}
} else if (method.equals("editAffiche")) {// 修改公告
String id = Filter.escapeHTMLTags(request.getParameter("id").trim());
String title = Filter.escapeHTMLTags(request.getParameter("title").trim());
String content = Filter.escapeHTMLTags(request.getParameter("content").trim());
String adder = username2;
String ifhide = Filter.escapeHTMLTags(request.getParameter("ifhide").trim());
int flag = afficheBean.updateAffiche(Integer.parseInt(id), title, content, adder, ifhide);
if (flag == Constant.SUCCESS) {
request.setAttribute("message", "操作成功!");
request.getRequestDispatcher(sysdir + "/affiche/index.jsp").forward(request, response);
} else {
request.setAttribute("message", "系统维护中请稍后再试!");
request.getRequestDispatcher(sysdir + "/affiche/index.jsp").forward(request, response);
}
} else if (method.equals("hideAffiche")) {
String id = Filter.escapeHTMLTags(request.getParameter("id").trim());
int flag = afficheBean.hideAffiche(Integer.parseInt(id));
if (flag == Constant.SUCCESS) {
request.getRequestDispatcher(sysdir + "/affiche/index.jsp").forward(request, response);
} else {
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir + "/affiche/index.jsp").forward(request, response);
}
} else if (method.equals("delaffiche")) {// 删除公告
String id = Filter.escapeHTMLTags(request.getParameter("id").trim());
int flag = afficheBean.delAffiche(Integer.parseInt(id));
if (flag == Constant.SUCCESS) {
request.getRequestDispatcher(sysdir + "/affiche/index.jsp").forward(request, response);
} else {
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir + "/affiche/index.jsp").forward(request, response);
}
}
}
} catch (Exception e) {
e.printStackTrace();
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException
* if an error occure
*/
public void init() throws ServletException {
// Put your code here
}
}
5、前端代码示例
<%@ page language="java" import="java.util.*,com.util.*" contentType="text/html;charset=gb2312" %>
<jsp:useBean id="sn" scope="page" class="com.bean.SystemBean"/>
<jsp:useBean id="ab" scope="page" class="com.bean.AfficheBean"/>
<%
String path = request.getContextPath();
%><!DOCTYPE html>
<html>
<head>
<meta name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>后台管理</title>
<link href="<%=path%>/admin/css/bootstrap.min.css" rel="stylesheet"><!--bootstrap框架-->
<link href="<%=path%>/admin/css/font-awesome.min.css" rel="stylesheet"><!--图标字体框架-->
<link href="<%=path%>/admin/css/style.min.css" rel="stylesheet"><!--后台管理样式主文件-->
<link href="<%=path%>/admin/css/bootstrap-table.min.css" rel="stylesheet"><!--bootstrap-table表格插件-->
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<!--标题栏开始-->
<div class="ibox-title">
<h5>公告管理</h5>
</div>
<!--标题栏结束-->
<div class="ibox-content">
<script language=Javascript src="<%=path%>/admin/js/Common.js"></script>
<%
String message = (String) request.getAttribute("message");
if (message == null) {
message = "";
}
if (!message.trim().equals("")) {
out.println("<script language='javascript'>");
out.println("alert('" + message + "');");
out.println("</script>");
}
request.removeAttribute("message");
%>
<%
String username = (String) session.getAttribute("user");
if (username == null) {
response.sendRedirect(path + "/error.jsp");
} else {
%>
<div class="table-responsive">
<table id="datalist">
<thead>
<tr>
<th data-halign="center" data-align="center">ID</th>
<th data-halign="center" data-align="center">标题</th>
<th data-halign="center" data-align="center">发布时间</th>
<th data-halign="center" data-align="center">发布人</th>
<%-- <th data-halign="center" data-align="center">是否显示</th>
--%> <th data-halign="center" data-align="center">删除</th>
</tr>
</thead>
<%
List pagelist3 = ab.getAllAfficheManage();
%>
<%
if (!pagelist3.isEmpty()) {
for (int i = 0; i < pagelist3.size(); i++) {
List pagelist2 = (ArrayList) pagelist3.get(i);
%>
<tr>
<td><%=i + 1 %>
</td>
<td>
<a href="<%=path%>/admin/affiche/edit.jsp?method=editAffiche&id=<%=pagelist2.get(0).toString()%>"><%=pagelist2.get(1).toString() %>
</a></td>
<td>
<%=Validate.datemmdd(pagelist2.get(2).toString())%>
</td>
<td><%=pagelist2.get(3).toString() %>
</td>
<%-- <td>
<a href="<%=path%>/Affiche.shtml?method=hideAffiche&id=<%=pagelist2.get(0).toString()%>"><%=Integer.parseInt(pagelist2.get(4).toString()) == 1 ? "显示" : "隐藏" %>
</a>
</td>--%>
<td>
<a href="<%=path%>/Affiche.shtml?method=delaffiche&id=<%=pagelist2.get(0).toString()%>" onclick="return confirm('你真的确定要删除吗?');">删除</a>
</td>
</tr>
<%
}
}
%>
</TBODY>
</TABLE>
</div>
</div>
<%} %>
<!--表格数据区------------结束-->
</div>
</div>
</div>
</div>
<script src="<%=path%>/admin/js/jquery.min.js"></script><!--jquery框架-->
<script src="<%=path%>/admin/js/bootstrap.min.js"></script><!--bootstrap框架 -->
<script src="<%=path%>/admin/js/content.min.js"></script><!--后台网站主框架使用-->
<!--表格-->
<script src="<%=path%>/admin/js/plugins/bootstrap-table/bootstrap-table.min.js"></script>
<script src="<%=path%>/admin/js/plugins/bootstrap-table/bootstrap-table-mobile.min.js"></script>
<script src="<%=path%>/admin/js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="<%=path%>/admin/js/bootstrap-table.js"></script>
<!--表格-->
<!--导出-->
<script src="<%=path%>/admin/js/plugins/bootstrap-table/bootstrap-table-export.js"></script>
<script src="<%=path%>/admin/js/plugins/bootstrap-table/tableExport.js"></script>
<!--弹窗插件-->
<script src="<%=path%>/admin/js/plugins/layer/layer.min.js"></script>
</body>
</html>