el表达式及jstl常见用法

EL是jsp的内置表达式语言,从jsp2.0开始,用来替代<%=..%>表达式。

1 el获取简单的数据

<body>
<%
   request.setAttribute("requestKey", "requestValue");
   session.setAttribute("sessionKey", "sessionValue");
   pageContext.setAttribute("pageKey", "pageValue");
   application.setAttribute("applicationKey", "applicationVlaue");
%>

获取域对象属性旧方式:
<%=request.getAttribute("requestKey") %><hr>
<%=session.getAttribute("sessionKey") %><hr>
<%=pageContext.getAttribute("pageKey") %><hr>
<%=application.getAttribute("applicationKey") %><hr>

使用EL获取简单数据:
 ${requestScope.requestKey }<br>
 精简的写法:
 ${pageKey}
</body>

使用jsp脚本往request域中添加了一些简单的数据。获取request域数据有两种方式,一种依然是使用jsp脚本来获取,另一种方式是使用el来获取。可见el方式获取域对象中的值比jsp简单得多。
最常用的el获取域对象中数据的方式是:
${属性名}

2 el获取集合中的数据

<body>
<%
request.setAttribute("arr", new String[]{"aaa","bbb","ccc"});

List<String> list=new ArrayList();
list.add("list1");
list.add("list2");
list.add("list3");
request.setAttribute("list", list);

Map<String,String>map=new HashMap();

map.put("01", "jilaing");
map.put("02", "jiaming");
map.put("age", "13");

request.setAttribute("map", map);
pageContext.setAttribute("arr.age", "myAge");
%>
旧方式获取Map中的数据:<br>
<%=((HashMap<String,String>)request.getAttribute("map")).get("01") %><br>
获取request中的数组元素${arr[1]}<br>
获取request中的List中的元素 ${list[1]}<br>
获取request中的map元素${map.age}<br>
获取PageContext特殊形式的元素 ${pageScope["arr.age"]}
</body>

可见,使用el获取域中的数组和list集合方式相同。el获取域中的map对象的方式是:${域中的名称.键名}

3 el中的cookie对象

cookie是el中11个内置对象之一,相比较其他的对象,cookie对象用得更多更频繁。

<body>
<!--第一次打开该页面,cookie没有值,但服务器会将cookie写回浏览器。第二次访问页面的时候就有了  -->
<%
Cookie cookie=new Cookie("ceshi","value");
response.addCookie(cookie);

%>
cookie的值是:<br>
${cookie.ceshi.value }

</body>

第一次打开该页面,cookie没有值,但服务器会将cookie写回浏览器。第二次访问页面的时候就有了。
el获取cookie的方式比java更简单,格式:cookie.cookie名称.cookie值。

4 el获取javabean数据

public class User implements Serializable {
    private String name;
    private String id;
    private String sex;

    public User() {
        super();

    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
}
<body>
<%
 User user=new User();
 user.setId("1342644");
 user.setName("kun ge");
 user.setSex("nan");
 session.setAttribute("u", user);
%>
老方式获取user的id值:
<%= ((User)session.getAttribute("u")).getId() %> <br>
el方式获取user的id值:
${u.id }
</body>

5 el进行加法计算

<body>
<%
request.setAttribute("q", 5);
request.setAttribute("w", "10");
request.setAttribute("e", "9");
request.setAttribute("r", 12);
%>

el进行加法运算:
${q+w }<br>

</body>

运行结果为15。

6 jstl中的判断语句

<body>
<%
ArrayList list =new ArrayList();
request.setAttribute("li",list);
%>
<c:if test="${ empty li}">list 为空</c:if>

</body>

jstl往往和el配合使用。
empty运算符表示集合长度是否为0或者对象是否为空。
test中的值为el判断表达式。c:if标签内的内容为条件满足后执行的内容。

7 jstl中的forEach

7.1 输出0-20的所有偶数
<c:forEach begin="0" end="20" step="2" var="i" varStatus="vs">
${i }--${vs.count }--${vs.current }
</c:forEach>

begin表示循环从哪里开始,end表示循环到哪里结束,step便是步长,每次循环相加多少。var是给循环的元素起一个名字。varStatus表示循环状态。

7.1 遍历集合
<%
//向域中添加list集合
List list=new ArrayList();
list.add("11");
list.add("22");
list.add("33");

application.setAttribute("li", list);

//向域中添加Map集合

Map map=new HashMap();
map.put("name","jialiang");
map.put("age", 23);
application.setAttribute("hashMap", map);
%>

<c:forEach items="${li }" var="item" varStatus="vs">
${item }
</c:forEach>
<hr>
<c:forEach items="${hashMap }" var="item" varStatus="vs">
${item.key }--${item.value }
</c:forEach>

注意,item.key表示map中的键,item.value表示map中的 value

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值