rss· 投稿· 设为首页· 加入收藏· 繁體版

JSP_EL表达式

    EL(Expression Language):JSP2.0中引进EL表达式语言是一种简洁的数据访问语言
EL表达式的基本语法为:$(var),所有的表达式都以"${"开头以"}"结尾。通过点运算符或方括号来访问对象的属性或数组的元素EL运算符:
/    div
%    mod
==    eq
!=    ne
<    lt
>    gt
<=    le
>=    ge
&&    and
||    or
!    not
a?b:c  if-else
empty    $(empty var)判断是否为空EL隐含对象    说明
application    将web应用范围内的属性名和属性值进行映射
cookie        把客户请求中的Cookie和Cookie对象进行映射
header        将HTTP请求头部的项目和项目值进行映射
headerValues    将HTTP请求头部的项目和所有匹配的项目值的数组进行映射
initParam    把Web应用的初始化参数名和参数值进行映射
pageContext    表示javax.servlet.jsp.PageContext对象
pageScope    把页面范围内的属性名和属性值进行映射
param        把客户请求中的请求参数名与参数值进行映射
paramValues    把客户请求中的请求参数名与所有匹配的参数值进行映射
requestScope    把请求范围内的属性名和属性值进行映射
sessionScope    把会话范围内的属性名和属性值映射上述11个对象可分为4个类型
(1) 表示HTTP中请求的特定数据包括:header,headerValues,param,paramValues和cookie    ${header["user-agent"]} ==>    <%=request.getHeader("user-agent")%>
    ${header.host}        ==>    <%request.getHeader("host")%>
    ${cookie.username.value}==>    调用名称为username的Cookie对象的getValue()方法
    ${param.username}    ==>    <%request.getParameter("username")%>注意当属性名有特殊字符时不能使用点运算符如:header.user-agent是错误的写法(2)表示特定的范围包括:pageScope,requestScope,sessionScope,applicationScope
    
    ${sessionScope.cart.total} ==> 调用会话范围内属性名为card对象的getTotal()方法
    ${applicationScope.counter.count}表示调用web应用范围内的属性名为"counter"的对象的getCount()方法(3)表示PageContext对象。为pageContext    ${pageContext.servletContext.serverInfo} ==> <%application.getServletInfo()%>
    ${pageContext.request.requestURL} ==><%reqeust.getRequestURL()%>
    ${pageContext.response.CharacterEncoding} ==><%response.getCharacterEncoding()%>
    ${pageContext.session.creationTime}==><%session.getCreationTime()%>(4)表示web应用初始化参数集合,为initParam
    
    ${initParam.driver} ==> <%application.getInitParameter("driver")%>注意:在EL表达式中无法直接访问JSP文件中的隐含对象;EL表达式中的变量称为命名变量,它不是JSP文件中的局部变量或实例变量,而是存放在特定范围内的属性,命名变量的名字和属性名字对应。
例如:${username}等价于:
<%
    String username =(String)pageContextt.findAttribute("username");
    //从当前应用的范围内查找名为username的对象
    //范围由page->request->session->application
    if(username!=null){
%>    <%=usernaem%>
    <%}%>
简述如下代码执行结果:
<%String username="shark"%>
${username}
结论:以上代码不会打印username局部变量。因为${username}代表特定范围内的username属性。如果从page->request->session->application都没有找到则显示没有任何输出另配置不使用EL表达式方法:
通过配置文件实现
<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <el-ignored>true</el-ignored>
    </jsp-property-group>
</jsp-config>

顶一下
(0)
踩一下
(0)