EL表达式
来源:互联网 发布:js注释 编辑:程序博客网 时间:2024/05/17 00:05
为了使JSP界面上不出现java代码还有界面上获取数据方便,我们就引入了EL表达式和JSTL标签库。这篇博客就讲解一下,EL表达式的使用。
1.语法结构
${expression}
2.存取数据
EL 提供“.“和“[]“两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如 . 或 - 等并非字母或数字的符号,就一定要使用“[ ]“。例如:${ user.My-Name}应当改为${user["My-Name"]} 。 如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:${sessionScope.user[data]}中data 是一个变量。
3.操作符
4.隐式对象
注意:使用EL的时候,默认会以一定顺序(pageContext、request、session、application)搜索四个作用域,将最先找到的变量值显示出来。
5.JSP界面取值举例
对应servlet赋值:
- /**
- * 功能:测试EL表达式Servlet
- * 作者: 宋笑
- * 日期: 2015-11-13 下午04:56:00
- *
- */
- public class JstlElServlet extends HttpServlet {
-
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- //普通字符串取值实例
- request.setAttribute("hello", "Hello World");
-
- //实体取值实例
- Group group = new Group();
- group.setName("动力节点603班");
- User user = new User();
- user.setUsername("张三");
- user.setAge(23);
- user.setGroup(group);
- request.setAttribute("user", user);
-
- //map取值实例
- Map map = new HashMap();
- map.put("k1", "v1");
- map.put("k2", "v2");
- request.setAttribute("map", map);
-
- //字符串数组取值实例
- String[] strArray = new String[]{"a", "b", "c"};
- request.setAttribute("str_array", strArray);
-
- //对象数组取值实例
- User[] users = new User[10];
- for (int i=0; i<users.length; i++) {
- users[i] = new User();
- users[i].setUsername("张三_" + i);
- }
- request.setAttribute("users", users);
-
- //list取值实例
- List userList = new ArrayList();
- for (int i=0; i<10; i++) {
- User usr = new User();
- usr.setUsername("李四_" + i);
- userList.add(usr);
- }
- request.setAttribute("userList", userList);
-
- //empty实例
- request.setAttribute("v2", "");
- request.setAttribute("v3", new ArrayList());
- request.setAttribute("v4", "12345");
- request.setAttribute("v5", null);
-
- request.getRequestDispatcher("/jstl_el.jsp").forward(request, response);
- }
-
- }
- 对应jsp取值:
- <html>
- <head>
- <base href="<%=basePath%>">
-
- <title>EL表达式</title>
-
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
-
-
-
-
- </head>
-
- <body>
- <h1>测试EL表达式</h1>
- <hr>
- <li>普通字符串取值实例</li><br>
- hello:${hello }<br>
- <p>
-
- <li>实体取值实例</li><br>
- 姓名:${user.username }<br>
- 年龄:${user.age }<br>
- 所属组:${user.group.name }<br>
- <p>
-
- <li>map取值实例</li><br>
- map.k1:${map.k1 }<br>
- map.k2:${map.k2 }<br>
- <p>
-
- <li>字符串数组取值实例,采用[]下标</li><br>
- strArray[1]:${str_array[1] }<br>
- <p>
-
- <li>对象数组取值实例,采用[]下标</li><br>
- users[5].username:${users[5].username }<br>
- <p>
-
- <li>list取值实例,采用[]下标</li><br>
- userList[6].username:${userList[6].username }<br>
- <p>
-
- <li>测试empty</li><br>
- v1:${empty v1}<br>
- v2:${empty v2}<br>
- v3:${empty v3}<br>
- v4:${empty v4}<br>
- v5:${empty v5}<br>
- </body>
- </html>
注意:如果只使用el表达式不需要引用任何jar包,只要jsp/servlet容器实现了J2EE1.4/Servlet2.4、JSP2.0就可以。
下面一篇博客总结JSTL标签库常用的标签。