您的位置:首页 > 编程语言 > Java开发

JavaWeb——EL和JSTL

2019-06-04 23:27 351 查看

1.EL表达式

1.1.EL概念

  • EL:Expression Language,
    表达式语言
  • 作用
    :替换和简化JSP页面中Java代码的编写

1.2.EL语法

${表达式}

!!!注意:

JSP默认支持EL
,那么假如要输出“3 > 4”字符串样式怎么办呢?有两种方法:

  • 使用isELIgnore
    ,但是这个方法会是这个页面的所有EL表达式都被忽略
  • 使用“\”忽略个别

1.3.EL使用

1.3.1.运算

运算符:

  • 算数运算符:+、-、*、/(div)、%(mod)
  • 比较运算符:>、<、=、>=、<=、==、!=
  • 逻辑运算符:&&(and)、||(or)、|(not)
  • 空运算符:empty
  • ${empty list}:用于
    判断字符串、集合、数组对象是否为null或者长度是否为0
  • ${not empty str}:表示判断字符串、集合、数组对象是否不为null并且长度大于0

1.3.2.获取值

!!!注意:

EL表达式只能从域对象中获取值

语法:

  • 1.${域名城.键名}:
    从指定域中获取指定的键值

域名城:

  • pageContext:pageScope
  • request:requestScope
  • session:sessionScope
  • application(ServletContext):applicationScope
  • 2.${键名}:表示一次
    从最小的域中去查找是否有该键对应的值,直到找到为止
  • 3.获取
    对象、List集合、Map集合
    的值
  • 对象:${域名城.键名.属性名}

本质上会去调用对象的getter方法

  • List集合:${域名城.键名[索引]}
  • Map集合:${域名.键名.key名}或者${域名.键名[“key名”]}

java.class

package xpu.edu.web.servlet.EL;

import java.util.Date;

public class User {
private String name;
private int age;
private Date birthday;

public String getName() {
return name;
}

public int getAge() {
return age;
}

public Date getBirthday() {
return birthday;
}

public void setName(String name) {
this.name = name;
}

public void setAge(int age) {
this.age = age;
}

public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}

JSP页面(Markdown貌似并不支持JSP代码高亮,所有有点丑,将就一下)

<%@ page import="xpu.edu.web.servlet.EL.User" %>
<%@ page import="java.util.*" %><%--
Created by IntelliJ IDEA.
User: 15291
Date: 2019/6/4
Time: 21:27
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>获取数据</title>
</head>
<body>

<%
User user = new User();
user.setAge(18);
user.setName("邹鸡儿");
user.setBirthday(new Date());

request.setAttribute("u",user);

List list = new ArrayList();
list.add("邹鸡儿");
list.add("邹大炮");

request.setAttribute("list",list);

Map hashMap = new HashMap();
hashMap.put("name","邹鸡儿");
hashMap.put("age","19");

request.setAttribute("hashMap",hashMap);
%>

<h3>获取对象中的值</h3>
${requestScope.u}<br/>

<%--
通过对象的属性来获取
* setter或getter方法,去掉set或get,在剩余部分首字母变小写
* setName——>Name——>name
--%>

${requestScope.u.name}<br/>
${requestScope.u.age}<br/>
${requestScope.u.birthday}<br/>

<h3>获取List的值</h3>
${requestScope.list}<br/>
${requestScope.list[0]}
${requestScope.list[1]}
<%--
越界时会输出空字符串""
--%>
${requestScope.list[10]}

<h3>获取Map的值</h3>
${requestScope.hashMap.name}<br/>
${requestScope.hashMap["name"]}

</body>
</html>

1.4.EL的隐式对象

EL表达式有11个隐式对象
,着重了解pageContext:
可以获取JSP其他八个内置对象

${pageContext.request.contextPath}:动态获取虚拟目录

2.JSTL

2.1.JSTL概念

  • JSTL:JavaServer Pages Tag Library,JSP标准标签库,是由Apache组织提供的开源的免费JSP标签
  • 作用:
    用于简化和替换JSP页面的Java代码

2.2.JSTL使用步骤

  • 1.导入相关jar包
  • 2.引入标签库:taglib指令:<% taglib %>
  • 3.使用标签

2.3.常用的JSTL标签

  • if
    :相当于Java代码的if语句
  • 属性:test为必须属性,接收boolean表达式,如果表达式为true,就显示if标签体内容,如果为false,则不显示标签体内容
  • 注意:
    一般test属性会结合EL表达式一起使用

  • choose
    :相当于Java代码的switch语句
  • 使用choose标签声明:相当于switch声明
  • 使用when标签做判断:相当于case
  • 使用otherwise标签做其他情况声明:相当于d
  • foreach
    :相当于Java代码的for语句

1.完成重复操作

属性:
1.begin:开始值
2.end:结束值
3.var:临时变量
4.step:步长
5.varStatus:循环状态对象

index:容器中元素索引,从0开始
count:循环次数,从1开始

2.遍历容器

属性:
1.item:容器对象
2.var:容器中元素临时变量
3.varStatus:循环状态对象

index:容器中元素索引,从0开始
count:循环次数,从1开始

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: