java - 如何防止执行jsp scriptlet?
问题描述
当我运行程序时,条件内的两个语句都被执行了
<script>
if (true) {
<%System.out.println("true");%>
} else {
<%System.out.println("false");%>
}
</script>
解决方案
Java 和 JavaScript 完全不同——尽管它们的名称相似。它们与“疼痛”和“绘画”这两个词有很多共同点。
- JSP 代码在用户收到页面之前在服务器中执行。
- 在服务器执行完所有代码、组装页面并将其传送到用户的浏览器之后,JavaScript 在最终用户的计算机上执行。
服务器不处理除 JSP 标记或已知标记库(如 JSTL)之外的任何 JSP 内容。该<script>
元素及其内容只是按原样添加到最终页面,而不会被解释或执行。
换句话说,if (true)
对服务器没有任何意义。它忽略 JavaScript,只执行<%
...<code>%> 部分。
当页面最终交付给浏览器时,源代码将包含以下内容:
<script>
if (true) {
} else {
}
</script>
…因为 JavaScript 没有在服务器端以任何方式处理。HTML 页面中的 JavaScript 在浏览器中运行,而不是在服务器上。
你可能想要这样的东西:
<%
if (true) {
System.out.println("true");
} else {
System.out.println("false");
}
%>
并不是说上面不需要在一个<script>
元素中,实际上把它放在一个元素中是没有意义的——因为它<script>
包含 JavaScript,这是服务器端的 Java 代码,而不是 JavaScript。
推荐阅读
- c - 编译器不使用 makefile 识别标志
- mysql - 在编译器上显示错误代码“CS1061”
- r - 从 R 中的维基百科中提取特定表格
- python - 如何在csv文件的每个逗号后添加换行符?
- python - 来自另一个df的具有多个条件的熊猫数据框布尔索引
- database - 为什么我应该为集合和文档使用生成的 ID(例如:firestore)
- weka - 应用任何过滤器时,Weka 工具不会出现任何变化
- r - R错误:新列会在现有列之后留下孔;如何解决这个问题?
- python - 如何在 for 循环中从 PRAW 访问帖子
- python - 如何传递来自不同 tkinter 小部件的多个参数?