EL表达式c:out和JSTL中${}的区别

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

 

猜你喜欢

转载自lililucky1211.iteye.com/blog/2390814