EL表达式


    EL表达式(Expression Language)
        语法:${expression}
       
        用处:获取页面表单提交的参数
                  进行数学与逻辑运算计算出结果
                  获取属性中的对象
                  获取JavaBean的属性值
             
        操作对象:Scriptlet:<%=((MyBean)request.getAttribute("myBean")).getName() %>
                          EL:${requestScope.myBean.name} 或 ${requestScope.myBean["name"]}
                     
        内置对象:requestScope:从request中获取数据
                        pageScope:从pageContext中获取数据
                        sessionScope:从session中获取数据
                        applicationScope:从ServletContext中获取数据
                  注:如果不显示指定获取数据所在的范围,如${myBean.name},默认从pageScope开始寻找,经过requestScope,sessionScope最后到applicationScope。若在过程中找到myBean则返回该对象,否则返回null。
                         param:对应request.getParameter(String name)方法
                         paramValues:对应request.getParameterValues(String name)方法
                         cookie:如果cookie中有一个名称为user的值,可以用${cookie.user}访问
                         header
                         headerValues
                         initParam
                         pageContext
                 
        pageContext:${pageContext.request.queryString}  取得请求的参数字符串
                                ${pageContext.request.requestURL}   取得请求的URL,但不包括请求参数字符串
                                ${pageContext.request.contextPath}  服务的web application的名称
                                ${pageContext.request.method}       取得HTTP的方法(GET,POST)
                                ${pageContext.request.protocol}     取得使用的协议(HTTP/1.1,HTTP/1.0)
                                ${pageContext.request.remoteUser}   取得用户名称
                                ${pageContext.request.remoteAddr}   取得用户IP地址
                                ${pageContext.session.new}          判断session是否为新的,新的session为刚由server参数而client尚未使用
                                ${pageContext.session.id}           取得session的ID
                                ${pageContext.servletContext.serverInfo}  取得主机端服务信息
       
        EL表达式的数学和逻辑运算
                

        .和[ ]
            等价:${sessionScope.user.sex}等价于${sessionScope.user["sex"]}
            混用:${sessionScope.shoppingCart[0].price}结果为shoppingCart中第一项物品的价格
            区别:当要存取的属性名中包含一些特殊字符,如 . 或 – 等并非字母或数字的符号,就一定要使用[ ]
                    例如:${user.my-Name}不正确,应当改为:${user["my-Name"]}
                  取值参数为变量的情况
                    ${sessionScope.user[data]}
                    此时,如果data是一个变量,假设data的值为"sex"时,上例等于${sessionScope.user.sex}假设data的值为"name"时,上例等于${sessionScope.user.name}而 . 无法做到动态取值的效果
       

     运算符优先级

        

 

posted @ 2019-02-15 11:31  !O0O!  阅读(153)  评论(0)    收藏  举报