详解el表达式
来源:互联网 发布:手机淘宝怎么小二介入 编辑:程序博客网 时间:2024/06/07 15:48
设计目的:Expression Language,即表达式语言,为了使Jsp写起来更加快速和便捷,简化Jsp的代码
实现功能:1)访问存储在域中的数据
2)简化输出代码
3)可以做简单的运算
EL表达式特色:1)既可以使用算术表达式,也可以使用逻辑表达式
2)表达式中可以使用整型,浮点,字符串,常量,null等
一、用EL表达式做普通输出
<%String user="andy";request.setAttribute("user", user);request.setAttribute("user", u1);%> user= ${user }u=<%=u %>
二、用EL表达式访问Javabean的属性
定义一个User类
public class User {private String name;//User类的name属性private int age; //User类的age属性public User(){} //无参构造public User(String name, int age) {//有参构造函数super();this.name = name;this.age = age;}public void setName(String name) { //set和get方法this.name = name;}public String getName() {return name;}public void setAge(int age) {this.age = age;}public int getAge() {return age;}@Overridepublic String toString() {return "User [name=" + name + ", age=" + age + "]";}}
<%User u1=new User();u1.setName("andy");u1.setAge(30);request.setAttribute("user", u1);%>
//Jsp的输出user:<%=u1 %><br/>
//用EL表达式输出user:${user}利用el表达式访问javabean的属性<br/>${ user.name }<br/>
${ user.age }<br/>
//这种方式和.是一样的,都可以拿到user的属性值${ user["name"] }
三、EL表达式操作数组和集合
<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="gb2312" import="com.gec.User"
//记得这里要引包哟 import="java.util.*"%><%
<!-- 这里是创建list集合-->List<String> list=new ArrayList<String>();list.add("andy");list.add("candy");request.setAttribute("list", list);List<User> list2 = new ArrayList<User>();list2.add( new User("andy",12) );list2.add( new User("candy",13) );request.setAttribute( "list2", list2 ); Map<String,User> map=new HashMap<String,User>();map.put("andy", new User("andy",20));map.put("jakson", new User("jakson",21));request.setAttribute("map", map);
<!--创建数组-->String [] arr={"A","B","C"};request.setAttribute("ary", ar);%>list = ${ list }<br/>
[0] = ${ list['0'] }<br/>[1] = ${ list['1'] }<br/>[0].name = ${ list2['0'].name }[0].age = ${ list2['0'].age }<br/>${ map.andy.name }${map['jakson'].age} ${ary[0] }${ary['1'] }${ary['2'] }
四、算术运算符和逻辑运算符
算术运算符:
1)+,-,*,/或div
2)==或eq 判断是否相等
3)!=或ne 判断是否不等
4)<或lt 判断是否小于
5)>或gt 判断是否大于
6)<=或le 判断是否小于等于
7)>=或ge 判断是否大于等于
${1+1}<br/>${3-1}<br/>${4 div 4}<br/>${4*4}<br/><!-- ==是否相等 gt:>,ge:>=,le:<=,lt:<${3==2}<br/>${3 eq 2}<br/>
逻辑运算符:
1)&&或and 测试逻辑与
2)||或or 测试逻辑或
3)!或not 测试取反
4)empty 测试是否空值,${empty aa}
${a>3&&a<6}<br/>a为空:${empty a}<br/><!--三目运算符 -->${a>5 ?'早上':'下午' }
五、获取地址栏上参数的值以及获取服务器的根路径
//http://localhost:8089/JapTest2/el_test3/Test1.jsp?user=andy
<!-- 获取地址栏上的参数的值 -->${param['user'] }<br/> ${param['pass'] }<br/> <!-- 获取服务器的根路径 -->${pageContext.servletContext.contextPath }<br/>${ pageCotext.reuest.remoteHost}<br/>${pageContext.request.remotePort }<br/>${pageContext.request.requestURI }<br/>
六、获取指定域的参数
<%pageContext.setAttribute("user", "andy",PageContext.REQUEST_SCOPE);%><!-- 相当于pageContext.findAttribute() -->${user}<br/><!-- 获取指定区域的参数 -->pageScop:${pageScope['user']}<br/>requestScope:${requestScope['user']}<br/>sessionScope:${sessionScope['user']}<br/>applicationScope:${applicationScope['user']}<br/>
七、获取多个同名的地址栏参数的值
<!-- el的内置对象 ,取地址栏上的参数 http://localhost:8089/JapTest2/el_test3/Test1.jsp?user=andy--><%//获取多个同名的地址栏参数方法://http://localhost/JspTest2/el_test3/Test2.jsp?like=1&like=2&like=4%>${ paramValues.like[0] }<br/>${ paramValues.like[1] }<br/>${ paramValues.like[2] }<br/>
八、EL自定义函数
1)编写java类的静态方法。
package com.gec;//Java类的静态方法public class ElTest {public static Integer getMax(Integer a,Integer b){return (a>b)?a:b;}}
2)在TLD文件中配置EL自定义函数。
<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"><tlib-version>1.0</tlib-version><short-name>elf</short-name><uri>http://wwww.gec.cn/tld</uri><function><name>getMax</name><function-class>com.gec.ElTest</function-class><function-signature>java.lang.Integer getMax(java.lang.Integer,java.lang.Integer)</function-signature></function></taglib>
3)在jsp页面中通过tablib指令引用定义EL自定义函数的TLD文件。
<jsp-config> <taglib> <taglib-uri>http://wwww.gec.cn/tld</taglib-uri> <taglib-location>/WEB-INF/tld/sy.tld</taglib-location> </taglib> </jsp-config>
4)使用EL自定义函数。
<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="gb2312" import="com.gec.User"%> <!-- 叹号这种做法只能用在你当前的jsp --> <!-- <%!private int getMax(int a,int b){return 0;}%><%getMax(1,2); %>--><!-- 现在我们用自定义el函数 --><%@ taglib uri="http://wwww.gec.cn/tld" prefix="elf"%>${ elf:getMax(10,15) }
- JSTL详解--EL表达式
- JSTL详解---EL表达式
- EL表达式详解
- EL表达式详解
- EL表达式 (详解)
- EL表达式 (详解)
- EL表达式(详解)
- El表达式详解例子
- JSTL详解--EL表达式
- EL表达式实例详解
- EL表达式详解
- EL表达式的详解
- EL表达式详解
- EL表达式详解
- EL表达式 详解
- EL表达式详解
- EL表达式详解
- EL表达式详解
- Java内存分配
- Windows下安装配置MongoDB
- Microsoft Access、MySQL 以及 SQL Server 所使用的数据类型和范围。
- 次小生成树
- wine 64源码安装遇到的问题
- 详解el表达式
- Codevs 1173 最优贸易
- tensorflow初学之notMNIST
- tangniaobing .....
- 用NSAttributedString实现简单的图文混排-----(确实几个需要注意的地方都注意到了就好了。)
- matlab循环结构
- js prototype 和call
- Material Design系列风格控件之(一)----AppBarLayout实现上滑隐藏ToolBar
- MYSQL全文索引—CONTAINS语法