当前位置: 代码迷 >> JavaScript >> 从java中的servlet调用javascript?
  详细解决方案

从java中的servlet调用javascript?

热度:102   发布时间:2023-06-12 14:22:20.0

我想从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源是不合适的,因为必须始终在HTML文件中包含(或引用)javascript。 相反,在您的情况下,您正在提供MP4文件。

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

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

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

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

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

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

这样做。 这样我们就可以得到文件网址了。

如何将响应从servlet传递给html

使用带有jquery ajax在相同的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调用此servlet

  $.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  
        }
    });
  相关解决方案