el、jstl

EL(Expression Language)EL表达式

作用:在JSP中消灭java代码

语法: "${  }"

用法:

加判断,避免空指针异常

<%

User user = (User)session.getAttribute("user");

if(user != null){

out.write("尚学堂教育系统,欢迎"+user.getRealname()+"光临本站!");

}else{

out.write("尚学堂教育系统,欢迎光临本站!");

}

%> --%>

<%-- 可能会报500异常:

尚学堂教育系统,欢迎<%= ((User)session.getAttribute("user")).getRealname() %>光临本站! --%>

<%-- 更为简单,稳妥的方式! --%>

<%

int a = 10;

//数据在四大作用域对象中

pageContext.setAttribute("a", a);

request.setAttribute("aaa", true);

session.setAttribute("age", 18);

application.setAttribute("name", "laowang");

// 简单对象

User user = new User(1, "admin", "admin", "老王");

request.setAttribute("uuu", user);

// 复合对象

User u2 = new User(2, "admin-laowang", "123123", "老王", new Address(

"广东省", "广州市", "天河区"));

pageContext.setAttribute("u2", u2);

//List中的数据

List list = new ArrayList();

list.add("apple");

list.add("orange");

list.add("watermelon");

list.add("pineapple");

pageContext.setAttribute("fruits", list);

//Map中的数据

Map map = new HashMap();

map.put("name", "zhangsan");

map.put("age", 18);

map.put("gender", "女");

map.put("address", new Address("广东省", "广州市", "天河区"));

pageContext.setAttribute("person1", map);

//作用域中有相同的key

pageContext.setAttribute("xxx", "pageContext");

request.setAttribute("xxx", "request");

session.setAttribute("xxx", "session");

application.setAttribute("xxx", "application");

User uu1 = new User(5,"admin","admin","张三");

User uu2 = new User(5,"admin","admin","张三");

request.setAttribute("uu1", uu1);

request.setAttribute("uu2", uu2);

request.setAttribute("score", 99);

pageContext.setAttribute("a1", null);

pageContext.setAttribute("a2", new ArrayList());

pageContext.setAttribute("a3", new HashMap());

pageContext.setAttribute("a4", "");

%>

尚学堂教育系统,欢迎${user.realname}光临本站!

EL表达式从哪里取值?一般情况下,从作用域对象中取值

${a} --- ${aaa} --- ${age} --- ${name}

EL表达式可以取什么类型的值?基本数据类型、引用数据类型(对象、复合对象、List、Map)

${uuu.realname} --- ${u2.addr.town} --- ${fruits[2]} ---

${person1.address.city}

EL表达式从哪个作用域中取值?默认从最小作用域中开始寻找,找不到往大的作用域中找,都找不到显示为空

${xxx}

EL从指定作用域中取值?

pageScope、requestScope、sessionScope、applicationScope

${pageScope.xxx }--- ${requestScope.xxx} --- ${sessionScope.xxx } ---

${applicationScope.xxx }

EL表达式还可以取请求参数中的值:param、paramValues

${param.username} --- ${paramValues.fav[2] }

EL表达式除了“.”操作符之外,还有“[ ]”操作符:“[]”可以解析子EL表达式

${uuu["realname"]} --- ${param.type} --- ${uuu[param.type]}

EL表达式中的为空判断:empty判断为空的有:空字符串、null、空集合、空map

${empty a1} --- ${empty a2} --- ${empty a3} --- ${empty a4}

EL表达式可以进行一些基本的数学运算

${5+4} --- ${5-4} --- ${5*4} --- ${5/4} --- ${5%4} --- ${5+"4"}

EL表达式可以进行一些逻辑判断

${5>4} --- ${ 5 == 4} --- ${ 5 eq 4 } --- ${uu1 == uu2} --- ${uu1 eq uu2} --- ${score == 99 }


JSTL(JSP Standard Tag Library) JSP标准标签库

作用:在JSP中消灭java代码

使用:1.下载jar包,并导入

2.使用<%@ taglib %>引入标签库,设置uri和prefix的属性值(属性的值可以在jstl-impl-1.2.2.jar/META-INF/c.tld找到)

3.使用标签。

标签用法:

c:out标签:用于将作用域中的对象输出,default属性会在value属性为空时显示

c:set标签:用于将一个数据保存在作用域中(默认最小作用中),通过scope设定存放的作用域

${requestScope.name}

1*1 1*2
2*1 2*2

${table}-${table}-${table}

c:remove标签:将作用域中的指定key的数据删除(默认删除所有作用域中的指定key的数据)

${aaa}

c:if标签:条件判断(单条件)

优秀!

良好!

c:choose 、 c:when、 c:otherwise标签:条件判断(多条件)

注意以下几点:1.c:when必须在c:otherwise之前出现

2.c:otherwise只能出现一次

3.c:when和c:when和c:otherwise之前不允许出现其他任何字符

优秀!

良好

及格

不及格

c:forEach标签:循环

items:循环体,通过使用EL表达式获取循环的内容

begin & end:只能为数字,当没有items属性时,从begin数字循环到end数字;当有items属性时,begin & end就表示下标

step:步长

var:表示每次的循环体

varStatus:当前循环体的状态:有几个属性--first(判断当前循环体是否为第一个)、last(判断当前循环体是否为最后一个)、count(当前循环次数)、index(当前循环体的下标)

${each}


${each}


${person.username}


${person.username} --- ${status.first} --- ${status.last} --- ${status.count} --- ${status.index}


id用户名真实姓名
${person.id}${person.username }${person.realname }

c:redirect标签:重定向

<%-- --%>

c:import标签:指定一个url的页面在本页面中

<%-- --%>

${fn:length(phone) }

你可能感兴趣的:(el、jstl)