Java HTML 5视频标记无法从Tomcat工作(已编辑)
未使用文件的绝对路径和相对路径从Tomcat 7服务器播放视频: 编辑摘要:更改了相对路径的示例,我将视频放在应用程序根文件夹中(仍然无法解决视频错误) 我们正在为本地使用的视频观看构建一个小型应用程序。由于HTML-5为我们提供了对视频观看的巨大支持,我们选择使用简单的Servlet/JSP编写一个程序,将其部署在Tomcat7Web服务器上 应用逻辑如下:Java HTML 5视频标记无法从Tomcat工作(已编辑),java,html,jakarta-ee,tomcat,tomcat7,Java,Html,Jakarta Ee,Tomcat,Tomcat7,未使用文件的绝对路径和相对路径从Tomcat 7服务器播放视频: 编辑摘要:更改了相对路径的示例,我将视频放在应用程序根文件夹中(仍然无法解决视频错误) 我们正在为本地使用的视频观看构建一个小型应用程序。由于HTML-5为我们提供了对视频观看的巨大支持,我们选择使用简单的Servlet/JSP编写一个程序,将其部署在Tomcat7Web服务器上 应用逻辑如下: 根路径(绝对路径)设置为tomcat中我的应用程序的根文件夹 根目录中的所有文件和目录都显示在旁边,旁边有一个“go”按钮 如果通过单击
<!doctype html>
<html>
<head>
<title>Cluster Video App</title>
<script type="text/javascript">
</script>
</head>
<body>
<h1>Enjoy the Video</h1>
<video controls autoplay width="512" height="288">
<source src="G:\\To-See\\Ravi_sir_joke.m4v"> </source>
</video>
</body>
</html>
package com.cluster.vapp.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.cluster.vapp.fileutils.FileUtil;
import com.cluster.vapp.fileutils.SearchResult;
import com.cluster.vapp.service.VappService;
import com.cluster.vapp.service.VappServiceImpl;
public class ControllerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private VappService service;
public void init() throws ServletException {
service = new VappServiceImpl();
}
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
// HttpSession session = request.getSession();
String strServletPath = request.getServletPath();
// debug
System.out.println(strServletPath);
// end of debug
int intServletpath = 0;
if (strServletPath.equalsIgnoreCase("/welcome.do")) {
intServletpath = 1;
}
if (strServletPath.equalsIgnoreCase("/verify.do")) {
intServletpath = 2;
}
if (strServletPath.equalsIgnoreCase("/searchRoot.do")) {
intServletpath = 3;
}
switch (intServletpath) {
case 1: {// welcome.do
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/welcome.jsp");
requestDispatcher.forward(request, response);
break;
}
case 2: { // verify.do
if (service.isVideoFile(request.getParameter("path_name"))) {
String strVideoPath = service.findRelative(request
.getParameter("path_name"));
request.setAttribute("VIDEO_PATH", FileUtil.adjustPathName(strVideoPath));
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/video.jsp");
requestDispatcher.forward(request, response);
}
else {
List<SearchResult> listSearchResults = service
.searchDirectory(request.getParameter("path_name"));
request.setAttribute("LIST_SEARCH_RESULT", listSearchResults);
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/search.jsp");
requestDispatcher.forward(request, response);
}
break;
}
case 3: {// searchRoot.do
List<SearchResult> listSearchResults = service
.searchRootDirectory();
request.setAttribute("LIST_SEARCH_RESULT", listSearchResults);
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/search.jsp");
requestDispatcher.forward(request, response);
break;
}
}
}
}
第一阶段:点击链接
第二阶段:选择要浏览的视频或文件夹
第三阶段:播放视频(这里我遇到了错误)
服务器在浏览器上呈现了以下HTML(从视图源复制):
<!doctype html>
<html>
<head>
<title>Cluster Video App</title>
<script type="text/javascript">
</script>
</head>
<body>
<h1>Enjoy the Video</h1>
<video controls autoplay width="512" height="288">
<source src="G:\\To-See\\Ravi_sir_joke.m4v"> </source>
</video>
</body>
</html>
package com.cluster.vapp.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.cluster.vapp.fileutils.FileUtil;
import com.cluster.vapp.fileutils.SearchResult;
import com.cluster.vapp.service.VappService;
import com.cluster.vapp.service.VappServiceImpl;
public class ControllerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private VappService service;
public void init() throws ServletException {
service = new VappServiceImpl();
}
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
// HttpSession session = request.getSession();
String strServletPath = request.getServletPath();
// debug
System.out.println(strServletPath);
// end of debug
int intServletpath = 0;
if (strServletPath.equalsIgnoreCase("/welcome.do")) {
intServletpath = 1;
}
if (strServletPath.equalsIgnoreCase("/verify.do")) {
intServletpath = 2;
}
if (strServletPath.equalsIgnoreCase("/searchRoot.do")) {
intServletpath = 3;
}
switch (intServletpath) {
case 1: {// welcome.do
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/welcome.jsp");
requestDispatcher.forward(request, response);
break;
}
case 2: { // verify.do
if (service.isVideoFile(request.getParameter("path_name"))) {
String strVideoPath = service.findRelative(request
.getParameter("path_name"));
request.setAttribute("VIDEO_PATH", FileUtil.adjustPathName(strVideoPath));
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/video.jsp");
requestDispatcher.forward(request, response);
}
else {
List<SearchResult> listSearchResults = service
.searchDirectory(request.getParameter("path_name"));
request.setAttribute("LIST_SEARCH_RESULT", listSearchResults);
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/search.jsp");
requestDispatcher.forward(request, response);
}
break;
}
case 3: {// searchRoot.do
List<SearchResult> listSearchResults = service
.searchRootDirectory();
request.setAttribute("LIST_SEARCH_RESULT", listSearchResults);
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/search.jsp");
requestDispatcher.forward(request, response);
break;
}
}
}
}
群集视频应用程序
欣赏视频
当同一个源被复制并粘贴到计算机中任意位置的html示例页面上时,视频工作正常。下图证明了这一点
编辑后:服务器渲染了包含视频的正确相对路径。 视频还没有播放
<!doctype html>
<html>
<head>
<title>Cluster Video App</title>
<script type="text/javascript">
</script>
</head>
<body>
<h1>Enjoy the Video</h1>
<video controls autoplay width="512" height="288">
<source src="../ROOT-VIDEO/Ravi_sir_joke.m4v" > </source>
</video>
</body>
</html>
群集视频应用程序
欣赏视频
视频显示在我的应用程序的根目录中:
<!doctype html>
<html>
<head>
<title>Cluster Video App</title>
<script type="text/javascript">
</script>
</head>
<body>
<h1>Enjoy the Video</h1>
<video controls autoplay width="512" height="288">
<source src="G:\\To-See\\Ravi_sir_joke.m4v"> </source>
</video>
</body>
</html>
package com.cluster.vapp.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.cluster.vapp.fileutils.FileUtil;
import com.cluster.vapp.fileutils.SearchResult;
import com.cluster.vapp.service.VappService;
import com.cluster.vapp.service.VappServiceImpl;
public class ControllerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private VappService service;
public void init() throws ServletException {
service = new VappServiceImpl();
}
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
// HttpSession session = request.getSession();
String strServletPath = request.getServletPath();
// debug
System.out.println(strServletPath);
// end of debug
int intServletpath = 0;
if (strServletPath.equalsIgnoreCase("/welcome.do")) {
intServletpath = 1;
}
if (strServletPath.equalsIgnoreCase("/verify.do")) {
intServletpath = 2;
}
if (strServletPath.equalsIgnoreCase("/searchRoot.do")) {
intServletpath = 3;
}
switch (intServletpath) {
case 1: {// welcome.do
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/welcome.jsp");
requestDispatcher.forward(request, response);
break;
}
case 2: { // verify.do
if (service.isVideoFile(request.getParameter("path_name"))) {
String strVideoPath = service.findRelative(request
.getParameter("path_name"));
request.setAttribute("VIDEO_PATH", FileUtil.adjustPathName(strVideoPath));
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/video.jsp");
requestDispatcher.forward(request, response);
}
else {
List<SearchResult> listSearchResults = service
.searchDirectory(request.getParameter("path_name"));
request.setAttribute("LIST_SEARCH_RESULT", listSearchResults);
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/search.jsp");
requestDispatcher.forward(request, response);
}
break;
}
case 3: {// searchRoot.do
List<SearchResult> listSearchResults = service
.searchRootDirectory();
request.setAttribute("LIST_SEARCH_RESULT", listSearchResults);
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/search.jsp");
requestDispatcher.forward(request, response);
break;
}
}
}
}
我已将编辑好的程序粘贴在本页中以供参考。请纠正我并帮助我清除视频错误
节目 包结构:
<!doctype html>
<html>
<head>
<title>Cluster Video App</title>
<script type="text/javascript">
</script>
</head>
<body>
<h1>Enjoy the Video</h1>
<video controls autoplay width="512" height="288">
<source src="G:\\To-See\\Ravi_sir_joke.m4v"> </source>
</video>
</body>
</html>
package com.cluster.vapp.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.cluster.vapp.fileutils.FileUtil;
import com.cluster.vapp.fileutils.SearchResult;
import com.cluster.vapp.service.VappService;
import com.cluster.vapp.service.VappServiceImpl;
public class ControllerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private VappService service;
public void init() throws ServletException {
service = new VappServiceImpl();
}
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
// HttpSession session = request.getSession();
String strServletPath = request.getServletPath();
// debug
System.out.println(strServletPath);
// end of debug
int intServletpath = 0;
if (strServletPath.equalsIgnoreCase("/welcome.do")) {
intServletpath = 1;
}
if (strServletPath.equalsIgnoreCase("/verify.do")) {
intServletpath = 2;
}
if (strServletPath.equalsIgnoreCase("/searchRoot.do")) {
intServletpath = 3;
}
switch (intServletpath) {
case 1: {// welcome.do
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/welcome.jsp");
requestDispatcher.forward(request, response);
break;
}
case 2: { // verify.do
if (service.isVideoFile(request.getParameter("path_name"))) {
String strVideoPath = service.findRelative(request
.getParameter("path_name"));
request.setAttribute("VIDEO_PATH", FileUtil.adjustPathName(strVideoPath));
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/video.jsp");
requestDispatcher.forward(request, response);
}
else {
List<SearchResult> listSearchResults = service
.searchDirectory(request.getParameter("path_name"));
request.setAttribute("LIST_SEARCH_RESULT", listSearchResults);
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/search.jsp");
requestDispatcher.forward(request, response);
}
break;
}
case 3: {// searchRoot.do
List<SearchResult> listSearchResults = service
.searchRootDirectory();
request.setAttribute("LIST_SEARCH_RESULT", listSearchResults);
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/search.jsp");
requestDispatcher.forward(request, response);
break;
}
}
}
}
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<!-- Welcome page -->
<!-- <welcome-file-list>
<welcome-file>/welcome.do</welcome-file>
</welcome-file-list> -->
<!-- JSF mapping -->
<servlet>
<servlet-name>Controller</servlet-name>
<servlet-class>com.cluster.vapp.controller.ControllerServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map these files with JSF -->
<servlet-mapping>
<servlet-name>Controller</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
控制器
com.cluster.vapp.controller.ControllerServlet
1.
控制器
*.做
控制器Servlet:
<!doctype html>
<html>
<head>
<title>Cluster Video App</title>
<script type="text/javascript">
</script>
</head>
<body>
<h1>Enjoy the Video</h1>
<video controls autoplay width="512" height="288">
<source src="G:\\To-See\\Ravi_sir_joke.m4v"> </source>
</video>
</body>
</html>
package com.cluster.vapp.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.cluster.vapp.fileutils.FileUtil;
import com.cluster.vapp.fileutils.SearchResult;
import com.cluster.vapp.service.VappService;
import com.cluster.vapp.service.VappServiceImpl;
public class ControllerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private VappService service;
public void init() throws ServletException {
service = new VappServiceImpl();
}
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
// HttpSession session = request.getSession();
String strServletPath = request.getServletPath();
// debug
System.out.println(strServletPath);
// end of debug
int intServletpath = 0;
if (strServletPath.equalsIgnoreCase("/welcome.do")) {
intServletpath = 1;
}
if (strServletPath.equalsIgnoreCase("/verify.do")) {
intServletpath = 2;
}
if (strServletPath.equalsIgnoreCase("/searchRoot.do")) {
intServletpath = 3;
}
switch (intServletpath) {
case 1: {// welcome.do
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/welcome.jsp");
requestDispatcher.forward(request, response);
break;
}
case 2: { // verify.do
if (service.isVideoFile(request.getParameter("path_name"))) {
String strVideoPath = service.findRelative(request
.getParameter("path_name"));
request.setAttribute("VIDEO_PATH", FileUtil.adjustPathName(strVideoPath));
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/video.jsp");
requestDispatcher.forward(request, response);
}
else {
List<SearchResult> listSearchResults = service
.searchDirectory(request.getParameter("path_name"));
request.setAttribute("LIST_SEARCH_RESULT", listSearchResults);
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/search.jsp");
requestDispatcher.forward(request, response);
}
break;
}
case 3: {// searchRoot.do
List<SearchResult> listSearchResults = service
.searchRootDirectory();
request.setAttribute("LIST_SEARCH_RESULT", listSearchResults);
RequestDispatcher requestDispatcher = request
.getRequestDispatcher("./JSP/search.jsp");
requestDispatcher.forward(request, response);
break;
}
}
}
}
package com.cluster.vapp.controller;
导入java.io.IOException;
导入java.util.List;
导入javax.servlet.RequestDispatcher;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入com.cluster.vapp.fileutils.FileUtil;
导入com.cluster.vapp.fileutils.SearchResult;
导入com.cluster.vapp.service.VappService;
导入com.cluster.vapp.service.VappServiceImpl;
公共类ControllerServlet扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
私人车辆通行证服务;
public void init()引发ServletException{
服务=新的VappServiceImpl();
}
受保护的无效服务(HttpServletRequest),
HttpServletResponse响应)引发ServletException,IOException{
response.setContentType(“text/html”);
//HttpSession session=request.getSession();
字符串strServletPath=request.getServletPath();
//调试
System.out.println(strServletPath);
//调试结束
int intServletpath=0;
if(strServletPath.equalsIgnoreCase(“/welcome.do”)){
intServletpath=1;
}
if(strServletPath.equalsIgnoreCase(“/verify.do”)){
intServletpath=2;
}
if(strServletPath.equalsIgnoreCase(“/searchRoot.do”)){
intServletpath=3;
}
交换机(intServletpath){
案例1:{//welcome.do
RequestDispatcher=request
.getRequestDispatcher(“./JSP/welcome.JSP”);
转发(请求、响应);
打破
}
案例2:{//verify.do
if(service.isVideoFile(request.getParameter(“路径名称”)){
字符串strVideoPath=service.findRelative(请求
.getParameter(“路径名称”);
setAttribute(“VIDEO_PATH”,FileUtil.adjustPathName(strVideoPath));
RequestDispatcher=request
.getRequestDispatcher(“./JSP/video.JSP”);
转发(请求、响应);
}
否则{
List listSearchResults=服务
.searchDirectory(request.getParameter(“路径名称”);
setAttribute(“列表搜索结果”,列表搜索结果);
RequestDispatcher=request
.getRequestDispatcher(“./JSP/search.JSP”);
转发(请求、响应);
}
打破
}
案例3:{//searchRoot.do
List listSearchResults=服务
.searchRootDirectory();
setAttribute(“列表搜索结果”,列表搜索结果);
RequestDispatcher=request
.getRequestDispatcher(“./JSP/search.JSP”);
转发(请求、响应);
打破
}
}
}
}
<