在java中从servlet调用javascript?

在java中从servlet调用javascript?,javascript,java,servlets,Javascript,Java,Servlets,我想从servlet调用javascript函数 servlet代码: File ff = new File(uploadedFile+"/"+fileName+".mp4"); FileOutputStream fileOutSt = new FileOutputStream( ff ); fileOutSt.write(data); fileOutSt.close(); request.setAttribute("src", ff); RequestDispatcher dispa

我想从servlet调用javascript函数

servlet代码:

File ff = new File(uploadedFile+"/"+fileName+".mp4");

FileOutputStream fileOutSt = new FileOutputStream( ff );

fileOutSt.write(data);

fileOutSt.close();

request.setAttribute("src", ff);

RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsfunction.js");
dispatcher.include(request, response);
我的javascript代码:

myfunction(fileInput)
{
  var fileUrl = window.URL.createObjectURL(fileInput);
}
问题是javascript调用,但它显示代码内容,但不执行它。
如何获取fileURL。

javascript在客户端播放,Servlet在服务器端播放。您不能在服务器端执行Javascript。它应该通过浏览器执行


我建议您在window onload中进行javascript调用。

RequestDispatcher
接口提供了将请求分派到另一个资源的工具,它可能是
html
servlet
jsp
。但不适用于
JS
。因为
JS
总是在浏览器本身中运行

request.setAttribute("filename",filenamehere); //put filename    
RequestDispatcher requestDispatcher; 
requestDispatcher = request.getRequestDispatcher("/filename.jsp");//dispatch here
requestDispatcher.forward(request, response);
filename.jsp中

String value = (String)request.getAttribute("filename");//getting filename
像这样做。这样我们将获得文件url

如何将响应从
servlet
传递到
html

使用
ajax
jquery
在相同的
html
中调用您的
servlet

servlet中

    //getting input from `html` page
    String userName = request.getParameter("userName").trim();
    //now process your request here
    //forward response to `html` page
    response.setContentType("text/plain");
    response.getWriter().write("your file url");
html
中,使用
ajax

  $.ajax({
        url : 'yourservletaction',
        data : {
            userName : $('#userName').val()//if you want to send any input do like this
        },
        success : function(responseText) {
            $('#ajaxGetUserServletResponse').text(responseText);//getting file url as response. so use this url in you js  
        }
    });

这里有几个问题:

首先,包含javascript源代码是不正确的,因为javascript必须始终包含(或引用)在HTML文件中。在您的情况下,您提供的是一个MP4文件

如果您必须绝对执行js代码(记住js总是在浏览器中执行),我建议您提供HTML页面。在这种情况下,必须在HTML代码中引用jsfunction.js脚本:

<html>
<head>
<script type="text/javascript" src="jsfunction.js" />
</head>
<body>
...
</body>
</html>

...

第二:即使包含脚本,也必须调用函数。您可以立即从scriptlet调用它,或者作为对某个客户端事件的响应(
onclick
onload
,等等)。

为什么不调用html、jsp并将js导入其中呢?如果您试图完成一些错误的事情,我建议您尝试另一种方法。我不知道如何从servlet调用html代码。我只想要文件URL,但不知道如何获得它。你能帮我个忙吗?你能给我推荐另一个主意吗?你可以把所有的html标签和javascript放在里面,比如说一个字符串,然后用servletsSir把它们写进一个响应中,实际上我们只使用couchDb作为文档数据库。我们不想以blob格式存储视频,我们只想将视频http url转换为blob http url,就像youtube一样。我只想将文件对象从servelt发送到javascript。如果我使用的是html,那么我应该如何传递文件对象。我真的陷入了这个问题。plzzhelp@monika,因此您假设将
jquery
ajax
一起使用。在
html
页面中使用
ajax
调用您的
servlet
。因此,响应(表示文件url)此
servlet
将出现在您的
html
页面中,并将此响应传递给您的
js
。所有代码仍按原样显示在警报中。我只是从dispatcher调用html并执行用html编写的jsp。。它不是在警报中显示的。我没有得到它。请更新你的代码。这样我就知道你面临的问题了。@monika