Web - EL表达式和JSTL表达式.

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_42986107/article/details/83117088

一、EL表达式.

语法: ${ 表达式 }
目的: 替代jsp页面中输出脚本的编写.

1.作用一: 获取域中数据.

四大域对象: pageContext  ->  request  ->  session  ->  application 

1.获取简单数据.${ 域名.属性名 }  域对象Scope.属性名.  例: requestScope.属性名.
  简写方式: ${ 属性名 }  四个域对象中,从小到大查找. 
  简写使用前提: 属性名不能重复. 
  
2.获取复杂数据.
  获取数组数据: ${ 数组名[index] } 
  获取集合数据: ${ 属性名[index] } 
  获取map数据:  ${ map集合名.key名字 } 
  
3.获取javaBean属性. 
  ${ bean名字.bean属性名 } 
  javaBean属性: geter/seter的方法去掉前缀 , 留下的字段名 . 
               并不是获取字段名.

获取javaBean属性案例:

jsp使用:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>获取域中javaBean数据</title>
</head>
<body>
    <%
        // 向域中添加javaBean
        User user = new User(1,"tom");
        user.setSalary(10000);
        request.setAttribute("user",user);
    %>
    <%-- 不看字段名 , 只看get/set方法去掉前缀的字段名  --%>
    ${user.id}   // 并没有字段名.
    ${user.name} 
    ${user.year} // 并没有year字段名,但有getYear方法. 

</body>
</html>

javaBean代码:

public class User {
    private int fdafdjaf;
    private String name;
    private double salary;

    public double getYear(){ return salary*12; }

    public User(int id, String name) { this.fdafdjaf = id;  this.name = name;}

    public int getId() {  return fdafdjaf;  }

    public void setId(int id) { this.fdafdjaf = id; }

    public String getName() { return name; }

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

    public double getSalary() {  return salary; }

    public void setSalary(double salary) { this.salary = salary; }
}

2.作用二: 支持运算.

+ 不能用作拼接字符串.
支持三元运算符.
支持判空运算: empty  属性名.
空: 对象为null , 集合长度为0 , 空字符串.

3.作用三: 获取内置对象.

pageContext对象:
pageContext.getRequest().getContextPath();
如果多次使用:可以在最上面添加一行,使用ctx来获取.
<c:set var=“ctx” value="${pageContext.request.contextPath"}

二、JSTL核心标签库(core)的使用.

JSTL(JSP standard Tag Library): JSP标准标签库.

jstl: 可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能.
核心库: core.                   标签库的URI: http://java.sun.com/jsp/jstl/core

1.需要先导入jar包.

jar包: javax.servlet.jsp.jstl.jar
         jstl‐impl.jar

2.页面中导入要使用的jstl标签库.

<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

3.常用的jstl标签.

1.<c:if>标签.
作用: 判断java代码.
属性:
         test=“条件表达式”. 判断表达式是否成立.
         var=“aaa”, 保存test属性的结果.

2.<c:forEach>标签.
作用: 循环java代码.
属性:
         begin: 循环开始索引,
         end: 循环结束索引.
         items: 要循环的对象.(被遍历的集合)
         var: 被循环对象中的元素.
         varStatus: 正在被遍历的对象的一些状态属性信息(count-序号)

forEach遍历User对象案例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>jstl的forEach的使用</title>
</head>
<body>
    <%
        //有一个list集合 集合放置是user对象
        ArrayList<Object> users = new ArrayList<>();
        users.add(new User(1,"tom"));
        users.add(new User(102,"jack"));
        users.add(new User(333,"rose"));

        request.setAttribute("user",users);
    %>

     使用jstl遍历user集合<br>
     <c:forEach items="${user}" var="n" varStatus="aaa">
        ${aaa.count} --> ${n.id} --> ${n.name}
     </c:forEach>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_42986107/article/details/83117088