EL表达式
来源:互联网 发布:解压缩zip linux 编辑:程序博客网 时间:2024/06/06 12:47
一、原理
在得到页面请求的时候,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)
- 【EL】EL表达式
- EL表达式
- EL表达式
- EL表达式
- EL表达式
- EL表达式
- EL表达式
- EL表达式
- EL表达式
- el表达式
- EL表达式
- EL表达式
- EL表达式
- el表达式
- el 表达式
- EL表达式
- EL表达式
- EL表达式
- oppo find 7特色功能
- org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehau
- 分割/截取字符串
- 分布式基础——RPC通信
- 字符串匹配之BM和KMP算法
- EL表达式
- linux 共享内存与nginx共享内存
- eclipse常用快捷键
- Linux下cron的使用
- 诺基亚新专利
- Android自定义属性,format详解
- App自适应draw9patch不失真背景
- java 自定义输出工具
- 黑马程序员--java基础--java基础知识