详解el表达式
EL表达式
设计目的: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;
}
@Override
public 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) }声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了
