EL表达式

一、原理

        在得到页面请求的时候,Tomcat服务器会把JSP文件转换成.java文件存放在work\Catalina目录下,然后编译成.class文件执行。当读取.jsp文件发现“${”开头的样式就表明是EL表达式,Tomcat会将其进行转换,如果没有“}”反括号,则抛出异常。

二、使用范围

         EL表达式只有在JSP页面才可以正确被执行。如果在JSP中引用一个外部文件(如:js),在外部文件中使用EL表达式是无法被服务器识别的,因为服务器不会去加载他们的内容,没有对其编译。而在jsp文件的任何地方都可以使用EL(如标签里面、JavaScript里面、字符串里、双引号里等)。

三、使用设置

        如果所有页面都要使用EL,则首先查看web.xml,如果在<jsp-config/>里有个<el-ignored>false</el-ignored>标签就可以。如果部分页面需要EL,则在相应的jsp添加<%@page isELIgnored=”false”%>

四、格式

        EL可以使用${student.name}或${student[“name”]}两种方式,如果属性名带有特殊字元(”.” 、“,” 、“-“)等非字母或数字者,就一定要用[]。

五、隐含物件(Implicit Objects)

        共11个,除了pageContext是JavaBean物件,对应于javax.servlet.jsp.PageContext型态外,其余均对应java.util.Map型态。

        1+4个域对象(方便获得存在于域对象中的属性,并获得域对象的引用)。

(1)pageContext

        JSP页的上下文,对应于JSP页面中的pageContext对象,可以用于访问JSP隐式对象(如request,response,session,servletContext,out等)。       

<html>
   <body>
       <% session.setAttribute("session_value","1234567890"); %>
        請求方法(get/post): ${pageContext.request.method} <br>
        請求參數: ${pageContext.request.queryString}<br>
        使用者IP: ${pageContext.request.remoteAddr}<br>
        使用者國別: ${pageContext.response.locale.country}<br>
           session名稱: ${pageContext.session.valueNames[0]}
	   请求的URL(不包括参数):${pageContext.request.requestURL}
	   服务的webApplication名称:${pageContext.request.contextPath}
	   用户名称:${pageContext.request.remoteUser}
	   Session是否为new:${pageContext.session.new}
   </body>
</html>
(2)pageScope:代表page域中用于保存属性的map对象

(3)requestScope:代表request域中用于保存属性的map对象

(4)sessionScope:代表session域中用于保存属性的map对象

(5)applicationScope:代表application域中用于保存属性的map对象

<html>
     <body>
         <%
         pageContext.setAttribute("testing","PageContext");
         request.setAttribute("testing","Request");
         session.setAttribute("testing","Session");
         application.setAttribute("testing","Application");
         %>
         pageScope : ${pageScope.testing}<br>
         requestScope : ${requestScope.testing}<br>
         sessionScope : ${sessionScope.testing}<br>
         applicationScope : ${applicationScope.testing}
    </body>
</html>
【4个关于请求的对象(获取请求参数)】

(6)param:表示一个保存了所有请求参数的Map对象

<html>
    <body>
        <form action="">
            姓名:<select name="userName" size="1">
            <option value="ZS">张三</option>
            <option value="LS">李四</option> 
            </select><br>
            年龄:<input type="text" name="userAge"><br>
            <input type="submit" value="Submit">
            <br>
               你輸入的資料為:<br>
               ${param.userName} 今年 ${param.userAge} 岁
        </form>
    </body>
</html>
(7)paramValues:同上,它对于某个请求参数,资料不只一个时,返回的是一个字符串数组

<html>
    <body>
        <form action="">
            参与人员:
            <input type="checkbox" name="people" value="ZS"/>张三
            <input type="checkbox" name="people" value="LS"/>李四
            <input type="checkbox" name="people" value="WW"/>王五
            <br>
            <input type="submit" value="Submit">
            <br>
               你選的產品有:<br>
               ${paramValues.people[0]} ${paramValues.people[1]} ${paramValues.people[2]}
        </form>
    </body>
</html>
(8)header:表示一个保存了所有http请求头字段的Map对象
<html>
    <body>
      使用者的语言:${header["accept-language"]}
    </body>
</html>
(9)headerValues:同上,返回字符串数组。当同一标头名称拥有不同的值时,则需使用这个
<html>
    <body>
        <fmt:requestEncoding value="Big5"/>
        Connection : ${headerValues["connection"][0]}<br>
    </body>
</html>
(10)cookie:表示一个保存了所有cookie的Map对象,将cookie名称映射到单个cookie对象
<html>
    <body>
        <fmt:requestEncoding value="Big5"/>
        名字:${cookie["username"].value}  
        <%
           Cookie cookie = new Cookie ("username","Ted");  ---將Ted這名字存到cookie中,名稱為username
           cookie.setMaxAge(30);   ---生命週期30秒
           response.addCookie(cookie);
        %>
    </body>
</html>
(11)initParam:表示一个保存了所有web应用初始化参数的map对象

  • 我们可以在web.xml文件中设定系统的预设参数:

<context-param>
     <param-name>mynameis</param-name>
      <param-value>Ted</param-value>
</context-param>
<context-param>
      <param-name>myoffice</param-name>
      <param-value>Taiwan</param-value>
</context-param>

  • 在JSP中使用:

<html>
    <body>
        <fmt:requestEncoding value="Big5"/>
        名字 : ${initParam.mynameis}<br>
        辦公室在 : ${initParam.myoffice}
    </body>
</html>
六、EL运算

(1)    算数运算:+、-、*、/(or div)、%(or mod)

(2)    逻辑运算:and、or、not

(3)    关系运算:Less-than(<or lt)、Greater-than(>or gt)、Less-than-or-equal(<=or le)、Greater-than-or-equal(>=or ge)、Equal(

= = or eq)、NotEqual(!= or ne)











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值