教师管理平台-----servlet+html教师上传视频+主页显示视频封面图+视频播放页面

第三个功能:教师上传视频文件+主页推荐视频+视频播放页面
目录接上:https://blog.csdn.net/ignite_/article/details/90489821
新增数据表:

在这里插入图片描述

新增实体类:
Course(课程表)
package Domain;

public class Course {
    private String id;
    private String course_path;
    private String create_userid;
    private String course_name;
    private String course_describe;
    private String first_image;
    private String course_type;
    private String course_Ttype;
    private String course_time;

    @Override
    public String toString() {
        return "Course{" +
                "id='" + id + '\'' +
                ", course_path='" + course_path + '\'' +
                ", create_userid='" + create_userid + '\'' +
                ", course_name='" + course_name + '\'' +
                ", course_describe='" + course_describe + '\'' +
                ", first_image='" + first_image + '\'' +
                ", course_type='" + course_type + '\'' +
                ", course_Ttype='" + course_Ttype + '\'' +
                ", course_time='" + course_time + '\'' +
                ", create_time='" + create_time + '\'' +
                '}';
    }

    public void setCourse_time(String course_time) {
        this.course_time = course_time;
    }

    public String getCourse_time() {
        return course_time;
    }

    public String getCourse_Ttype() {
        return course_Ttype;
    }

    public void setCourse_Ttype(String course_Ttype) {
        this.course_Ttype = course_Ttype;
    }

    private String create_time;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getCourse_path() {
        return course_path;
    }

    public void setCourse_path(String course_path) {
        this.course_path = course_path;
    }

    public String getCreate_userid() {
        return create_userid;
    }

    public void setCreate_userid(String create_userid) {
        this.create_userid = create_userid;
    }

    public String getCourse_name() {
        return course_name;
    }

    public void setCourse_name(String course_name) {
        this.course_name = course_name;
    }

    public String getCourse_describe() {
        return course_describe;
    }

    public void setCourse_describe(String course_describe) {
        this.course_describe = course_describe;
    }

    public String getFirst_image() {
        return first_image;
    }

    public void setFirst_image(String first_image) {
        this.first_image = first_image;
    }

    public String getCourse_type() {
        return course_type;
    }

    public void setCourse_type(String course_type) {
        this.course_type = course_type;
    }

    public String getCreate_time() {
        return create_time;
    }

    public void setCreate_time(String create_time) {
        this.create_time = create_time;
    }
}

CourseJson(存储Course+部分User)
package Domain.json;

import Domain.Course;

public class CourseJson {
    Course course = new Course();
    private String user_id;
    private String nickname;
    private String picture;
    @Override
    public String toString() {
        return "CourseJson{" +
                "course=" + course +
                ", user_id='" + user_id + '\'' +
                ", nickname='" + nickname + '\'' +
                ", picture='" + picture + '\'' +
                '}';
    }

    public Course getCourse() {
        return course;
    }

    public String getUser_id() {
        return user_id;
    }

    public String getNickname() {
        return nickname;
    }

    public String getPicture() {
        return picture;
    }

    public void setCourse(Course course) {
        this.course = course;
    }

    public void setUser_id(String user_id) {
        this.user_id = user_id;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public void setPicture(String picture) {
        this.picture = picture;
    }
}

新增CourseDao
CourseDaoImpl:
package Dao.Impl;

import Dao.CourseDao;
import Domain.Course;
import Utils.JDBCUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.SQLException;
import java.util.List;

public class CourseDaoImpl implements CourseDao {
    QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
    @Override
    public boolean insert(Course course) throws SQLException {
        String sql ="insert into course values(?,?,?,?,?,?,?,?,?)";
        int update = queryRunner.update(sql,
                course.getId(),
                course.getCourse_path(),
                course.getCreate_userid(),
                course.getCourse_name(),
                course.getCourse_describe(),
                course.getFirst_image(),
                course.getCourse_type(),
                course.getCourse_Ttype(),
                course.getCreate_time());
        if (update>0){
            return true;
        }
        return false;
    }

    @Override
    public List RandSelect() throws SQLException {
        String sql="SELECT *\n" +
                "FROM `course`\n" +
                "ORDER BY RAND() LIMIT 6";
//        待优化。。。。。
        List<Course> query = queryRunner.query(sql, new BeanListHandler<Course>(Course.class));
        return query;
    }

    @Override
    public Course selectid(String id) throws SQLException {
        String sql = "select * from course where id = ?";
        Course query = queryRunner.query(sql, new BeanHandler<Course>(Course.class), id);
        return query;
    }
}
在数据库随机查找字段需要优化,方案暂时没想到…emmm
新增Service:
CourseService
package Service;

import Domain.Course;

import java.sql.SQLException;
import java.util.List;

public interface CourseService {
//    上传课程
    public boolean insert(Course course) throws SQLException;
    //    随机查找六个推荐视频
    public List RandSelect() throws SQLException;
//    根据id查找课程
    public Course selectid(String id) throws SQLException;
}
新增三个servlet
UpCourseServlet(教师上传课程):
package Servlet;

import Domain.Course;
import Service.CourseService;
import Service.Impl.CourseServiceImpl;
import Utils.CreateUUID;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

@WebServlet(name = "UpCourseServlet")
public class UpCourseServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        设置编码
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("gb2312");

//        设置输出
        PrintWriter outprint = response.getWriter();
        //        上传文件
        //        设置文件目录
        String webroot = this.getServletContext().getRealPath("/");
        File temppath = new File(webroot + "fileuploadtemp");
        String dirvideo = webroot + File.separator + "uploadvideo";
        String dirimg = webroot + File.separator + "uploadimg";
//        视频目录
        File pathvideo = new File(webroot + File.separator + "uploadvideo");
//        首页图片目录
        File pathimg = new File(webroot + File.separator + "uploadimg");
        if (!temppath.exists()) {
            temppath.mkdirs();
        }
        if (!pathvideo.exists()) {
            pathvideo.mkdirs();
        }
        if (!pathimg.exists()) {
            pathimg.mkdirs();
        }
        //      设置文件类型(后期可新增文件类型)
        String[] typeimg = new String[]{".jpg", ".png", ".jpeg", ".gif"};
        String[] typevideo = new String[]{".mp4", ".mov", ".3gp", ".avi"};

        //      创建文件项工厂
        DiskFileItemFactory factory = new DiskFileItemFactory(1024 * 1024,
                temppath);
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setFileSizeMax(1024 * 1024 * 200);
        try {
            List<FileItem> fileItems = upload.parseRequest(request);
            String course_name = fileItems.get(0).getString("utf-8");
            String course_type = fileItems.get(1).getString("utf-8");
            String course_Ttype = fileItems.get(2).getString("utf-8");
            String course_describe = fileItems.get(3).getString("utf-8");
            String create_userid = fileItems.get(6).getString("utf-8");
//            首页图片上传


//          img上传本地
            InputStream inimg = fileItems.get(4).getInputStream();
            String imgname = fileItems.get(4).getName();
            int indeximg = imgname.lastIndexOf(".");
//            得到图片文件后缀名
            String endWithimg = imgname.substring(indeximg);

//                    判断是否符合类型
            boolean ImgTypeExists = Arrays.asList(typeimg).contains(endWithimg);
            if (!ImgTypeExists) {
                outprint.print("<script>\n" +
                        "alert(\"文件类型错误,只允许jpg,png,jpeg,gif\"); window.history.go(-1)" +
                        "</script>");
                return;
            }
//            教学视频上传
            InputStream invideo = fileItems.get(5).getInputStream();
            String videoname = fileItems.get(5).getName();
            int indexvideo = videoname.lastIndexOf(".");
//            得到视频文件后缀名
            String endWithvideo = videoname.substring(indexvideo);

//                    判断是否符合类型
            boolean VideoTypeExists = Arrays.asList(typevideo).contains(endWithvideo);
            if (!VideoTypeExists) {
                outprint.print("<script>\n" +
                        "alert(\"文件类型错误,只允许mp4,mov,3gp,avi\"); window.history.go(-1)" +
                        "</script>");
                return;
            }

//            上传图片
            String newFimeNameImg = System.currentTimeMillis() + endWithimg;
//            图片上传文件到本地
            FileOutputStream outimg = new FileOutputStream(new File(
                    dirimg + "/" + newFimeNameImg));

            byte buffer[] = new byte[1024];
            int len = 0;
            while ((len = inimg.read(buffer)) > 0) {
                outimg.write(buffer, 0, len);//写入大小
            }

//            上传视频
            String newFimeNamevideo = System.currentTimeMillis() + endWithvideo;
//            视频上传文件到本地
            FileOutputStream outvideo = new FileOutputStream(new File(
                    dirvideo + "/" + newFimeNamevideo));

            while ((len = invideo.read(buffer)) > 0) {
                outvideo.write(buffer, 0, len);//写入大小
            }


            invideo.close();
            inimg.close();
            outvideo.close();
            outimg.close();


//            写入数据库

//            封装Coursebean
            Date date = new Date();
            SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss");
            Course course = new Course();
            CreateUUID createUUID = new CreateUUID();
            course.setId(createUUID.createUUID());
            course.setCourse_path(newFimeNamevideo);
            course.setCreate_userid(create_userid);
            course.setCourse_name(course_name);
            course.setCourse_describe(course_describe);
            course.setFirst_image(newFimeNameImg);
            course.setCourse_type(course_type);
            course.setCourse_Ttype(course_Ttype);
            course.setCreate_time(dateFormat.format(date));
//          创建CourseService
            CourseService courseService = new CourseServiceImpl();
            if(courseService.insert(course)){
                outprint.print("<script>\n" +
                        "alert('上传成功'); window.history.go(-1);" +
                        "</script>");
            }
            else{
                outprint.print("<script>\n" +
                        "alert('上传失败'); window.history.go(-1);" +
                        "</script>");
            }


        } catch (FileUploadException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}
RandVideoJsonServlet(随机返回六个主页推荐视频)
package Servlet.json;

import Dao.UserDao;
import Domain.Course;
import Domain.User;
import Domain.json.CourseJson;
import Service.CourseService;
import Service.Impl.CourseServiceImpl;
import Service.Impl.UserServiceImpl;
import Service.UserService;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

@WebServlet(name = "RandVideoJsonServlet")
public class RandVideoJsonServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        设置编码
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
//        设置输出
        PrintWriter out = response.getWriter();
//        随机查找六个视频
        CourseService courseService = new CourseServiceImpl();
        List<Course> listCourse = null;
//        六个视频id主人
        List<User> listUser = new ArrayList<User>();
        List<CourseJson> listCourseJson = new ArrayList<CourseJson>();
        try {
            listCourse = courseService.RandSelect();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        UserService userService = new UserServiceImpl();
        for (int index = 0;index<listCourse.size();index++) {
            try {
                listUser.add(index, userService.select(listCourse.get(index).getCreate_userid()));
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
//        创建CourseJson对象

        for (int index=0;index<listCourse.size();index++){
            CourseJson courseJson = new CourseJson();
            courseJson.setCourse(listCourse.get(index));
            courseJson.setUser_id(listUser.get(index).getId());
            courseJson.setNickname(listUser.get(index).getNickname());
            courseJson.setPicture(listUser.get(index).getPicture());
            listCourseJson.add(index,courseJson);

        }

//        创建json对象
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("Rand",listCourseJson);
        out.print(jsonObject);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}
OnlyVideoJsonServlet(返回具体视频播放页面json)
package Servlet.video;

import Domain.Course;
import Domain.User;
import Domain.json.CourseJson;
import Service.CourseService;
import Service.Impl.CourseServiceImpl;
import Service.Impl.UserServiceImpl;
import Service.UserService;
import com.alibaba.fastjson.JSONObject;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;

@WebServlet(name = "OnlyVideoJsonServlet")
public class OnlyVideoJsonServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //        设置编码
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");

//        设置输出
        PrintWriter out = response.getWriter();

//        获得值
        String id = request.getParameter("id");

//        查找视频根据course id
        CourseService courseService = new CourseServiceImpl();
        Course course = new Course();
        try {
            course = courseService.selectid(id);
        } catch (SQLException e) {
            e.printStackTrace();
        }

//        查找老师信息根据course create_userid
        UserService userService= new UserServiceImpl();
        User user = new User();
        try {
            user = userService.select(course.getCreate_userid());
        } catch (SQLException e) {
            e.printStackTrace();
        }

//        存入CourseJson
        CourseJson courseJson = new CourseJson();
        courseJson.setCourse(course);
        courseJson.setPicture(user.getPicture());
        courseJson.setNickname(user.getNickname());
        courseJson.setUser_id(user.getId());

//        创建json,存入courseJson
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("videoOnly",courseJson);
        out.print(jsonObject);
        System.out.println(jsonObject);
    }
}

前台html页面:

index.html 新增内容(显示6个推荐视频)
// 获得视频json
        var jsonlength=0;
        $.getJSON(
            "randvideo",
            function (result) {
                var jsonvideo = eval(result);
                // alert(jsonvideo.Rand[0].course.first_image);
                if (jsonvideo.Rand[0].course.id!=null){
                    // 获得json长度
                    for(var jsonvideoL in jsonvideo.Rand){
                        jsonlength++;
                    }
                    // alert(jsonlength);

                    for (var index = 0 ; index<jsonlength;index++) {
                    $(".video").append("<div>" +
                        "<a href='video.html?id="+jsonvideo.Rand[index].course.id+"'>"+
                        "<img src='uploadimg/"+jsonvideo.Rand[index].course.first_image +"'>" +
                         "<span>"+jsonvideo.Rand[index].course.course_name+"</span></a></div>")
                    }

                }
            }
        )
新增video.html(具体视频播放界面)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.3.1.js"></script>

</head>
<script>
    window.onload=function () {
        // 获取url的id
        function getQueryString(name) {
            var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
            var r = window.location.search.substr(1).match(reg);
            if (r != null) {
                return unescape(r[2]);
            }
            return null;
        }

        // 获取id
        var id = getQueryString("id");
        // alert(id);
        $.getJSON(
            "onlyvideo",
            {"id":id},
            function (result) {
                var jsonOnly=eval(result);
                $("#coursename").append(jsonOnly.videoOnly.course.course_name);
                $("#coursetype").append(jsonOnly.videoOnly.course.course_type);
                $("#courseTtype").append(jsonOnly.videoOnly.course.course_Ttype);
                $("#coursedescribe").append(jsonOnly.videoOnly.course.course_describe);
                $("#coursetime").append(jsonOnly.videoOnly.course.create_time);                $("coursetime").append(jsonOnly.videoOnly.course.create_time);
                $("#usernickname").append(jsonOnly.videoOnly.nickname);
                $("#userpicture").attr("src","upload/"+jsonOnly.videoOnly.picture);
                $("#video").attr("src","uploadvideo/"+jsonOnly.videoOnly.course.course_path);
           }
        )
    }
</script>
<body>
<div id="all">
    <span style="color:red">课程名称:</span><span id="coursename"></span>
    <br>
    <span style="color:red">课程一级分类:</span><span id="coursetype"></span>
    <br>
    <span style="color:red">课程二级分类:</span><span id="courseTtype"></span>
    <br>
    <span style="color:red">课程描述:</span><span id="coursedescribe"></span>
    <br>
    <span style="color:red">创建时间:</span><span id="coursetime"></span>
    <br>
    <span style="color:red">上传人昵称</span><span id="usernickname"></span>
    <br>
    <span style="color:red">上传人头像</span><img src="" alt="" id="userpicture" style="width: 100px;height: 100px;">
    <br>
    <video width="320" height="240" controls id="video">
    </video>
</div>
</body>
</html>
运行效果图:
1.主页随机六个推荐视频:在这里插入图片描述
2.具体视频播放页面(暂时只准备了一个播放视频,emmmm):

在这里插入图片描述

3.教师上传视频

在这里插入图片描述
在这里插入图片描述

Servlet上传视频+表单文字数据把我恶心到,emmmm,还是PHP容易,PHP果然是全世界最好用的语言,咩哈哈哈哈。
在随机查找六个推荐视频的sql语句,后期得想个办法干他一炮,不然太难受了呀。
要抓紧时间用原生的做完这个项目,学习Spring全家桶了。

代码有什么不符合规范的地方,欢迎各位前辈指出哇

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值