版权声明:https://blog.csdn.net/Dream_Weave https://blog.csdn.net/Dream_Weave/article/details/83088144
一、EL表达式
- 简介
- EL表达式介绍及作用:Expression Language(表达式语言),目的是替代JSP页面中的复杂代码。
- EL表达式语法:“${变量名}”。 - EL表达式的语法有两个要素:$ 和 {}。
例如: 点号记法:${BeanName.beanProperty} 数组记法:${BeanName[“beanProperty”]} //获取输出bean中的suser属性值; ${userBean.suser} 或 ${userBean[“suser”]} //获取map中key为id对应的值; ${mcType[“id”]}
- EL表达式可以使用 “.” 或者 “[]” 操作符在相应的作用域中取得某个属性的值。
- EL是JSP2.0规范的一部分,只要容器支持Servlet2.4/JSP2.0,就可以在JSP2.0网页中直接使用EL。
- 作用域
PS:使用EL的时候,默认会以一定顺序(pageContext、request、session、application)搜索四个作用域,将最先找到的变量值显示出来。 - 运算符
- 开启和关闭EL表达式
(1)开启方法:在servlet2.4之后默认方法为false,即可以不写或写成 <%@ page isELIgnored="false" %>
(2)关闭方法:<%@ page isELIgnored="true" %>
附:还有一种批量禁用EL的方法,可以在WEB-INF/web.xml中使用jsp-property-group标签批量禁用el,web.xml中进行如下配置。<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <el-ignored>true</el-ignored> </jsp-property-group> </jsp-config> </web-app>
- EL表达式教辅1——属性的范围
- EL表达式教辅2——“.”和“[]”的使用
- 待更新...
二、JSTL表达式
- JSTL介绍:JSP标准标签库(JavaServerPages Standard Tag Library),是由apache的jakarta小组来维护的。JSTL1.0 由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器组成。 如果要使用JSTL,则必须引用jstl.jar和 standard.jar两个包。
- 与EL表达式关系:JSTL通常会与EL表达式合作实现JSP页面的编码。
- JSTL开发准备:在JSP页面添加taglib指令:<%@taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c"%>。
- 为什么要使用JSTL标签?
- 在jsp中不建议直接书写Java代码(规范性问题)。
- EL表达式虽然可以解决“不用书写java代码”问题,但是对于复杂的数据(如数组、集合等)取值会很麻烦。
- 使用JSTL标签配合EL表达式能够很好的解决取复杂类型数据的问题,简化代码书写。 - JSTL常用标签介绍
- 通用标签:set,out、remove
- 条件标签:if、choose
- 迭代标签:forEach - 通用标签详解
- 条件标签详解
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!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>jstl中的if标签和choose标签</title> </head> <body> <c:set var="age" value="12" scope="request"></c:set> <!-- if标签: test:接判断的条件,如果条件为true,这执行标签体中的内容 --> <%-- <c:if test="${age==12 }"> 您的年龄为12岁 </c:if> hello world --%> <hr> <!-- choose标签 --> <c:choose> <c:when test="${age==12 }"> 您的年龄为12岁 </c:when> <c:otherwise> 您的年龄不为12岁 </c:otherwise> </c:choose> </body> </html>
- 迭代标签详解
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1、首先创建一个List集合,我们往这个List集合中存放多条数据 Map<String,Object> datamap1=new HashMap<String,Object>(); datamap1.put("shopName", "联想笔记本"); datamap1.put("address", "北京"); datamap1.put("price", 4999.99); Map<String,Object> datamap2=new HashMap<String,Object>(); datamap2.put("shopName", "神州笔记本"); datamap2.put("address", "南京"); datamap2.put("price", 3999.99); List<Map<String,Object>> lists=new ArrayList<Map<String,Object>>(); lists.add(datamap1); lists.add(datamap2); //2、将存在多条数据的List集合保存到request域中去 request.setAttribute("lists", lists); //3、我们再将5.jsp中取出request域中存放的list集合 request.getRequestDispatcher("/5.jsp").forward(request, response); }
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!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>通过jstl和EL表达式迭代List集合</title> </head> <body> <c:forEach items="${lists }" var="Map"> ${Map.shopName}<br/> ${Map.address}<br/> ${Map.price}<br/> </c:forEach> </body> </html>
- JSTL标签库分类
- core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。它还提供了用来生成和操作 URL 的标记。
- format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行JSP页面的国际化。
- xml 库包含一些标记,这些标记用来操作通过XML表示的数据。
- sql 库定义了用来查询关系数据库的操作。 -
优点
-
引入标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
-
待更新...