发送动态生成的javascript文件

| 背景: 我有一个servlet,我在其中动态生成JavaScript并将其放入变量
script
。然后,将响应内容类型设置为
text/javascript
并将脚本发送给客户端:
resp.setContentType(\"text/javascript\");
resp.getWriter().println(script);
问题: 浏览器会下载javascript文件,但无法识别该文件中的功能。如果我创建一个静态javascript文件并改用它,则可以正常工作。 题: 为了使浏览器将来自Servlet的响应视为普通的javascript文件,应该怎么做? 谢谢你的帮助。     
已邀请:
        它应该工作正常。我怀疑您只是以错误的方式包含了它,或者过早调用了该函数,或者响应的内容格式不正确。 我只是做了一个快速测试:
<!DOCTYPE html>
<html lang=\"en\">
    <head>
        <title>SO question 6156155</title>
        <script src=\"javaScriptServlet\"></script>
        <script>test()</script>
    </head>
    <body>
    </body>
</html>
@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\'); }\");
    }

}
我得到     
        您如何从浏览器中引用此servlet? 如果要将其包含在HTML页面(现有页面)中,则应从页面的标记中引用它。 例如
<html>
<head>
<script type=\'text/javascript\' src=\'URL_TO_YOUR_SERVLET\'></script>
</head>
</html>
或者,如果您希望将其作为Ajax调用的一部分执行,只需将响应传递给eval函数。 否则,如果您只想发送输出并在浏览器中执行它,则还需要发送HTML段。然后将您的JS作为脚本标签包含在body标签中。 例如您的servlet使用内容类型\'text / html \'发送以下内容:
<html>
<body>
 <script type=\'text/javascript\'>
     <!-- write your generated JS here -->
 </script>
</body>
</html>
    
        您始终可以将脚本“在线”写入网页。     
        我认为这样更好。
<%@ page language=\"java\" contentType=\"text/javascript; charset=UTF-8\" pageEncoding=\"UTF-8\"%>
alert(\'Pure JavaScript right here!\');
在JSP中设置内容类型:
contentType=\"text/javascript; charset=UTF-8\"
    

要回复问题请先登录注册