1

我想在我的 jsp 页面上嵌入和播放视频文件。我做了什么,我做了一个jsp,然后在上面放了下面的标签:

<EMBED SRC="${pageContext.request.contextPath}/home/Hibernate.mp4" WIDTH="200" HEIGHT="100" AUTOPLAY="TRUE" LOOP="true"></EMBED>

但问题是它总是试图在我的war文件中找到视频,即如果我将视频保存在我的war文件中,如下文件夹结构/home/Hibernate.mp4,那么只有我可以播放。

但是我需要在我的 jsp 上播放很多视频,所以想把所有视频都保存在我的服务器上的某个地方。

那么我应该怎么做才能玩这些。我应该使用servlet然后读取视频的字节并将它们放在out.println ...

请帮忙。

4

1 回答 1

0

你需要一个 servlet 人。
考虑电影位于/home/movie路径下的服务器。
因此,您需要提供一个 servlet 来打开所需的电影并将其响应给客户端。
例如,http://127.0.0.1:8080/showmov?name=pulse1995.mpg
这里的客户端请求/showmov是一个 servlet,这个 servlet 只是获取请求参数(id)并在电影文件夹中搜索并响应它。

package test;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/showmov")
public class ShowMovie extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String id=request.getParameter("id");
        if(id!=null && !id.equals("")){
          FileInputStream fis=new FileInputStream("/home/moview/"+id);
          response.setContentType("movie/mpeg");//not sure about this mime type
          response.setContentLength((int) fis.getChannel().size());
          int r;
          byte[] buff=new byte[1024];
          while((r=fis.read(buff))==buff.length){
            response.getOutputStream().write(buff);
          }
          response.getOutputStream().write(buff,0,r);
          response.getOutputStream().flush();
        }else{
          //maybe show a list
        }
    }
}
于 2013-11-09T12:20:02.013 回答