Jsp没有显示swf文件

时间:2014-12-15 07:35:33

标签: java jsp tomcat servlets

我有一个带JavaEE的Webproject(Tomcat,Jsp,Servlets)

我想在我的Jsp页面中显示一个SWF(game.jsp)。为了做到这一点,我需要一个Servlet,就是这样:

package src;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletContext;
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 util.SystemEnviroement;

/**
 * Servlet implementation class ImageServlet
 */
@WebServlet("/ImageServlet")
public class ImageServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;


/**
 * @see HttpServlet#HttpServlet()
 */
public ImageServlet() {
    super();
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {

    ServletContext sc = getServletContext();
    String imageName = request.getParameter("imageName");


    SystemEnviroement env = new SystemEnviroement();

        String filename = env.gameFolder + "/" + imageName;

        // Get the MIME type of the image
        String mimeType = sc.getMimeType(filename);
        if (mimeType == null) {
            // sc.log("Could not get MIME type of " + filename);
            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
            return;
        }

        // Set content type
        response.setContentType(mimeType);

        // Set content size
        File file = new File(filename);
        response.setContentLength((int) file.length());

        // Open the file and output streams
        FileInputStream in = new FileInputStream(file);
        OutputStream out = response.getOutputStream();

        // Copy the contents of the file to the output stream
        byte[] buf = new byte[1024];
        int count = 0;
        while ((count = in.read(buf)) >= 0) {
            out.write(buf, 0, count);
        }

        in.close();
        out.close();


}

}

我的game.jsp是这样的:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ page import="util.*"%>
<%@ page import="constants.*"%>
<%@ page import="java.io.IOException"%>

<!DOCTYPE html>
<html >
<head>
<jsp:include page='header.jsp'/>
<% 
String gamename = (String) request.getAttribute("javax.servlet.forward.request_uri");
int index_name = gamename.lastIndexOf("/");

gamename = gamename.substring(index_name+1,gamename.length());



%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">


</head>
<body style="background-color:#630592; 
      background-repeat:no-repeat;"
>


<div class="body">

        <%

        try {
            //SystemEnviroment wird im Konstruktor gesetzt
            SystemEnviroement en = new SystemEnviroement();
            String datei = en.imageViewPath + gamename +".swf";
    %>



    <div class=gameswf>
        <a> <embed src='<%=datei %>'  > </embed> </a>
    </div>


    <%  
    }catch(IOException e){
        e.printStackTrace();
    }
    %>

</div>

</body>
</html>

所以我调试了我的项目,所有人都认为看起来很好。但是在调用Servlet之后,game.jsp不会显示SWF文件。

htmltext(源代码)看起来也不错,但是game.jsp没有显示SWF文件:

<div class=gameswf>
        <a> <embed src='http://localhost:8080/Game/imageView?imageName=3-pandas.swf'>   </embed> </a>
    </div>

如果我在正在运行的网络项目"http://localhost:8080/Game/imageView?imageName=3-pandas.swf"中调用此URL,我可以出售SWF文件,一切都很好。

你知道为什么jsp页面不显示我的SWF文件。如果我去Internet Explorer添加,我也可以看到Shockwave Flash对象正在加载。

感谢您的帮助!

这是来自开发者工具的11网络监控功能的图像:

enter image description here

1 个答案:

答案 0 :(得分:0)

我建议您创建一个html文件(带有html扩展名)并编写您希望从jsp生成的代码。 一旦你在swd文件中使用swf工作,开发适当的jsp代码以生成那个html文件将是一块蛋糕。