1.EL表达式
expression language表达式语言,可以直接在jsp页面上用.作用:可以直接从四 大范围(page->request->session->application)内取出值.
1.1:el表达式的语法:${Key}
1.2:如果el表达取值时不带范围,依次从page->request->session->application寻找Key 所对应的value,如果从page范围内找到值,就不会再从后面的范围寻找.
1.3:如果el表达按指定范围内取值时,如果这个范围内找到这个key所对应的值就显示,否 则就不显示.
eg:<!-- 在指定范围内存值 -->
<h2>${pageScope.sname }</h2>
<h2>${requestScope.sname }</h2>
<h2>${sessionScope.sname }</h2>
<h2>${applicationScope.sname }</h2>
1.4:如果${Key}的Key不存在或者通过key得到null或""的值就不显示不报错不占页面位 置,不会报null.
1.5:在el表达式中可以直接用java中运算符.
1.6:判断el表达式中值是否是null或""用: e m p t y k e y 或 {empty key}或 emptykey或{!empty key}
1.7:el表达式有自动类型转换作用
eg:<%
//将数据存在page范围内
pageContext.setAttribute("sname", "吴鹏程");
//同一个范围内Key名相同,value覆盖
pageContext.setAttribute("sname", "唐志亮");
//将数据存在request范围内
request.setAttribute("sname", 18);
//将数据存在session范围内
session.setAttribute("sname", "man");
//将数据存在application范围内
application.setAttribute("sname", "爱好女");
//将对象存在request范围内
Student student1=new Student("悌子君", "123456", "man", "aa@qq.com", "rap", "西安");
request.setAttribute("stu1", student1);
//将list集合存在request范围内
//创建集合
List<Student> stuList=new ArrayList();
//向集合中添加元素
stuList.add(new Student("aa", "123456", "man", "aa@qq.com", "rap", "西安"));
stuList.add(new Student("bb", "123456", "man", "aa@qq.com", "rap", "西安"));
stuList.add(new Student("cc", "123456", "man", "aa@qq.com", "rap", "西安"));
request.setAttribute("stuList1", stuList);
/*
在java的泛型集合中这三种声明都可以
Map<String,String> map1=new HashMap();
Map<String,String> map1=new HashMap<>();这种创建集合的方式,注意有的版本el表达式识别不了
Map<String,String> map1=new HashMap<String,string>();
*/
//将map集合存在request范围内
//创建集合
Map<String,String> map1=new HashMap();
//向集合中添加元素
map1.put("k1", "杨森林");
map1.put("k2", "段怡豪");
request.setAttribute("map2", map1);
//将map集合的key存数字类型存在request范围内
Map<Long,String> map4=new HashMap();
//向集合中添加元素
map4.put(2l, "张俊飞");
request.setAttribute("map3", map4);
%>
<!-- 用el表达式取出page范围内的值 -->
<h1>${sname}</h1>
<!-- 用el表达式取出request范围内的值 -->
<h1>${sage}</h1>
<!-- 用el表达式取出session范围内的值 -->
<h1>${ssex}</h1>
<!-- 用el表达式取出application范围内的值 -->
<h1>${shobby}</h1>
<!-- 在指定范围内存值 -->
<h2>${pageScope.sname }</h2>
<h2>${requestScope.sname }</h2>
<h2>${sessionScope.sname }</h2>
<h2>${applicationScope.sname }</h2>
<!--用el取出对象的属性值 -->
<h3>姓名:${stu1.name },性别:${stu1.sex }</h3>
<h3>${stu1.toString() }</h3>
<!-- el取出对象输出时,会自动调用对象toString() -->
<h3>${stu1 }</h3>
<!-- 用el表达式取出list集合中元素 -->
<h1>${stuList1[0]}</h1>
<!-- 用el表达式取出list集合中元素的属性 -->
<h1>${stuList1[0].name}</h1>
<!-- 用el表达取出map集合中元素 -->
<h1>${map2["k1"] }</h1>
<h1>${map2.k1 }</h1>
<!-- el中直接用运算符 -->
<h1>${1+6-1 }</h1>
<h2>${1<2&&3<4 }</h2>
<!-- el中判断key为不为空 -->
<h1>不为空的判断:${!empty kk }</h1>
<h1>为空的判断${empty kk }</h1>
<!-- el表达式中+只有算术运算作用 -->
${"1"+1 }
<!-- el表达式只支持map集合的key用Long或String不支持Integer -->
<h1>${map3[2] }</h1>