jsp页面中,alert()参数为变量的时候不弹窗,常量的时候正常,什么原因?

在写用户登录的时候想添加一下错误信息,出现了alert不弹窗的问题

        <%
            String log = (String)request.getAttribute("log");
            out.print("log的值是:"+log);
            if(log!=null){
        %>
        <script type="text/javascript">
            alert(log);
        </script>
        <%
            }
        %>

        </script><br/>
        <form action="login.action" method="post">
            用户名<input type="text" name="userID">  
            密    码<input type="password" name="userPassword">
                           用户类型<select name = "userType">
                    <option>家长</option>
                    <option>教师</option>
                    <option>管理员</option>
                </select>
                <input type="submit" value = "登录" >
        </form>
</body>

alert(log),没有弹窗
图片说明

alert("111111"),有弹窗
图片说明

哪位大佬能帮萌新解答一下疑惑

js 变量和 jsp 中的变量混掉了,如果要在 js 中引用 jsp 定义的变量必须使用 %。js 引用 jsp 指令中的变量不能直接用,修改为:

alert("<%=log%>");

log变量是工作在jsp的上下文里,alert时传入的是javascript上下文里的变量
然后javascript上下文里并没有定义过log变量,所以会触发javascript的语法错误。