EL和JSTL

EL和JSTL

1. 掌握使用EL表达式优化页面显示

1.1 EL的概述

<%
	Object obj = request.getAttribute("categoryList");
	// 想使用集合
	if(obj != null){
    	List categoryList = (List)obj;
	}
%>
// ${categoryList}   |  ${requestScope.categoryList}   
// ${not empty categoryList}

<%
	// 取出来信息
	User user = (User)session.getAttribute("loginUser");
	// 假设不为空:取用户的数据
	user.getUserName();
	user.getUserPassword();
%>
// ${loginUser}
// ${loginUser.userName}
// ${loginUser.userPassword}

EL(Expression Language):它是JSP中专门用于从四大作用域中区数据的一种表达语言。

四大作用域:

  • **page :**只能在当前JSP页面使用
  • **request :**存储的数据只能在同一次请求中有效(请求转发可以保证请求不会重新发起)
  • **session :**存储的数据只能在同一个会话中有效(只要浏览器不会完全关闭,都属于一个会话)
  • **application :**存储的数据可以在整个应用中都有效(服务器开启可以一直使用,关闭则自动销毁)

1.2 EL的基本语法

从作用域中取出变量数据

${作用域中的变量名}
例如:request.setAttribute("username","张三");
取数据:${username}
// EL在取数据时,如果查找不到,则默认不显示,不像之前的getAttribute()系列 返回null

// 完整语法如下:从作用域种取数据,应该加上作用域的前缀
${pageScope.键名}			Scope:作用域
${requestScope.键名}
${applicationScope.键名}
// 当采用上方的简写形式时,它会默认从 page -> request -> session -> application 依次查找数据(范围小 -> 范围大)

1.3 EL操作各类型数据

  • EL 操作数组

    例如:${nameArr[索引]}

  • EL操作对象

    可以使用.来获取对象的属性,也可以使用[ ] 它们实质上调用的还是getter方法

    用户名:${loginUser.username}
    用户类型:${loginUser.userType}
    用户名:${loginUser["username"]}
  • EL 操作集合

    List 类似于数组

    Map 类似于对象

1.4 EL操作运算符

EL内支持各种运算符,算术运算符,关系运算符,逻辑运算符和三元运算符。

另外它还有一个特别的关键字:empty 用于判断一个字符串(null、空字符串)、集合(null、空集合)等内容是否为空

判断不为空:not empty

1.5 EL隐式对象

  • pageScope

  • requestScope

  • sessionScope

  • applicationScope

  • pageContext:用于获取其他的作用域对象

  • param:等价于request.getParameter(name)

  • paramValues:request.getParameterValues(name)

  • header:获取请求头信息

  • headerValues:获取多个请求头信息

  • initParams:获取web.xml中配置的初始化参数信息

  • cookie:获取cookie信息

2. 掌握使用JSTL标签优化页面显示

JSTL:(Java Server Pages(JSP) Standard Tag Library)

它需要结合EL表达式来使用! 用于在JSP页面进行一些数据处理操作。选择结构、循环结构…

JSTL默认没有集成在Java EE 中。想使用必须先下载并导入

使用步骤 :

  1. 下载jstl 1.2并导入工程

  2. 通过tablib声明引入到JSP页面

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

2.1 JSTL 输出


<%
// request.setAttribute("uname", "张三");
%>
<%--  --%>
<%--  --%>

2.2 JSTL 设置

target:ELT表达式 对象

property:给某个对象的某个属性赋值

value:要赋的值


	<%
		// request.setAttribute("uname", "张三");
		User user = new User();
		user.setUsername("李四");
		request.setAttribute("loginUser",user);
	%>
	${uname}
<%-- --%> 用户名:${loginUser.username}
用户类型:${loginUser.userType}

2.3 JSTL 移除

 从指定作用域移除内容

2.4 条件语句-选择结构


	
	


	当前登录用户类型为:
	<%-- 经理
	普通员工 --%>
	
	
	
		经理
		老板
		普通员工
	

2.5 循环语句-循环结构


<%
		User user1 = new User("张三",2);
		User user2 = new User("李四",0);
		User user3 = new User("王二",1);
		List userList = Arrays.asList(user1,user2,user3);
		
		request.setAttribute("userList", userList);
	%>
	
	
	<%-- 
		${status.count} --> ${user.username}
--%> <%-- ${num}
--%> <% Map map = new HashMap<>(); map.put("username","张三"); map.put("abc","李四"); map.put("123","王二"); request.setAttribute("map", map); %> ${entry.key} --> ${entry.value}

你可能感兴趣的:(EL和JSTL)