• el表达式


    el表达式的主要作用是代替jsp页面上的<%=   %>,也就是说,el表达式主要作用是向浏览器输出数据,例如${1+2} 会浏览器输出3.

    EL主要作用:

    1. 获取数据(主要是域中数据)
    2. 执行运算
    3. 获取web常用对象
    4. 调用java方法(EL函数)

    El获取web常用对象

    主要是通过el内置对象来操作,它一共有11个内置对象

    • pageScope
    • requestScope 
    • sessionScope 
    • applicationScope

    以下两个可以用于获取请求参数:

    •     param:获取一个Map<String,String> key就是请求参数名称,value是值
    •     paramValues:获取一个Map<String,String[]>它与request.getParameterMap()结果一样。

    获取http请求头信息:

    •     header:获取一个Map<String,String>它封装的是所有的http请求头信息
    •     headerValues:获取一个Map<String,String[]>它封装的是所有的http请求头信息

    获取全局初始化参数:

    •     initParam: 获取一个Map<String,String>它封装了所有的全局初始化参数

    获取cookie对象:

    •     cookie:获取一个Map<String,Cookie> 它封装了所有的http请求的中cookie信息,key就是cookie的名称,value就是这个cookie对象。

    pageContext对象:

    • pageContext 它与jsp页面上内置对象pageContext一样。

    我们在el中使用pageContext一般使用:

    ${pageContext.request.contextPath}

    El表达式获取域中数据

    • page域----------------------${pageScope.name}          //name是对应数据的name
    • request域----------------------${requestScope.name}
    • session域----------------------${sessionScope.name}
    • application域----------------------${applicationScope.name}

    使用el表达式获取时,如果没有查找到结果,返回的不是null,而是一个””空字符串.

    1

      el表达式获取域中复杂数据:List 和 Map 集合对象,自定义对象。

    <%@page import="online.msym.bean.User"%>
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    
    <title>My JSP 'index.jsp' starting page</title>
    </head>
    
    <body>
        EL获取域中复杂数据
        <hr>
        <%
            //定义一个数组
            String[] st = { "aa", "bb", "cc" };
            request.setAttribute("st", st);
        %>
        获取request域中st数组第二个值:
        <br> jsp:<%=((String[]) request.getAttribute("st"))[1]%><br>
        el:${requestScope.st[1]}
    
        <hr>
        <%
            //定义一个集合List
            List<String> list = new ArrayList<String>();
            list.add("111");
            list.add("222");
            list.add("333");
            request.setAttribute("list", list);
        %>
        获取request域中list集合中第二个值:
        <br> jsp:<%=((List<String>) request.getAttribute("list")).get(1)%>
        <br> el:${requestScope.list[1]}
    
        <hr>
        <%
            //定义一个Map集合
            Map<String, String> map = new HashMap<String, String>();
            map.put("one", "aaa");
            map.put("two", "bbb");
            request.setAttribute("map", map);
        %>
        获取request域中map集合key=two的value值
        <br> jsp:<%=((Map<String, String>) request.getAttribute("map"))
                        .get("two")%>
        <br> el:${requestScope.map.two }
    
        <hr>
        <%
            //向request中存储一个javaBean
            User user = new User();
            user.setUsername("tom");
            user.setPassword("123");
            request.setAttribute("user", user);
        %>
        获取requst域中user对象的username属性值
        <br> jsp:<%=((User) request.getAttribute("user")).getUsername()%><br>
        el:${requestScope.user.username}
        <br>
    
        <hr>
        在el中使用"."与[]可以实现同样的效果:
        <br> ${user["username"]}
        <br> ${user.username}
        <br> 问题:.与[]有什么区别?
        <br> 注意:如果名称中不包含特殊符号,那么.与[]一样,但是如果名称中包含了特殊符号,那么我们就只能使用[]
        <br>
        <%
            request.setAttribute("login.msg", "用户名或密码错误");
        %>
        <br> ${requestScope.login.msg }    //这里不会打印出内容,因为获取的是空字符串””
        <br> ${requestScope["login.msg"] }   //这里会打印出:用户名或密码错误
    
        <hr>
        关于[]中名称如果不使用引号引起有什么问题?
        <br>
        <%
            request.setAttribute("username", "fox");
            request.setAttribute("fox", "这是一个好人");
        %>
        <br>
        ${requestScope["username"]}<br>    //这里会打印:fox
        ${requestScope[username]}        //这里会打印:这是一个好人
    </body>
    </html>

    El表达式使用时注意事项:

        EL表达式是在jsp2.0规范中的一门技术,要想使用el表达式必须使用支持jsp2.0技术的web服务器(tomcat6以上)

        Jsp2.0对应的servlet版本是servlet2.4 对应 javaEE1.4.

        我现在使用的servlet版本是servlet2.5  javaEE5.0

    如果在程序中发现el不可以使用:

    1. tomcat是否版本有问题,使用tomcat6以上;
    2. 在jsp页面上是否设置了isELIgnored="true"。
  • 相关阅读:
    CocoaPods 的安装和使用介绍
    C 语言宏快速入门
    C中的预编译宏定义
    __block 与 __weak的区别理解
    Xcode7 项目转 Xcode6 时 出现问题
    css margin 参数
    第三方框架 INTULocationManager 定位的一些方法
    ios 定位 监听是否跨入某个指定的区域
    ios 指南针
    ios 定位 航向检测
  • 原文地址:https://www.cnblogs.com/daimajun/p/6582583.html
Copyright © 2020-2023  润新知