1、 el表达是什么
- a) Expression language 表达式语言。
- b) 可以获取作用域里面的数据。
- c) El表达式得到的变量可以做一些运算。
语法:${作用域.key}
作用域:pageScope,requestScope,sessionScope,applicationScope
2、 为什么要学习el表达式
- a) 虽然在jsp里面可以通过<% %>标签写java代码,但是在jsp里面写java代码跟在servlet里面写html代码一样的麻烦。
- b) Jsp里面有java代码使jsp的可读性减低。
- c) El和jstl可以使jsp中不出现java代码。
3、EL表达式的作用
作用:用来代表输出脚本<%= %>在页面展示数据
El表达式获取对象数据的属性
${作用域范围标识.对象名.属性}
例如 ${pageScope.b.bookId}
El表达式中 .属性 底层实际上调用属性的getXxx() , 而且el表达式只认getXxx()
需要注意的是:
- A.当作用域里面没有该键时,el打印的是空字符串,而不是null。
- B.El表达式里面的作用域是可以省略的。当el表达式省略作用域时,表示表达式会依次从小作用域往大作用域里面找key,直到找到为止。
4、EL表达式可以进行运算
语法:${作用域.key 运算符 变量值}
数学运算: + - * / % (注意这些运算只能是数字进行运算不能是字符串)
关系运算: > >= < <= == != (==是可以判断字符串的)
逻辑运算:&& || !
Empty运算 ${empty 作用域的命名属性} (empty 注意既可以判断是否为空又可以判断是否为空字符串)
true: 作用域中不包含该命名属性
false: 作用域中包含该命名属性
5、el表达式内置对象
a) pageContext 类似于jsp内置对象pageContext
获取其它8个jsp内置对象
Jsp中 pageContext.getRequest()
pageContext.getSession();
pageContext.getServletContext(); --> application
…
El表达式中:
${pageContext.request}
${pageContext.session}
${pageContext.servletContext}
…
项目有一个问题,项目中用到项目名的时候都是固定写死的。代码的可重用性会降低。我们可以通过java代码动态的获取到项目名。
String path=request.getContextPath();
如何通过el表达式获取项目名呢?
${pageContext.request.contextPath}
b) param 获取client传递来的数据
Get方式:http://ip地址:port/项目名/url-pattern?name名=value值&name名=value值
Post方式:form表单 请求体中发送 name名=value值
Servlet获取client数据:request.getParameter(“name名”);
JSP中获取client数据:<% request.getParameter(“name名”); %>
使用el表达式获取: ${param.name名}
c) cookie 获取浏览器发送来的cookie
Cookie和param
El表达式可以直接获取cookie里面存储的数据。
$ {cookie.cookie标记.value}
El表达式可以通过param获取到请求jsp时传递的参数。${param.name}
Cookie c = new Cookie(“name名”,”value值”);
${cookie.cookie的name名} //获取cookie对象
${cookie.cookie的name名.name}//获取的cookie对象的name属性值
${cookie.cookie的name名.value} //获取cookie对象的value属性值【重点】
Cookie c = new Cookie(“username”,”xushy”);
${cookie.username.name} ==> “username”
${cookie.username.value} ==> “xushy”
Cookie c = new Cookie(“JSESSIONID”,”2893749743AbCD”);
${cookie.JSESSIONID.name} > ”JSESSIONID”
${cookie.JSESSIONID.value}>”2893749743AbCD”