JSP中EL表达式的使用

JSP中EL表达式的使用

EL(Expression Language)表达式并不是通用的程序设计语言,仅是一种数据访问语言,可以在JSP中方便地访问Java数据。

示例:${expression}

EL隐式对象列表

类别标识符描述
JSP pageContext 当前页面
作用域 pageScope 页面作用域
  requestScope 请求作用域
  sessionScope 会话作用域
  applicationScope 应用程序作用域
请求参数 param 存储请求参数
  paramValues 将请求参数的所有值作为 String 数组存储
请求头 header 按名称存储请求头
  headerValues 将请求头的所有值作为 String 数组存储
Cookie cookie 按名称存储请求附带的 cookie
初始化参数 initParam 按名称存储 Web 应用程序上下文初始化参数

EL数据访问

作用域对象

applicationScope:用来取得application范围属性值。

sessionScope:用来取得session范围属性值。

requestScope:用来取得request范围属性值。

pageScope:用来取得page范围属性值。

这些隐式对象对应于JSP中的pageContext,request,session,application,只用来读取属性值。

//创建对象,分别放进不同作用域
User myUser = new User("0001", "张三", 20);
pageContext.setAttribute("currentUser", myUser);
request.setAttribute("currentUser", myUser);
session.setAttribute("currentUser", myUser);
application.setAttribute("currentUser", myUser);

//读取不同范围的值
page范围:${pageScope.currentUser.name}<br />
request范围:${requestScope.currentUser.name}<br />
session范围:${sessionScope.currentUser.name}<br />
application范围:${applicationScope.currentUser.name}<br />
不指定范围:${currentUser.name}
如果不指定范围,默认会从page范围内找,如果找不到,再依次到request、session、application范围中找。如果没有找到就返回null。

读取集合或map

//存入集合
ArrayList<User> lists = new ArrayList<User>();
lists.add(new User("0001", "张三", 20));
lists.add(new User("0002","李四",30));
session.setAttribute("userList", lists);   

//存入map
Map<String,User> map = new HashMap<String,User>();
map.put("user1", new User("0001","张三",20));
session.setAttribute("currentUser", map);

// 读取集合
${userList[0].name}<br />
${userList[1].name}<br />
    
// 读取map
${currentUser.user1.name}<br />  

请求参数对象

//在EL之前使用如下代码取得请求参数
request.getParameter(name);
request.getParameterValues(name);

//在EL中使用如下隐式对象取得请求参数
param:接收的参数只有一个值。
paramValues:接受的参数有多个值。

示例:

<form method="post" action="buyMessage.jsp">    
      <p>
         请选择您要购买的商品:
      </p> 
      <p>
         <input type="checkbox" name="goods" value="手机"/>手机
      </p>   
      <p>
         <input type="checkbox" name="goods" value="电脑"/>电脑
      </p>
      <p>
         <input type="checkbox" name="goods" value="空调"/>空调
      </p>
      <p>
         请输入收货地址:<input type="text" name="address" />
      </p>
      <input type="submit" value="确定" />
</form>

<!--获取前一页面请求中的值 -->
<body>
  <%
     request.setCharacterEncoding("utf-8");
  %>
    您选择的商品是:
  <p></p>
  ${paramValues.goods[0]}<p></p>
  ${paramValues.goods[1]}<p></p>
  ${paramValues.goods[2]}<p></p>
   您的收货地址是:
  <p></p>
  ${param.address}
  <p></p>
  <input type="button" value="下一步" />
  <input type="button" value="返回上一步" />
</body>

Cookie对象

// 颁发Cookie
Cookie c = new Cookie("username", "admin");
response.addCookie(c);
// 获取cookie
${cookie.username.value }

EL运算符

算术运算符

算术运算符说明示例结果
+ ${1 + 1} 2
- ${1 - 1} 0
* ${1 * 2} 2
/或div ${3 / 2} 1.5
%或mod 取余 ${3 % 2} 1

关系运算符

关系运算符说明示例结果
= = 或 eq 等于 {1 = = 1}或{1 eq 1} true
!= 或ne 不等于 {1 != 1}或{1 ne 1} false
< 或 lt 小于 {1 < 2}或{1 lt 1} true
> 或 gt 大于 {1 > 2}或{1 gt 1} false
<= 或 le 小于或者等于 {1 <= 2}或{1 le 1} true
>= 或 ge 大于或者等于 {1 >= 2}或{1 ge 1} false

逻辑运算符

逻辑运算符说明示例结果
&& 或 and 交集 {A && B}或{A and B} 当A和B都为true时为true,其他情况为false
|| 或 or 并集 {A || B}或{A or B} 当A和B都为false时为false,其他情况为true
! 或 not {!A} 或{not A} 当A为true时,为false 当A为false时,为true

条件运算符

${表达式1 ? 表达式2 : 表达式3} // 与java用法相同
${currentUser.name=="admin"?"管理员":"普通用户"}

验证运算符

${empty 表达式}

返回布尔值判断表达式是否为"空"值,null值、无元素的集合或数组、长度为零的String被认为是空值。

在JS中使用EL

在本页面中使用EL

<%
   session.setAttribute("username", "admin");
%>

<script>
    alert("${username}");
</script>

在外链JS文件中引用EL

必须在当前页面的JS脚本中定义变量存放EL表达式,然后在外部JS文件中引用该变量。

<%
   session.setAttribute("username", "admin");
%>

<script src="js/function.js"></script>
<script>
   var username="${username}";
   myFun();
</script>

//外联js文件
function myFun(){
    alert(username);
}



posted @ 2020-07-06 23:20  fgy121  阅读(399)  评论(0编辑  收藏  举报