1.首先都是jsp里使用输出内容的表达式
2.c:out输出时,<c:out>标签会自动忽略XML标记字符,所以它们不会被当做标签来处理,原因是因为有个属性值escapeXml,默认为true是忽略xml的特殊字符,也就是是什么内容就输出什么内容,不用转义为其他的,例如:有跨域攻击时student.name = <script>alert("hello world!")</script>,${student.name}将会执行,而c:out则不会,直接输出字符串。
3.${}输出时,字符会被转义,js会被执行
4.c:out 有个缺省属性escapeXML="true" 将会对特色字符如 ‘<‘ ‘>‘ ‘&‘ 等进行转义,而EL表达式则不会。但是如果为false,则是与${}功效一致
其中,有个地方需要注意:
使用springmvc form,sf:input时,c:out不起作用,c:out直接作为字符串一部分输出,所以要改成原生的input