<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
通過讀取資料庫video表獲取當前視訊的視訊名、視訊地址,展示至前端頁面videorecord.html,通過點選播放按鈕獲取資料id進而得到所選視訊地址,跳轉播放視訊顯示頁videoshow.html,播放所選視訊。當然本案例只是為了展示主要的一些功能,其他比如跳轉、頁面佈局美化等可以自行進行更改。
Springboot播放視訊
1. Controller層範例
返回資料庫資料時,使用了pagehelp當中的PageInfo,為了後期擴充套件分頁功能,正常寫法返回值型別應為實體類Video.
package com.dvms.controller; /* *檔名: VideoController *建立者: CJW *建立時間:2022/4/14 16:40 *描述: TODO */ import com.dvms.entity.Video; import com.dvms.service.ParamoduleService; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class VideoController { @Autowired private ParamoduleService paramoduleService; //查出記錄 @RequestMapping("/angle/findvideoRecord") public String findvideorecords(Model model){ System.out.println(paramoduleService.findvideorecord()); PageInfo<Video> videoRecord = new PageInfo<>(paramoduleService.findvideorecord()); model.addAttribute("videorecord", videoRecord); return "angle/videorecord"; } // 查出視訊地址 @RequestMapping("/angle/findvideo") public String findvideo(String id, String filenamev, Model model){ System.out.println(id); String videopath = paramoduleService.findvideo(id); System.out.println(videopath); model.addAttribute("videourl",videopath); model.addAttribute("videoname",filenamev); return "angle/videoshow"; }
2. Service層
package com.dvms.service; import com.dvms.entity.Record; import com.dvms.entity.Video; import java.util.List; import java.util.Map; /* *檔名: ParamoduleService *建立者: CJW *建立時間:2022/1/15 10:54 *描述: TODO */ public interface ParamoduleService { String findvideo(String id); List<Video> findvideorecord(); }
3. ServiceImpl層
package com.dvms.service.Impl; import com.dvms.dao.ParamoduleDao; import com.dvms.entity.Record; import com.dvms.entity.Video; import com.dvms.service.ParamoduleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; /* *檔名: ParamoduleServiceImpl *建立者: CJW *建立時間:2022/1/15 10:55 *描述: TODO */ @Service public class ParamoduleServiceImpl implements ParamoduleService { @Autowired private ParamoduleDao paramoduleDao; //查出視訊檔地址 @Override public String findvideo(String id){ return paramoduleDao.findvideo(id); } //查出視訊記錄 @Override public List<Video> findvideorecord(){ return paramoduleDao.findvideorecord(); } }
4. dao(mapper)層
package com.dvms.dao; import com.dvms.entity.Record; import com.dvms.entity.Video; import org.springframework.stereotype.Repository; import java.util.List; import java.util.Map; /* *檔名: ParamoduleDao *建立者: CJW *建立時間:2022/1/15 10:52 *描述: TODO */ @Repository public interface ParamoduleDao { String findvideo(String id); List<Video> findvideorecord(); }
4. entity(pojo)層
package com.dvms.entity; /* *檔名: Video *建立者: CJW *建立時間:2022/4/14 16:17 *描述: TODO */ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; import lombok.experimental.Accessors; @Data @ToString @AllArgsConstructor @NoArgsConstructor @Accessors(chain = true) //鏈式呼叫 public class Video { private String id; private String filename; private String filepath; }
5. daoMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dvms.dao.ParamoduleDao"> <!--查詢存在視訊--> <select id="findvideo" resultType="String"> select filepath from video where id=#{id} </select> <!--查詢存在視訊記錄--> <select id="findvideorecord" resultType="Video"> select id,filename,filepath from video </select> </mapper>
6. video資料庫表結構
前端需引入thymeleaf、bootstrap等
1. videorecord.html
<div class="main col-md-9 ml-sm-auto col-lg-10 pt-3 px-4"> <!-- MAIN CONTENT --> <div class="main-content"> <div class="container-fluid"> <h3 class="page-title">視訊管理</h3> <div class="row"> <div class="col-md-15"> <!-- BASIC TABLE --> <div class="panel"> <div class="panel-heading"> <div><h3 class="panel-title" style="color: #0f0f0f">視訊記錄</h3></div> <!--<hr style="color: #6ecadc">--> </div> <div class="panel-body"> <table class="table table-bordered table-sm table-hover"> <tr class="table_header" style="background-color: #009bc8;color: #0f0f0f"> <td hidden> ID </td> <td class="text-center"> 視訊檔名 </td> <td class="text-center"> 操作 </td> </tr> <tr th:class="${rowstate.odd}?'row1':'row2'" th:each="video,rowstate:${videorecord.list}"> <td hidden> <span th:text="${video.id}"></span> </td> <td class="text-center"> <span th:text="${video.filename}"></span> </td> <td class="text-center"> <a type="button" class="btn btn-info btn-xs" th:href="@{/angle/findvideo(id=${video.id},filenamev=${video.filename})}" rel="external nofollow" >播放</a> <a type="button" class="btn btn-info btn-xs" th:href="@{/angle/findvideo(id=${video.id})}" rel="external nofollow" >下載</a> </td> </tr> </table> <div class="modal-footer no-margin-top"> </div> </div> </div> <!-- END CONDENSED TABLE --> </div> </div> </div> </div> <!-- END MAIN CONTENT --> </div>
2. videoshow.html
<div class="main col-md-9 ml-sm-auto col-lg-10 pt-3 px-4"> <!-- MAIN CONTENT --> <div class="main-content"> <div class="container-fluid"> <h3 class="page-title">播放視訊範例</h3> <div class="panel"> <div class="panel-body"> <div class="dropdown" > <a ><span>當前播放視訊:</span><span style="color: #0f0f0f" th:text="${videoname}"></span></a> </div> </div> </div> <div class="col-md-15"> <!-- BASIC TABLE --> <div class="panel"> <div class="panel-heading"> <div class="panel-body"> <table class="table table-sm table-hover"> <tr style="background-color: #FEFFFD;color: #FEFFFD"> <td> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX </td> <td style="text-align: center"> <!--<img th:src="${imageurl}">--> <video align="center"width="800" height="550" controls> <source th:src="${videourl}" type="video/mp4"> 您的瀏覽器不支援 HTML5 video 標籤。 </video> </td> <td> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX </td> </tr> </table> <div class="modal-footer no-margin-top"> </div> <div> </div> </div> </div> </div> </div> </div> </div> <!-- END MAIN CONTENT --> </div>
到此這篇關於SpringBoot + thymeleaf 實現讀取視訊列表並播放視訊的文章就介紹到這了,更多相關SpringBoot thymeleaf 視訊內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45