EL技术

EL技术

EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本的编写。

EL从域中取出数据

EL最主要的作用是获得四大域中的数据,格式${EL表达式}

  • EL获得pageContext域中的值:$(pageContextScope.key);
  • EL获得request域中的值:$(request.key);
  • EL获得session域中的值:$(session.key);
  • EL获得application域中的值:$(application.key);

EL从四个域中获得某个值$(key);

同样是依次从pageContext域,request域,session域,application域中获取属性,在某个域中获取后将不在向后寻找。

示例:

1、EL获得普通字符串

2、EL获得User对象的值

3、EL获得List<String>的值

4、EL获得List<User>的值

5、EL获得Map<String,String>的值

6、EL获得Map<String,User>的值

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.itheima.domain.*" %>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <!-- 模拟域中的数据 -->
    <%
        pageContext.setAttribute("company", "阿里");
    
        //存储字符串
        request.setAttribute("company", "企鹅");
    
        //存储一个对象
        User user = new User();
        user.setId(1);
        user.setName("zhangsan");
        user.setPassword("123");
        session.setAttribute("user", user);
        
        //存储一个集合
        List<User> list = new ArrayList<User>();
        User user1 = new User();
        user1.setId(2);
        user1.setName("lisi");
        user1.setPassword("123");
        list.add(user1);
        User user2 = new User();
        user2.setId(3);
        user2.setName("wangwu");
        user2.setPassword("123");
        list.add(user2);
        application.setAttribute("list", list);
        
    %>
    
    
    <!-- 脚本法是取出域中的值 -->
    <%=request.getAttribute("company") %>
    <%
        User sessionUser = (User)session.getAttribute("user");
        out.write(sessionUser.getName());
    %>
    <hr/>
    <!-- 使用EL表达式获得域中的值 -->
    ${requestScope.company }
    ${sessionScope.user.name }
    ${applicationScope.list[1].name}
    
    <!-- 使用el表达式 全域查找 -->
    ${company }
    ${user.name }
    ${list[1].name}
    
    <!-- el可以执行表达式运算 -->
    ${1+1 }
    ${1==1?true:false }
    <!-- empty 判定某个对象是否是null  是null返回true -->
    ${empty list}
    
    
</body>
</html>

EL的内置对象(九个)

pageScope,requestScope,sessionScope,applicationScope;

获取JSP中域中的数据

接收参数:param,paramValues;

获取请求头信息:header,headerValues;

获取全局初始化参数:initParam;

WEB开发中cookie:cookie;

WEB开发中的pageContext:pageContext;

例子:

复制代码
<!-- 获得表单的参数 -->
    <%
        request.getParameter("username");
    %>
    
    <!-- 使用el获得参数 -->
    ${param.username }
    ${header["User-Agent"] }
    ${initParam.aaa }
    ${cookie.name.value }    
${cookie.abc.value }
<!-- 通过el表达式获得request对象 --> 
${pageContext.request }
与${requestScope}不同,对象不仅包含域,而且还有其他数据和方法
<!--获得WEB应用的名称-->
$(pageContext.request.contextPath)相当于<%=pageContext.getRequest().getContextPath%>
复制代码
 
原文地址:https://www.cnblogs.com/-lwl/p/11260651.html