【问题标题】:call javascript from servlet in java?从java中的servlet调用javascript?
【发布时间】:2015-10-07 03:52:58
【问题描述】:

我想从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调用但它显示代码内容但不执行它。 我怎样才能得到文件URL。

【问题讨论】:

  • 为什么不调用html、jsp并导入js呢?
  • 嗯,你试图完成一些错误的事情,我建议你尝试不同的事情。
  • 我不知道如何从 servlet 调用 html 代码。我只想要fileUrl,但不知道如何获取它。你能帮忙吗?
  • 你能不能给我一个建议
  • 你可以把所有的html标签和javascript一起放在一个字符串中,并可以使用servlet将它们写入响应

标签: javascript java servlets


【解决方案1】:

这里有几处是错误的:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      RequestDispatcher 接口提供了将请求分派到另一个资源的便利,它可能是htmlservletjsp。但不是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

      使用ajaxjquery 在同一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 中调用这个servlet 使用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  
              }
          });
      

      【讨论】:

      • 先生,实际上我们只使用 couchDb 作为文档数据库。我们不想以 blob 格式存储我们的视频,我们只想将我们的视频 http url 转换为 blob http url,就像 youtube 一样。我只想将文件对象从servelt 发送到javascript。如果我使用 html 那么我应该如何传递文件对象。我真的陷入了这个问题。请帮忙
      • @monika,所以你应该使用jqueryajax。在您的html 页面中使用ajax 致电您的servlet。所以这个servlet 的响应(意味着文件网址)将来自您的html 页面将此响应传递给您的js
      • 所有代码仍然按原样显示在警报中。我只是从调度程序调用 html 并执行用 html 编写的 jsp .. 它不是执行只是显示在警报中。
      • 我没明白。请更新您的代码。所以我看不到你所面临的问题。@monika
      猜你喜欢
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 2012-07-05
      • 1970-01-01
      相关资源
      最近更新 更多