码迷,mamicode.com
首页 > 其他好文 > 详细

EL表达式

时间:2017-10-06 15:05:02      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:web   key   png   技术   操作   logs   分隔符   images   func   

1、EL是JSP内置的表达式语言。

  • jsp2.0开始,不让再使用Java脚本,而是使用EL表达式和动态标签来替代Java脚本
  • EL替代的是<%=....%>,也就是说,EL只能做输出。

2、EL表达式来读取四大域

  • ${xxx},全域查找名为xxx 的属性,如果不存在,输出空字符串,而不是null。
  • ${pageScope.xxx}、${requestScope.xxx}、${sessionScope.xxx}、${applicationScope.xxx},指定域获取属性。

3、JavaBean导航

 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 2 <%@ page import="domain.Employee,domain.Address" %>
 3 <html>
 4 <head>
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <%
 9       Address address = new Address();
10       address.setCity("深圳");
11       address.setStreet("南山");
12 
13       Employee emp = new Employee();
14       emp.setName("张三");
15       emp.setSalary(12312);
16       emp.setAddress(address);
17 
18       request.setAttribute("emp",emp);
19     %>
20     <h3>使用el获取request域的emp</h3>
21 ${requestScope.emp.address.street}
22 <!-- request.getAttribute("emp").getAddress().getStreet--><br/>
23 ${emp.hehe}
24 </body>
25 </html>
 1 package domain;
 2 public class Employee {
 3     private String name;
 4     private double salary;
 5     private Address address;
 6 
 7     public String getName() { return name; }
 8     public void setName(String name) { this.name = name; }
 9     public double getSalary() { return salary; }
10     public void setSalary(double salary) { this.salary = salary; }
11     public Address getAddress() { return address; }
12     public void setAddress(Address address) { this.address = address; }
13     @Override
14     public String toString() {
15         return "Employee{" +
16                 "name=‘" + name + ‘\‘‘ +
17                 ", salary=" + salary +
18                 ", address=" + address +
19                 ‘}‘;
20     }
21     public String getHehe() { return  "呵呵"; }
22 }
 1 package domain;
 2 
 3 public class Address {
 4     private String city;
 5     private String street;
 6 
 7     public String getCity() { return city; }
 8     public void setCity(String city) { this.city = city; }
 9     public String getStreet() { return street; }
10     public void setStreet(String street) { this.street = street; }
11     @Override
12     public String toString() {
13         return "Address{" +
14                 "city=‘" + city + ‘\‘‘ +
15                 ", street=‘" + street + ‘\‘‘ +
16                 ‘}‘;
17     }
18 }

4、EL可以输出的东西都11个内置对象中:其中10个是Map,不是map的是PageContext类型,一个顶9个。

  • pageScope
  • requestScope
  • sessionScope
  • applicationScope
  • param:对应参数,它是一个Map,其中key参数名,value是参数值,适用于单值得参数;
  • paramValues:对应参数,它是一个Map,其中key参数名,value是多个参数值,适用于多值得参数。参数从地址栏获取;
  • <body>
    <%-- map.key这是el的语法,map[‘key‘]也可以操作map --%>
    ${param.username}<br/>
    ${paramValues.hobby[0]}
    ${paramValues.hobby[1]}
    </body>
    技术分享
  • header:对应请求头,它是一个Map,其中key表示头名称,value是单个头值,适用于单值请求头。

 <body> ${header[‘User-Agent‘]}<br/> </body> 

  • haeaderValues:对应请求头,它是一个Map,其中key表示头名称,value是多个头值,适用于多值请求头。
  • initParam:获取<context-param>内的参数
  • <context-param>
          <param-name>xxx</param-name>
           <param-value>XXX</param-value>
    </context-param>    
    <context-param>
          <param-name>yyy</param-name>
          <param-value>YYY</param-value>
    </context-param>
    <body>
    ${initParam.xxx}
    </body>
  • cookie:Map<String,Cookie>类型,其中key是cookie的name,value是cookie对象,${cookie.username.value}
  • <body>
    ${cookie.JSESSIONID}<br/>
    ${cookie.JSESSIONID.name}<br/>
    ${cookie.JSESSIONID.value}<br/>
    </body>

    技术分享

  • pageContext:它是PageContext类型。
 1 <body>
 2 <!-- 获取项目名,无则为"/" -->
 3 ${pageContext.request.contextPath}
 4 <hr/>
 5 <a href="${pageContext.request.contextPath}/el/a.jsp">点击这里</a>
 6 <form action="${pageContext.request.contextPath}/cookie/a.jsp" method="post">
 7     <input type="submit" value="xxx">
 8 </form>
 9 <hr/>
10 ${pageContext.session.id}
11 </body>
EL表达式 说明 描述
${pageContext.request.queryString} pageContext.getRequest().getQueryString(); 取得请求的参数字符串
${pageContext.request.requestURL} pageContext.getRequest().getRequestURL(); 取得请求的URL,但不包括请求之参数字符串
${pageContext.request.contextPath} pageContext.getRequest().getContextPath(); 服务的web application 的名称
${pageContext.request.method} pageContext.getRequest().getMethod(); 取得HTTP 的方法(GET、POST)     
${pageContext.request.protocol} pageContext.getRequest().getProtocol(); 取得使用的协议(HTTP/1.1、HTTP/1.0)     
${pageContext.request.remoteUser} pageContext.getRequest().getRemoteUser(); 取得用户名称
${pageContext.request.remoteAddr } pageContext.getRequest().getRemoteAddr(); 取得用户的IP 地址     
${pageContext.session.new} pageContext.getSession().isNew(); 判断session 是否为新的     
${pageContext.session.id} pageContext.getSession().getId(); 取得session 的ID
${pageContext.servletContext.serverInfo} pageContext.getServletContext().getServerInfo(); 取得主机端的服务信息

5、EL函数库(由JSTL提供的)

  • 导入标签库:
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
${fn:contains("abc","a")}<!-- true -->
函数 描述
boolean contains(String input,String substring) 测试输入的字符串是否包含指定的子串
boolean containsIgnoreCase(String input,String substring) 测试输入的字符串是否包含指定的子串,大小写不敏感
int indexOf(String input,String substring) 返回指定字符串在输入字符串中出现的位置
String toLowerCase(String input) 将字符串中的字符转为小写
String toUpperCase(String input) 将字符串中的字符转为大写
boolean startsWith(String input,String substring) 测试输入字符串是否以指定的前缀开始
boolean endsWith(String input,String substring) 测试输入的字符串是否以指定的后缀结尾
String substring(String input,int beginIndex,int endIndex) 返回字符串的子集
String substringAfter(String input,String substring) 返回字符串在指定子串之后的子集
String substringBefore(String input,String substring) 返回字符串在指定子串之前的子集
String escapeXml(String input) 跳过可以作为XML标记的字符("<"、">"、"&"、" ‘ "、“ " ”),即进行转义
String trim(String input) 移除首尾的空白符
String replace(String input,String substringBefore,String substringAfter) 将输入字符串中指定的位置替换为指定的字符串然后返回
String[] split(String input,String delimiters) 将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
int length(Object obj) 返回字符串、数组、各种集合的长度
String join(String array[] ,String separator) 将数组中的元素合成一个字符串然后输出

6、自定义函数库

①写一个java类,类中可以定义0~N个方法,但必须是static,而且有返回值的。

②在WEB-INF目录下创建一个tld文件

<function>
      <name>fun</name>
      <function-class>fn.MyFunction</function-class>
      <function-signature>java.lang.String fun()</function-signature>
</function>

③在jsp页面中导入标签库

<%@ taglib prefix="it" uri="/WEB-INF/tlds/itcast.tld"%>

④在jsp页面中使用自定义的函数:${it:fun()}

 

EL表达式

标签:web   key   png   技术   操作   logs   分隔符   images   func   

原文地址:http://www.cnblogs.com/gdwkong/p/7631464.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!