初始JSP表达式语言-EL

EL简介
表达式语言-EL为web页和Bean管理提供了进行通信的机制。
EL表达式提供了获取对象及属性的简单方式,还支持简单的运算。


先看一个简单的例子,比如平时常用的:获取session中的username参数

  • 使用Java代码片段
<%
    if(null!=session.getAttribute("username")){
        out.print(session.getAttribute("username").toString());
    }
%>
  • 使用EL表达式
${username}

EL的特点

  • 可以与JSTL及javascript语句结合使用
  • 可以执行类型转转换
  • 不仅可以访问一般的变量,而且还可以访问JavaBean中的属性、嵌套属性和集合对象。
  • 可以执行算术运算、逻辑运算、条件运算
  • 可以获得命名空间(PageContext对象,这是页面中所有其他内置对象的最大范围的集成对象,通过他可以访问其他内置对象)
  • 在执行除法运算时,0做除数不会返回错误,而是返回无穷大
  • 可以访问JSP作用域(request、session、application及page)
  • 扩展函数可以和JAVA类的静态方法执行映射

禁用EL

  • 单句
\${username}   //  在前面加"\"就可以了
  • 整个页面
<%@ page isELIgnored="true" %>
  • 禁用服务器中的EL
    <jsp-config>
        <jsp-property-group>
            <url-pattern>*.jsp</url-pattern>
            <el-ignored>true</el-ignored>
        </jsp-property-group>
    </jsp-config>

EL保留关键字

    
andeqgttrue
instanceofdivorne
lefalseemptymod
notltgenull

EL访问数据

  • ${userInfo.name}
  • ${userInfo[name]}

EL判断对象是否为空

${empty user}

EL执行条件运算

${empty user? "是空的":"不是空的"}

EL的隐含对象

  • 页面上下文对象

页面上下文对象为pageContext,用于访问JSP内置对象(如:request、response、out、session、exception和page等)
但不能用于获取application、config、pageContext对象和servletContext对象,获取这些对象后,即可获取其属性值

(1)访问request对象
${pageContext.request}
获取request对象后,即可通过该对象获取与客户端相关的信息。如:HTTP报头信息 客户信息提交方式 客户端主机IP地址和端口
eg获取端口号:${pageContext.request.serverPort}

(2)访问response对象
${pageContext.response}
eg返回响应的内容:${pageContext.response.contentType}

(3)访问out对象
${pageContext.out}
eg返回缓冲区大小:${pageContext.out.bufferSize}

(4)访问session对象
${pageContext.session}
eg返回session有效时间:${pageContext.session.maxInactiveInterval}

(5)访问exception对象
${pageContext.exception}
eg返回JSP页面异常信息:${pageContext.exception.message}

(6)访问page对象
${pageContext.page}
eg获取page对象:${pageContext.page.class}

(7)访问servletContext对象
${pageContext.servletContext}
eg返回servlet上下文信息:${pageContext.servletContext.contextPath}

  • 访问作用于范围的隐含对象

EL提供了4个用于访问作用域范围的隐含对象,即pageScope  requestScope  sessionScope   applicationScope

(1)pageScope隐含对象
<jsp:useBean id="user" class="Model.User">
    <jsp:setProperty name="user" property="name" value="张三"></jsp:setProperty>
</jsp:useBean>
运用pageScope隐含对象获取JavaBean实例的name属性
${pageScope.user.name}

(2)requestScope隐含对象
<%
    request.setAttribute("username","YEN");
%>

${requestScope.username}

(3)sessionScope隐含对象
<%
    session.setAttribute("username","YEN");
%>

${sessionScope.username}

(4)applicationScope隐含对象
<%
    application.setAttribute("username","YEN");
%>

${applicationScope.username}

  • 访问环境信息的隐含变量

(1)param对象
param对象用于获取请求参数的值  应用在参数只有一个的情况

在login.jsp中:<input type="text" name="name">
获取提交过来的值:${param.name}

(2)paramValues对象

<input id="user" type="text" name="name" value="YEN">
<input id="user" type="text" name="sex" value="MEN">
<input id="user" type="text" name="age" value="20">

获取到的信息为:${paramValues.user[0]}${paramValues.user[1]}${paramValues.user[2]}


(3)header和headerValues对象
header对象用于获取HTTP请求的一个具体的header值 但某些情况下,可能存在同一个header拥有多个不同的值 这是就必须使用headerValues对象
eg:获取HTTP请求的connection(是否需要持久连接)属性  ${header.connection}或${header["connection"]}

(4)initParam对象
用于获取web应用初始化参数的值

eg:在web.xml中有
<context-param>
    <param-name>username</param-name>
    <param-value>YEN</param-value>
</context-param>

获取值:${initParam.username}

(5)cookie对象
<%
    Cookie cookie=new Cookie("username","YEN");
    response.addCookie(cookie);
%>
获取值:${cookie.username.value}


定义和使用EL函数


定义和使用函数包括以下三个步骤:
(1)编写一个Java类,并在其中编写静态的公共方法,用于实现自定义EL函数的具体功能
(2)编写标签库描述文件申明函数,该文件的扩展名为".tld",保存在web应用的WEB-INF文件夹下
(3)在JSP页面中引用标签库,并调用定义的EL函数实现相应的功能

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值