首页 > 代码库 > javaWEB与EL表达式

javaWEB与EL表达式

EL表达式

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导航

  <%
    Address address = new Address();
    address.setCity("北京");
    address.setStreet("西三旗");
    
    Employee emp = new Employee();
    emp.setName("李小四");
    emp.setSalary(123456);
    emp.setAddress(address);
    
    request.setAttribute("emp", emp);
  %>

<h3>使用el获取request域的emp</h3>
${requestScope.emp.address.street }<!-- request.getAttribute("emp").getAddress().getStreet() --><br/>


4. EL可以输出的东西都在11个内置对象中!11个内置对象,其中10个是Map!pageContext不是map,它就是PageContext类型,1个项9个。
  * 我们已经学习了四个:pageScope,requestScope,sessionScope,applicationScope,


  * param对应参数,它是一个Map,其中key参数名,value是参数值,适用于单值的参数。
  * paramValues对应参数,它是一个Map,其中key参数名,value是多个参数值,适用于多值的参数。
  * header对应请求头,它是一个Map,其中key表示头名称,value是单个头值,适用于单值请求头
  * headerValues对应请求头,它是一个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>

    ${initParam.xxx}

  * cookieMap<String,Cookie>类型,其中key是cookie的name,value是cookie对象 ${cookie.username.value}
  * pageContext:它是PageContext类型!${pageContext.request.contextPath}//获取request的contextPath方法。获取项目名

=========================================

EL函数库(由JSTL提供的)
  * 导入标签库:<%@ tablib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
    String toUpperCase(String input)把参数转换成大写
    String toLowerCase(String input)把参数转换成小写
    int indexOf(String input, String substring)从大串,输出小串的位置!
    boolean contains(String input, String substring)查看大串中是否包含小串
    boolean containsIgnoreCase(String input, String substring)忽略大小写是否包含
    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)获取大串中,小串所在位置后面的字符串
    substringBefore(String input, String substring)获取大串中,小串所在位置前面的字符串
    String escapeXml(String input)把input中“<”、">"、"&"、"‘"、""",进行转义
    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)联合字符串数组!

=========================================

自定义函数库
 * 写一个java类,类中可以定义0~N个方法,但必须是static,而且有返回值的!
 * 在WEB-INF目录下创建一个tld文件

   <function>
    <name>fun</name>
    <function-class>cn.itcast.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() }

javaWEB与EL表达式