![](/img/trans.png)
[英]Call Servlet and invoke Java code from JavaScript along with parameters
[英]call javascript from servlet in java?
我想从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中调用它,也可以作为对某些客户端事件的响应( onclick
, onload
等)。
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
这样做。 这样我们就可以得到文件网址了。
如何将响应从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
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.