发送动态生成的javascript文件

cra*_*man 6 javascript java servlets

背景:

我有一个servlet,我在其中动态生成javascript并放入变量script.然后我将响应内容类型设置为text/javascript,并将脚本发送到客户端:

resp.setContentType("text/javascript");
resp.getWriter().println(script);
Run Code Online (Sandbox Code Playgroud)

问题:

浏览器确实下载了javascript文件,但它无法识别文件中的函数.如果我创建一个静态javascript文件并使用它,它工作正常.

题:

应该做什么,以便浏览器将来自servlet的响应视为常规javascript文件?

谢谢你的帮助.

Bal*_*usC 6

它应该工作正常.我怀疑你只是以错误的方式包含它或过早地调用函数或者响应内容格式错误.

我刚做了一个快速测试:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>SO question 6156155</title>
        <script src="javaScriptServlet"></script>
        <script>test()</script>
    </head>
    <body>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

@WebServlet(urlPatterns={"/javaScriptServlet"})
public class JavaScriptServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/javascript");
        response.getWriter().write("function test() { alert('peek-a-boo'); }");
    }

}
Run Code Online (Sandbox Code Playgroud)

我明白了

在此输入图像描述