EL,即Expression Language。在JavaWeb中属于JSP技术。java
JSP中的表达式:Java脚本表达式<%=Java表达式%>
;EL表达式${EL表达式}
。web
JavaWeb中最好不要在JSP中写Java代码,因此用EL表达式来替代Java表达式。数组
${stu.name}
,即调用域中stu
对应的对象的name
的读属性getName()
。但,若stu在4个域中没有绑定相应对象,那么就在网页上输出空字符串(即什么都不输出)。${stu.name}
至关于:安全
<% Student stu=pageContext.getAttribute("stu"); if(stu!=null) out.println(stu.getName()); %>
${stu['name']}
或者${stu["name"]}
。与点运算符做用同样,但当索引或者名称不符合Java名称规范时(如,获取数组中的某个值),只能用[]运算符。${obj.list[1]}
,Map按照指定的key来获取元素:${obj.map.key}
或者${obj.map['key']}
。+-*/
。如${i+1}
${表达式?T表达式:F表达式}
。如${a>1?a+1:a-1}
${str+str}
,这是错误的。EL内置对象(或隐式对象),即在EL表达式中能够直接调用的对象。总结起来就是有一个JSP对象,十个Map对象。cookie
Map<String,String[])
,key为请求参数名,value为请求参数的值数组。Map<String,String[]>
,key为请求名,value为请求头值数组。Map<String,Cookie>
,key为cookie的name属性,value为cookie对象自己。 1 2 3 4 5 6 7 |
package net.codingXiax.util; public class StringUtil{ public static String toUppercase(String str){ return "字符串"; } } |
在Web-INF目录下(也能够在其余目录下,该目录下创建安全性更高),创建一个扩展名为tld的xml文件。session
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?xml version="1.0" encoding="UTF-8"?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> <short-name>myfn</short-name> <uri>http://www.yrom.net/jsp/string/fn</uri> <function> <name>toUppercase</name> <function-class>net.yrom.util.StringUtil</function-class> <function-signature>java.lang.String toUpperCase( java.lang.String )</function-signature> </function> </taglib> |
若是tld文件是在Web-INF目录或类路径下,此步可跳过。app
1 2 3 4 5 6 |
<jsp-config> <taglib> <taglib-uri>http://www.yrom.net/jsp/string/fn</taglib-uri> <taglib-location>/WEB-INF/myfn.tld</taglib-location> </taglib> </jsp-config> |
注意应先用taglib指令引入该uri。jsp
1 2 3 4 5 6 7 8 9 |
<%@ taglib uri="/该tld所在位置" prefix="myfn" %> ... <body> <% pageContext.setAttribute("a","aaa"); %> ${myfn:toUppercase(a)} </body> ... |