• EL表达式和EL函数库(JSTL提供)


    EL表达式

    1.EL是JSP内置的表达式语言!

      *jsp2.0开始,不让再使用Java脚本,而是使用el表达式和动作标签来替代Java脚本!

      *EL替代的是<%= ....%>,也就是说,EL只能做输出!

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

      * ${xxx},全域查找名为xxx的属性,如果不存在,输出空字符串,而不是null。

      *  ${pageScope.xxx}、${requestScope.xxx}、${sessionScope.xxx}、${applicationScope.xxx},指定域获取属性!

     1   <body>
     2     <%
     3         pageContext.setAttribute("xxx", "pageContext_XXX");
     4         request.setAttribute("xxx", "request_XXX");
     5         session.setAttribute("xxx", "session_XXX");
     6         application.setAttribute("xxx", "application_XXX");
     7         
     8      %>
     9      
    10      ${xxx }<!-- 全域查找,从小到大 --><br>
    11      ${pageScope.xxx }<!-- 指定域查找 --><br>
    12      ${requestScope.xxx }<!-- 指定域查找 --><br>
    13      ${sessionScope.xxx }<!-- 指定域查找 --><br>
    14      ${applicationScope.xxx }<!-- 指定域查找 --><br>
    15   </body>

    请求之后的结果:

    3.JavaBean导航

     Employee.java:--->一个JavaBean

     1 package com.xjs.domain;
     2 
     3 public class Employee {
     4 
     5     private String name;
     6     private double salary;
     7     private Address address;
     8     public String getName() {
     9         return name;
    10     }
    11     public void setName(String name) {
    12         this.name = name;
    13     }
    14     public double getSalary() {
    15         return salary;
    16     }
    17     public void setSalary(double salary) {
    18         this.salary = salary;
    19     }
    20     public Address getAddress() {
    21         return address;
    22     }
    23     public void setAddress(Address address) {
    24         this.address = address;
    25     }
    26     @Override
    27     public String toString() {
    28         return "Employee [name=" + name + ", salary=" + salary + ", address="
    29                 + address + "]";
    30     }
    31 }

    Address.java:--->地址的JavaBean

     1 package com.xjs.domain;
     2 
     3 public class Address {
     4 
     5     private String city;
     6     private String street;//街道
     7     public String getCity() {
     8         return city;
     9     }
    10     public void setCity(String city) {
    11         this.city = city;
    12     }
    13     public String getStreet() {
    14         return street;
    15     }
    16     public void setStreet(String street) {
    17         this.street = street;
    18     }
    19     @Override
    20     public String toString() {
    21         return "Address [city=" + city + ", street=" + street + "]";
    22     }
    23 }

    /el/a.jsp

     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     2 <%@page import="com.xjs.domain.*" %><!-- 导包 -->
     3 <%
     4 String path = request.getContextPath();
     5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     6 %>
     7 
     8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     9 <html>
    10   <head>
    11     <base href="<%=basePath%>">
    12     
    13     <title>My JSP 'a.jsp' starting page</title>
    14     
    15     <meta http-equiv="pragma" content="no-cache">
    16     <meta http-equiv="cache-control" content="no-cache">
    17     <meta http-equiv="expires" content="0">    
    18     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    19     <meta http-equiv="description" content="This is my page">
    20     <!--
    21     <link rel="stylesheet" type="text/css" href="styles.css">
    22     -->
    23 
    24   </head>
    25   
    26   <body>
    27     <%
    28         Address address=new Address();
    29         address.setCity("北京");
    30         address.setStreet("西三旗");
    31         
    32         Employee emp=new Employee();
    33         emp.setName("金泰妍");
    34         emp.setSalary(9999.00);
    35         emp.setAddress(address);
    36         
    37         request.setAttribute("emp", emp);
    38      %>
    39      <h3>使用el获取request域的emp</h3>
    40      <!-- request.getAttribute("emp").getAddress().getStreet() -->
    41      <!-- JavaBean导航 -->
    42      ${requestScope.emp.address.street }
    43   </body>
    44 </html>

    请求该页面结果:

    4.EL可以输出的东西都在11个内置对象中!

      EL一个11个内置对象,无需创建即可使用。其中10个是Map类型的!pageContext不是Map,它就是pageContext类型,1个顶9个。

      *pageScope

      *requestScope

      *sessionScope

      *applicationScope

      *param

      *paramValues;

      *header;

      *headerValues;

      *initParam;

      *cookie;

      *pageContext;

      *我们已经学习了四个。

      *param:对应参数,它是一个Map,其中key属性名,value是参数值,适用于单值的参数。

    1   <body>
    2     <!-- map.key这是el的语法!
    3     map['key']也可以操作map
    4      -->
    5     ${param.username }
    6   </body>

    在浏览器中请求:

      *paramValues:对应参数,它是一个Map,其中key参数名,value是多个参数值,适用于多值的参数。

    1   <body>
    2     <!-- map.key这是el的语法!
    3     map['key']也可以操作map
    4      -->
    5     ${param.username }<br>
    6     <!-- 数组 -->
    7     ${paramValues.hobby[0] }<br>
    8     ${paramValues.hobby[1] }
    9   </body>

    请求:

      *header:对应请求头,它是一个Map,其中key表示头名称,value是单个头值,适用于单值请求头。

    1   <body>
    2     ${header['User-Agent'] }
    3   </body>

    请求结果:

      *headerValues:对应请求头,它是一个Map,其中key表示头名称,value是多个头值,适用于多值请求头。

      *initParam:获取<context-param>内的参数!---平时不用它

     在web.xml中

    1   <context-param>
    2       <param-name>xxx</param-name>
    3       <param-value>XXX</param-value>
    4   </context-param>
    5   <context-param>
    6       <param-name>yyy</param-name>
    7       <param-value>YYY</param-value>
    8   </context-param>

    ${initParam.xxx}

    1   <body>
    2     ${initParam.xxx }
    3   </body>

    请求结果:

      *cookie:Map<String,Cookie>类型,其中key是cookie的name,value是cookie对象。使用例如:${cookie.username.value}

    1   <body>
    2     ${cookie.JSESSIONID.value }
    3   </body>

    请求结果:

      *pageContext:它是PageContext类型!${pageContext.request.scheme}--->相当于调用getRequest().getScheme();获取协议。

      <body>
          <!-- 项目名 -->
        ${pageContext.request.contextPath }
        
        <hr>
        
        <a href="${pageContext.request.contextPath }/cookie/a.jsp">点击这里</a>
        
        <form method="post" action="${pageContext.request.contextPath }/el/a.jsp">
            <input type="submit" value="xxx">
        </form>
      </body>

    请求之后的结果:

    在之后的表单或超链接中的项目名可以这样获取!!!

     


    EL函数库(由JSTL提供)

      *导入标签库:<%@   tablib  prefix="fn"  uri="http://java.sun.com/jsp/jstl/functions " %>

     


    自定义函数库

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

  • 相关阅读:
    Python2.7-math, cmath
    Python2.7-pprint
    Python2.7-copy
    Python2.7-weakref
    Python2.7-Queue
    Python2.7-sched
    Python2.7-array
    Python2.7-bisect
    搜索专题:Balloons
    【洛谷P4460】解锁屏幕【状压dp】
  • 原文地址:https://www.cnblogs.com/xjs1874704478/p/10869061.html
Copyright © 2020-2023  润新知