32-JSP标签技术-EL标签
目录
JSP标签技术
在JSP页面中写入大量的java代码会导致JSP页面中html代码和java代码混杂在一起,会造成jsp页面结构的混乱,导致后期难于维护,并且代码难以复用。
于是在JSP的2.0版本中,sun提出了JSP标签技术,推荐使用标签来代替JSP页面中java代码,并且推荐,JSP2.0以后不要在JSP页面中出现任何一行java代码。
EL表达式
格式:${ 常量/表达式/变量 }	(放在EL中的变量得先存入域中,才可以获取变量的值)
作用:
- 计算放在其中的表达式的结果,将结果输出在当前位置。
 - 主要作用:用于从域对象中获取数据,将获取到的数据输出在当前位置。
 
域对象:
pageContext、request、session、application
EL的使用
常量、表达式、变量
获取常量
将Hello EL输出到浏览器
${"Hello EL"}
获取表达式结果
如果3>5成立, 输出yes, 否则输出no
${ 3 > 5 ? "yes" : "no" }
可以在或括号里进行运算, 例如;${3 + 5}
获取变量
(变量得先存入域中)
在EL中书写变量, 底层会根据变量的名字, 到四个作用域中寻找同名的属性,如果可以找到, 就会输出这个属性对应value值, 如果找不到, 就什么也不输出(也不会报错)
在寻找时, 会按照如下作用域的顺序去找对应的属性,  先->后
pageContext、request、session、application
如果找到就直接返回(即使后面还有也不会再寻找), 如果找不到, 就什么也不输出
| jsp对象 | EL作用域对象 | 
|---|---|
pageContext | 
pageScope | 
request | 
requestScope | 
session | 
sessionScope | 
application | 
applicationScope | 
例如:
<%
    request.setAttribute("name", "jack");
    session.setAttribute("name", "tom");
%>
 <!--按循序查找, request的优先级比session高, 所以输出jack-->
${ name } <br>
<!--指定作用域的name, 输出session中的name-->
${ sessionScope.name }
结果;(浏览器输出页面)
jack
tom
获取作用域中数组或集合中的元素
获取数组或集合元素
例如:
<%
    String[] names = {
        "孙尚香", "黄忠", "马可波罗", "成吉思汗"
    };
    request.setAttribute("names", names);
    List list = new ArrayList();
    list.add("安其拉");
    list.add("小乔");
    list.add("王昭君");
    request.setAttribute("list", list);
%>
${names[0]} <br> <!--显示names数组中下标为0的元素-->
${names[1]} <br> <!--显示names数组中下标为1的元素-->
${list[2]} <br><!--显示list集合中下标为2的元素-->
${list[3]} <!--list集合中没有下标为3的元素, 什么都不输出-->
结果: (浏览器页面)
孙尚香
黄忠
王昭君
获取作用域中map集合中的元素
获取map元素
例如:
<%
    Map map = new HashMap();
    map.put("name", "尼古拉斯.赵四");
    map.put("age", 32);
    map.put("addr", "中国");
    request.setAttribute("map1", map);
%>
${map1.name} <br> <!--获取key为name的value-->
${map1.age} <br> <!--获取key为age的value-->
${map1.addr} <!--获取key为addr的value-->
结果: (浏览器页面)
尼古拉斯.赵四
32
中国
获取作用域中JavaBean对象的属性值
获取对象中的属性
例如:
<%
    // 声明一个User对象,并将User对象存入域中
    User u1 = new User();
    u1.setName("刘德华");
    u1.setAge(18);
    u1.setAddr("中国香港");
    request.setAttribute("user", u1);
%>
${user.getName()} <br> <!--完整写法, 获取name属性}-->
${user.age} <!--简写法, 获取age-->
结果:(浏览器页面)
刘德华
18
                
            
        
浙公网安备 33010602011771号