EL域对象:
(对比jsp)
jsp | EL |
---|---|
application | applicationScope |
session | sessionScope |
– | – |
request | requestScope |
pageContext | pageScope |
EL表达式:
- 格式:${域对象.关键字.属性名}(EL使用反射机制,需要又get方法读取属性,比如有个类对象,Student stu=new Student (String name,String sex)
直接用表达式输出,举个栗子:
首先创个学生类:Student.class:
public class Student{
private String sname;
private String ssex;
public Student(String sname,String ssex){
this.sname=sname;
this.ssex=ssex;
}
}
现在再创个jsp页面:
<body>
<%
Student stu =new Student("Tom","man");
session.setAttribute("skey",stu);
`%>``
学生:${sessionScope.skey.sname}
</body>
运行,然后就会报错。
错误原因就是我们还没在Student类里面添加setXXX和getXXX方法,所以添加了就行。
EL表达式简式:
- 格式:(不用写最前面的域对象)
${关键字}
但是,表达式会按照一个顺序来寻找输出对象,首先就是pageScope,所以最好是pageScope对象的时候使用这个
运算:
- 没有表达式:
<%
pageContext.setAttribute("key_1","125");
pageContext.setAttribute("key_2","125");
String num1=(String)pageContext.getAttribute("key_1");
String num2=(String)pageContext.getAttribute("key_2");
int sum=Integer.valueOf(num1)+Integer.valueOf(num2);
%>
运算结果:<%=sum%>
表达式:
${key_1+key_2}
常用内置对象:
-
param:
格式:${param.请求的参数名} -
paramValues:
${paramValues.请求参数名}
可以对比:String arry[]=request.getParameterValues(“str”);
code:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
数组一个元素:${paramValues.arry[0]}
数组其他元素:${paramValues.arry[1]}
运行图: