Java HTML 5视频标记无法从Tomcat工作(已编辑)

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”按钮 如果通过单击

未使用文件的绝对路径和相对路径从Tomcat 7服务器播放视频:

编辑摘要:更改了相对路径的示例,我将视频放在应用程序根文件夹中(仍然无法解决视频错误)

我们正在为本地使用的视频观看构建一个小型应用程序。由于HTML-5为我们提供了对视频观看的巨大支持,我们选择使用简单的Servlet/JSP编写一个程序,将其部署在Tomcat7Web服务器上

应用逻辑如下:

  • 根路径(绝对路径)设置为tomcat中我的应用程序的根文件夹
  • 根目录中的所有文件和目录都显示在旁边,旁边有一个“go”按钮
  • 如果通过单击“转到”选择文件夹中的视频文件,则会显示视频查看页面
  • 使用表达式langauge(EL)将视频文件的相对值提供给视频页面,以获得视频标记的源
  • 视频应该从本地主机的硬盘播放到所有浏览器端点
  • 我面临的问题是,我的视频不是从tomcat服务器播放的,而是在浏览器上复制并粘贴到文件时呈现的html“源”代码。视频工作正常。如何让它在tomcat服务器上工作

    编辑后:我修改了我的应用程序以调整tomcat myapp根文件夹中的相对路径,但它仍然不工作。下面是经过编辑的问题

    我的应用程序的屏幕短片是:

    <!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”);
    转发(请求、响应);
    打破
    }
    }
    }
    }
    <