最近做DRP项目的时候,学习到了一个新的知识。EL表达式,这个东西特别的简单,那我为什么还要写一篇博客呢,一来推荐给更多的人使用,二来EL表达式给我带来了巨大的好处。
大家先来看看在我没用el表达式之前,我们要先将数据放入request中 。
<span style="font-size:18px;">//我们在servlet中将数据写入到Request中, 然后转到我们的测试页面!</span>
<span style="font-size:18px;">public class JstlElServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setAttribute("hello", "hello world");
req.setAttribute("User", User)
req.getRequestDispatcher("/jstl_el.jsp").forward(req, resp);
}
}
</span>
在jsp的页面上时怎么取数据的!
<span style="font-size:18px;"><body>
hello(jsp脚本)采用传统的方式:<%=request.getAttribute("hello") %><br>
自定义用户类User :
<%
User user=(User) request.getAttribute("hello");
%>
</body></span>
每次取数据都是要写<%%> ,然后通过request的方法进行获取!,如果是自定义类型的类型,还要引入自定义类所在包,然后在定义一个该类的实例,在将从request中取到的数据进行强制转换!我去,好麻烦!
但是在看一下我们如果有了EL表达式话,我们是怎么弄的!
<span style="font-size:18px;"><body>
hello(el表达式,语法:$和{}):${hello }<br>
User(用户自定义类) :${user }
</body></span>
原来要写很多代码的东西,现在只要一句话就可以了可以了! 就不是真的很简单!
下边我们来看一下EL表达式到底是该怎么用的!
1、语法结构
${expression}
2、[ ]与.运算符
EL 提供“.“和“[ ]“两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用“[ ]“。例如:
${user.My-Name}应当改为${user["My-Name"] }
如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:
${sessionScope.user[data]}中data 是一个变量
3、变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。 因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。 假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
属性范围在EL中的名称
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope
大家是不是发现EL表达式真的很好用,也很简单!赶紧实践一把吧!