[置顶] EL表达式

为了使JSP界面上不出现java代码还有界面上获取数据方便,我们就引入了EL表达式和JSTL标签库。这篇博客就讲解一下,EL表达式的使用。

1.语法结构

${expression}


2.存取数据

EL 提供“.“和“[]“两种运算符来存取数据。

当要存取的属性名称中包含一些特殊字符,如 . - 等并非字母或数字的符号,就一定要使用“[ ]“。例如:${ user.My-Name}应当改为${user["My-Name"]}  如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:${sessionScope.user[data]}data 是一个变量。

3.操作符

[置顶] EL表达式_第1张图片

4.隐式对象

[置顶] EL表达式_第2张图片

注意:使用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">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </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表达式_第3张图片

注意:如果只使用el表达式不需要引用任何jar包,只要jsp/servlet容器实现了J2EE1.4/Servlet2.4JSP2.0就可以。

下面一篇博客总结JSTL标签库常用的标签。



你可能感兴趣的:([置顶] EL表达式)