④品茶看<Servlet&JSP>-EL表达式
2014-03-12 21:37
344 查看
前言
今早,概率课偷了下小懒写的:泡一杯红茶,ACM集训前,写篇博客记录记录EL表达式。
#EL介绍
①EL 语法
②访问JavaBean等
③EL隐式对象
④EL运算符
EL介绍
EL 全名为Expression Language。受ECMAScript 和XPath 表达式的语言启发。EL 的语法比传统JSP Scriptlet 更为方便、简洁。EL 语法
①基本知识${为起始、以}为结尾的,构造:${expression}。接下来比较下:
JSP Scriptlet获取:
User user = (User)session.getAttribute("user"); String sex = user.getName( );
EL 获取:
${sessionScope.user.sex}
② [] 和 . 运算符
EL表达式中,对象有属性。就可以利用 [] 和 . 运算符 来访问该属性,两者功能相似。
例如:下面都是一样的。
${sessionScope.user.name}
或者
${sessionScope.user["name"]}
两者功能差异
# 当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ]。
例如:
${sessionScope.user["My-Name"] } ${header["accept-language"] }
#我们来考虑下列情况:
selection是一个变量,可以代表user各个属性。
${sessionScope.user[selection]}
如果selection为"name",就相当于${sessionScope.user.name}或者${sessionScope.user["name"]}
因此,如果要动态取值时,. (点)运算符无法做到动态取值, [] 运算符 可以做到。
访问JavaBean
[align=center]类型[/align] | [align=center]实例[/align] | [align=center]方法[/align] |
[align=center]JavaBeans[/align] | ${user.username} ${user["username"]} ${user['username']} | user.getUsername() |
[align=center]数组[/align] | ${sport[1]} ${sport["1"]} ${sport['1']} | sport[1] |
[align=center]List[/align] | ${phone[2]} ${phone["2"]} ${phone['2']} | phone.get(2) |
[align=center]Map[/align] | ${phone.home} ${phone["home"]} ${phone['home']} | phone.get("home") |
EL隐式对象
隐含对象 | 类型 | 说明 |
PageContext | javax.servlet.jspPageContext | 表示当前JSP的javax.servlet.jsp.PageContext |
PageScope | java.util.Map | 取得Page范围的属性名称所对应的值 |
RequestScope | java.util.Map | 取得Request范围的属性名称所对应的值 |
sessionScope | java.util.Map | 取得Session范围的属性名称所对应的值 |
applicationScope | java.util.Map | 取得Application范围的属性名称所对应的值 |
param | java.util.Map | 如同ServletRequest.getParameter(String name)。回传String类型的值 |
paramValues | java.util.Map | 如同ServletRequest.getParameterValues(String name)。回传String[]类型的值 |
header | java.util.Map | 如同ServletRequest.getHeader(String name)。回传String类型的值 |
headerValues | java.util.Map | 如同ServletRequest.getHeaders(String name)。回传String[]类型的值 |
cookie | java.util.Map | 如同HttpServletRequest.getCookies() |
initParam | java.util.Map | 如同ServletContext.getInitParameter(String name)。回传String类型的值 |
cookie
隐式对象cookie包含了当前HttpServletRequest的所有cookie 的Map。例如
获取一个名为jsessionid的cookie值:
${cookie.jsessionid.value}
header 和headerValues
header 储存用户浏览器和服务端用来沟通的数据,当用户要求服务端的网页时,会送出一个记载要求信息的标头文件,例如:用户浏览器的版本、用户计算机所设定的区域等其他相关数据。例如
获取accept-language语言
${header["accept-language"]}。
注意:当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ]。
initParam
就想我们在web-xml 配置 初始化值得时候,我们用initParam隐式对象可以获取。<?xml version="1.0" encoding="ISO-8859-1"?> <web-app 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/web-app_2_4.xsd" version="2.4">: <context-param> <param-name>username</param-name> <param-value>jeffli</param-value> </context-param>: </web-app>
用EL表达式获取:
${initParam.username}
等价于
String userid = (String)application.getInitParameter("username");
param和paramValues
同上面的理${param.name} ${paramValues.name}
等价于
request.getParameter(String name)
request.getParameterValues(String name)
EL运算符
逻辑运算符 | 实例 | 结果 |
&&或and | 交集${A && B}或${A and B} | true/false |
||或or | 并集${A || B}或${A or B} | true/false |
!或not | 非${! A }或${not A} | true/false |
总结
EL学习,这次比较全。以前用着就去看,索性写篇博客记录下。学这个,好比ABC... 慢慢来,多写多用就会了。
相关文章推荐
- 品茶看<Servlet&JSP>-EL表达式
- javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt
- servlet查询所有消息"List<Message>",并跳转到页面"messageList.jsp"进行显示
- <jsp:include> 嵌套Servlet请求,导致Stream closed异常
- javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>
- javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Invalid property in <set>: "age2"
- javax.servlet.JspTagException:Illegal use of &lt;when&gt;-style tag without &lt;choose &gt;as its di
- javax.servlet.JspTagException:Illegal use of <when>-style tag without <choose >as its di
- JSP中<base href="<%=basePath%>">对相对路径的影响
- 使用<a href="../answer/StuAnswer.jsp?Sid=<%=Sid %>&Eid=1">shuxue</a> 注意
- <jsp:include page="xxx"> 和<%@include file="xxx">区别
- 【Java.Web】Servlet/Filter中的 <url-pattern>
- JSP 使用<%@include%>报Duplicate local variable path 错误 解决方法
- servlet知识点<六>
- struts2 jsp <s:property value="path" /> path为中文的时候乱码
- <jsp:directive.page> <%@ page import=""/>的用法和解释
- 关于jsp中使用 <jsp:userBean/> <jsp:setProperty/> <jsp:getProperty/>
- 关于jsp页面头部<%@ %>报错的问题
- JavaBean与Jsp、在JSP中使用JavaBean(<jsp:useBean>标签、<jsp:setProperty>标签、<jsp:getProperty>标签)
- jsp 静态引入<%@ include %> 动态引入<jsp:include> 区别