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赋值:

[html] view plain copy
  1. /**       
  2.  * 功能:测试EL表达式Servlet    
  3.  * 作者: 宋笑    
  4.  * 日期: 2015-11-13 下午04:56:00     
  5.  *        
  6.  */  
  7. public class JstlElServlet extends HttpServlet {  
  8.   
  9.     @Override  
  10.     protected void doGet(HttpServletRequest request, HttpServletResponse response)  
  11.             throws ServletException, IOException {  
  12.         //普通字符串取值实例  
  13.         request.setAttribute("hello", "Hello World");  
  14.           
  15.         //实体取值实例  
  16.         Group group = new Group();  
  17.         group.setName("动力节点603班");  
  18.         User user = new User();  
  19.         user.setUsername("张三");  
  20.         user.setAge(23);  
  21.         user.setGroup(group);  
  22.         request.setAttribute("user", user);  
  23.           
  24.         //map取值实例  
  25.         Map map = new HashMap();  
  26.         map.put("k1", "v1");  
  27.         map.put("k2", "v2");  
  28.         request.setAttribute("map", map);  
  29.           
  30.         //字符串数组取值实例  
  31.         String[] strArray = new String[]{"a", "b", "c"};  
  32.         request.setAttribute("str_array", strArray);  
  33.           
  34.         //对象数组取值实例  
  35.         User[] users = new User[10];  
  36.         for (int i=0; i<users.length; i++) {  
  37.             users[i] = new User();  
  38.             users[i].setUsername("张三_" + i);  
  39.         }  
  40.         request.setAttribute("users", users);  
  41.           
  42.         //list取值实例  
  43.         List userList = new ArrayList();  
  44.         for (int i=0; i<10; i++) {  
  45.             User usr = new User();  
  46.             usr.setUsername("李四_" + i);  
  47.             userList.add(usr);  
  48.         }  
  49.         request.setAttribute("userList", userList);  
  50.       
  51.         //empty实例  
  52.         request.setAttribute("v2", "");  
  53.         request.setAttribute("v3", new ArrayList());  
  54.         request.setAttribute("v4", "12345");  
  55.         request.setAttribute("v5", null);  
  56.           
  57.         request.getRequestDispatcher("/jstl_el.jsp").forward(request, response);  
  58.     }  
  59.   
  60. }  
  61. 对应jsp取值:  
  62. <html>  
  63.   <head>  
  64.     <base href="<%=basePath%>">  
  65.       
  66.     <title>EL表达式</title>  
  67.       
  68.     <meta http-equiv="pragma" content="no-cache">  
  69.     <meta http-equiv="cache-control" content="no-cache">  
  70.     <meta http-equiv="expires" content="0">      
  71.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  72.     <meta http-equiv="description" content="This is my page">  
  73.     <!-- 
  74.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  75.     -->  
  76.   
  77.   </head>  
  78.     
  79.   <body>  
  80.     <h1>测试EL表达式</h1>  
  81.     <hr>  
  82.     <li>普通字符串取值实例</li><br>  
  83.     hello:${hello }<br>  
  84.     <p>  
  85.       
  86.     <li>实体取值实例</li><br>  
  87.     姓名:${user.username }<br>  
  88.     年龄:${user.age }<br>  
  89.     所属组:${user.group.name }<br>  
  90.     <p>  
  91.       
  92.     <li>map取值实例</li><br>  
  93.     map.k1:${map.k1 }<br>  
  94.     map.k2:${map.k2 }<br>  
  95.     <p>  
  96.       
  97.     <li>字符串数组取值实例,采用[]下标</li><br>  
  98.     strArray[1]:${str_array[1] }<br>  
  99.     <p>  
  100.       
  101.     <li>对象数组取值实例,采用[]下标</li><br>  
  102.     users[5].username:${users[5].username }<br>  
  103.     <p>  
  104.       
  105.     <li>list取值实例,采用[]下标</li><br>  
  106.     userList[6].username:${userList[6].username }<br>  
  107.     <p>  
  108.       
  109.     <li>测试empty</li><br>  
  110.     v1:${empty v1}<br>  
  111.     v2:${empty v2}<br>  
  112.     v3:${empty v3}<br>  
  113.     v4:${empty v4}<br>  
  114.     v5:${empty v5}<br>  
  115.   </body>  
  116. </html>  

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

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

原创粉丝点击