EL表达式
- EL表达式:${表达式内容},简化我们的开发
- 在页面显示域中的属性值
- 要获取对象中的某个属性直接使用.属性名的方式
- el表达式如果获取域中的属性,直接写属性名,他会从四个域从小到大找,找到即停止,而且EL表达式可以连点操作
pageContext<request<session<application
- el有11个隐含对象,el可以取出11隐含对象的数据,取不出页面自己定义的数据
-四个域对象:是从这四个域对象中取值
- pageContext域中的数据:pageScope(封装了pageContext域中的所有的共享数据(setAttr,getAttr)),他是一个Map
- request域中的数据:requestScope(封装了request域中的所有数据(setAttr,getAttr)),他也是一个Map
- session域中的数据:sessionScope(封装了session域中的所有数据(setAttr,getAttr)),他也是一个Map
- application域中的数据:applicationScope(封装了application域中的所有数据(setAttr,getAttr)),他也是一个Map
<% Student stu=new Student("张三",18); //给pageContext域中设置内容 pageContext.setAttribute("pageUser",stu); //给request域中设置内容 request.setAttribute("reqUser", "reqName"); //给session域中设置内容 session.setAttribute("sessUser","sessName"); //给application域设置内容 application.setAttribute("appUser", "appName"); %> <!-- EL表达式 ${表达式内容}--> page:${pageScope.pageUser.name}<br/> request:${requestScope.reqUser}<br/> session:${sessionScope.sessUser}<br/> application:${applicationScope.appUser}<br/>
- el表达式如何获取stu-x这些特殊命名的属性(因为会产生歧义)
使用 作用域[‘属性名’]方式即可取出
如:
<% request.setAttribute("stu-x","123456"); %> el:${requestScope['stu-x']}
取map中的数据可以使用. 也可以使用[key]
- pageContext:一个非map对象,pageContext代表的是jsp隐含对象中的pageContext,取出其他隐含对象
-pageContext可以取出jsp页面其他的隐含对象
${pageContext.request.scheme} <%=pageContext.getRequest().getScheme()%> 以上两种方式相等
- 与http协议有关的隐含对象
-param (封装了所有请求参数的key-value)对应一个请求参数 相当于request.getParamer(“username”)
-paramValues 对应一组请求参数
-header 请求头 request.getHeader(“User-Agent”)
-headerValues 请求头返回字符数组
-cookie 获取某个cookie对象 取出cookie的值请求参数:${param.username} 请求头:${header['User-Agent']} Cookie:${cookie.JSESSIONID.name}||${cookie.JSESSIONID.value}
-initParam:initParam获取web的初始化参数
web.xml中的配置 <context-param> <param-name>user</param-name> <param-value>root</param-value> </context-param>
jsp中的内容 初始化参数:${initParam.user}
- el表达式运算符
- 算数运算:${}
- 关系运算:${}
- 逻辑运算:${}
- empty运算:判断一个对象是否为空
1)null:变量的值为null或域对象中不存在这个对象,则返回true
2)空集合:返回true
3)空字符串:返回true
4)空字符:返回true
5)空数组:int[] i=null,返回true,若new了新的数组,则为false
${empty 对象} ${empty pageScope.stu}
- 三目条件运算:A?b:c
- 获取项目路径
${pageContext.request.contextPath}
- el存在的意义
简化操作
友好显示
<base href="${路径}"/>
- 项目第四阶段,使用EL进行错误消息提示以及表单回显
- el-》获取数据方便,如果没有属性就是什么都没有“”,不用做三元运算
- 将相应的jsp表达式换成el表达式