JavaWeb基础—EL表达式与JSTL标签库

EL表达式:

  EL 全名为Expression Language。EL主要作用

      获取数据(访问对象,访问数据,遍历集合等)

      执行运算

      获取JavaWeb常用对象

      调用Java方法(EL函数库)

给出一个小案例:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.jiangbei.domain2.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP ‘a.jsp‘ starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>
    <%
        Address addr = new Address();
        addr.setCity("北京");
        addr.setStreet("王府井");

        Employee emp = new Employee();
        emp.setName("张三");
        emp.setSalary(20000);
        emp.setAddress(addr);

        request.setAttribute("emp", emp);
    %>
    <h3>使用el获取request里的emp</h3>
    <!-- JavaBean导航,等同与调用了.getXxx()等方法 -->
    ${requestScope.emp.address.street }
    <!-- 输出当前项目名 -->
    ${pageContext.request.contextPath }
    <!-- 以下为一个超链接小例,其它表单等类同 -->
    <a href="${pageContext.request.contextPath }/EL/a.jsp">点击这里</a>
  </body>
</html>

  注意点:

EL表达式入门:JSP内置的表达式语言(报错,选中、复制、删除、粘贴)
${xxx} 完成全域查找(从小往大找,注意session的坑) 指定域查找 requestScope.xxx(必须要记住Scope的坑)
request.setAttribute();,设置完后进行查找
替代的是<%= %> 只能用来做输出,要用来做设置,等JSTL
主要用来做输出,可以输出的东西在下列11个内置对象中:(前10个都是map类型)
map.key这是EL的操作形式,map[‘User-Agent‘]等,用于规避字符二义性
pageScope
requestScope
sessionScope
applicationScope
跟参数相关:
param;对应参数,适用单值参数,是map
paramValues;适用于多值,通过下标[0]等进行访问输出操作
跟头相关:
header;对应请求头,适用单值,是map
headerValues;类同上
initParam;获取web.xml中context-param的初始化参数
cookie;Map<String, Cookie> 值是Cookie对象
【注意】pageContext;${pageContext.request.contextPath}以后全部用此代替项目名,带了斜杠
而且此项目名会随着一起变!相当于调用了getRequest().getContextPath()

EL函数库:语法:${prefix:method(params)}

EL函数库(有JSTL提供)
首先需要导入标签库(lib下myeclipse带了jstl的jar包)

函数 描述

fn:contains(string, substring)
如果参数string中包含参数substring,返回true

fn:containsIgnoreCase(string, substring)
如果参数string中包含参数substring(忽略大小写),返回true

fn:endsWith(string, suffix)
如果参数 string 以参数suffix结尾,返回true

fn:escapeXml(string)
将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回

fn:indexOf(string, substring)
返回参数substring在参数string中第一次出现的位置

fn:join(array, separator)
将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。

fn:length(item)
返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。

fn:replace(string, before, after)
返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果

fn:split(string, separator)
返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素

fn:startsWith(string, prefix)
如果参数string以参数prefix开头,返回true

fn:substring(string, begin, end)
返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符

fn:substringAfter(string, substring)
返回参数substring在参数string中后面的那一部分字符串

fn:substringBefore(string, substring)
返回参数substring在参数string中前面的那一部分字符串

fn:toLowerCase(string)
将参数string所有的字符变为小写,并将其返回

fn:toUpperCase(string)
将参数string所有的字符变为大写,并将其返回

fn:trim(string)
去除参数string 首尾的空格,并将其返回
例:(通过<%%>存在pageContext中)
${fn:toLowerCase("Www.SinA.org")} 的返回值为字符串“www.sina.org”

自定义函数库:
1.定义类MyFunction(注意:方法必须为 public static且带返回值)
2.提供tld描述文件(new xml改后缀名tld),此文件可以放到WEB-INF下(推荐)或其目录下.(在jstl下找fn.tld借一下)
3.在jsp页面中采用taglib引入函数库
4.在el表达式中采用前缀+冒号+函数名称使用

JSTL标签库:目的是为了不在jsp页面中直接出现java业务逻辑的代码

  

JSTL标签库(依赖EL):标签库====重点
使用JSTL需要导入JSTL的jar包(myeclipse自带)
重点是四大库:
core:核心库(重点)
fmt:格式化库,日期,数字
sql:过时
xml:过时

导入标签库:先导jar包,再使用taglib导(会有提示的)<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
前缀一般是c,所以被亲切的称为c标签

core常用标签库:(当然可以标签内结束,目前个人认为推荐)
  输出标签(几乎不用):<c:out value="value" escapeXml=”{true|false}” default="default value"></c:out>
    escapeXml就是是否转义(比如一连串的alert)
  变量赋值标签:<c:set var="" value="" target="" property=""scope=""></c:set>
    可以理解为创建域的属性(类同request.setAttribute()中),注:requet每次请求完就死了
    默认是page域
  移除变量标签:<c:remove var=""></c:remove>
    与上对应,删除域变量,默认删除所有域中的,也可以指定域
  条件表达式标签:<c:if test="" var=”” scope=””></c:if>
    对应JAVA中的if语句(没有else)test中包含一个boolean值,test="${not empty a}"
  选择标签:<c:choose test=”{true|flse}”></c:choose>
    里面有when,对应else
    <c:when test="${score>=90}"></c:when>
  url标签:<c:url value="" />
    value指定路径名,会在前面自动加项目名
    子标签:<c:param>可以追加参数
    <c:url value="/index.jsp">
    <c:param name="username" value="张三"/>
    </c:url>
    属性var 不输出到页面,而是保存到域中
    这里可以和${pageContext.request.contextPath}相同功能PK
    <c:url value="/AServlet"/>但是得引标签库
  循环标签:<c:forEach var=”” begin=”” items=”” begin=”” end=”” sep=””varStatus=””></c:forEach>
    例;<c:forEach var="i" begin="1" end="10">
    </c:forEach> step还可以调步长i+=2
    当然还可以类似增强for循环遍历数组等,items后跟的是要遍历的数组集合等
    <c:forEach items="${strs}" var="str">${str}<br/></c"forEach> 在这里标签里items后不能有空格!
    依赖于EL表达式 ${} 注意!
    items后绝对不能乱加空格!var类似于增强for后面的单个变量
    后期要注意一定要注意items里的东西必须放到域里面
    这里有一个循环状态:类似于一个变量:varStatus 拥有count index等属性
  fmt常用标签库(了解):<%@ taglib uri="http://java.sun.com/jstl/core" prefix="fmt"%>
    <fmt:formatDate value="${requestScope.date}" pattern=""/>

例如:常用的例子:

  

22         <c:when test="${score>=90}">
23             你的成绩为优秀!
24         </c:when>
25         <c:when test="${score>70 && score<90}">
26             您的成绩为良好!
27         </c:when>
28         <c:when test="${score>60 && score<70}">
29             您的成绩为及格
30         </c:when>
31         <c:otherwise>
32             对不起,您没有通过考试!
33         </c:otherwise>
<c:forEach var="fuwa" items="${list}" begin="1" end="3" step="2">
33         &nbsp;<c:out value="${fuwa}"/><br/>
34     </c:forEach>
时间: 2024-12-13 15:52:43

JavaWeb基础—EL表达式与JSTL标签库的相关文章

JAVA Web基础 EL表达式与JSTL标签库

一.EL表达式语言1.EL表达式全称expression language,用于在JSP页面获取其内置对象的内容语法:${...}在jsp中page指令有一个属性是isELIgnored, 用来标记此页面是否忽略EL表达式, 默认为false,即不忽略2.用法说明常规写法举例:<%= request.getAttribute("test")>EL表达式写法:${test}//当作用域属性名都是唯一时可以这么写            ${requestScope.test}/

Java实战之04JavaWeb-04JSP、EL表达式、JSTL标签库

一.jsp部分 只要是与页面显示相关的都是重点 1.jsp的脚本 <%java代码%>:被翻译到service方法内部,局部变量,局部的功能 <%=表达式或变量%>:翻译成service方法中out.write(表达式或变量) <%!java代码%>:被翻译成servlet的全局的内容,方法,全局变量 2.jsp的运行原理 jsp在运行时翻译成servlet index.jsp------>work/index_jsp.java----->work/inde

Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用

<转载> 我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用   Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了更好的代码复用.Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求.Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供

EL表达式和JSTL标签库使用详解

JavaBean在JSP中的局限 获取JavaBean属性必须要实例化 强制类型转化 <% Employee employee = (Employee)request.getAttribute("employee"); Computer comp = employee.getComputer(); String manufacturer = comp.getManufacturer(); %> 如果页面编写出现逻辑错误,将会导致代码执行错误,并且JSP页面编译页面时也会产生

EL表达式 与 JSTL标签库

EL表达式 什么是el jsp内置的表达式语言 el表达式的作用 代替脚本 el如何获取数据 1.获取域中的数据 简单数据:${域中的key值} 注意:如果多个域中的key值一样 那么取出的顺序? 从范围小的开始查找,查找到以后就返回 如果没有查询到对应的key 返回""(空字符串) 例如: <% pageContext.setAttribute("num", 5); request.setAttribute("num", 1); sess

EL表达式和JSTL标签库

1 EL表达式 1.1 EL的概述 EL,全名为Expression Language. 主要作用: ①EL表达式主要用于替换jsp页面中的脚本表达式,以便于从各种类型的web域中检索java对象(某个web域中的对象),获取数据(访问javabean的属性.访问List集合.访问Map集合.访问数组). ②执行运算. ③利用EL表达式可以在jsp页面中执行一些基本的关系运算.逻辑运算和算数运算,以便于在jsp页面完成一些简单的逻辑运算. ④获取web开发常用的对象. ⑤EL表达式定义了一些隐式

JavaWeb(七)Cookie,EL表达式,标准标签库

Cookie Cookie概述 Cookie译为小型文本文件或小甜饼,Web应用程序利用Cookie在客户端缓存服务器端文件.Cookie是以键值对形式存储在客户端主机硬盘中,由服务器端发送给客户端,客户端再下一次访问服务器端时,服务器端可以获取到客户端Cookie缓存文件. Cookie是由服务器端创建的,然后由服务器端发送给客户端,客户端以键值对形式存储Cookie,并标注Cookie的来源.客户端再次访问服务器端时,存储的Cookie会保存在请求协议中,服务器端可以获取上次存储的缓存文件内

在EL表达式或者Struts标签库中格式化日期对象,即将Date转换为yyyy-MM-dd格式

一.EL表达式 首先,在jsp页面引入<fmt> tags,<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>. 其次,将EL表达式作为fmt标签属性的value值.再增加pattern参数,为日期制定需要格式化的格式,如yyyy-MM-dd.例如: <fmt:formatDate value="${object.dateproperty}&quo

EL表达式、 jstl标签

EL表达式(Expression Language) 目的:为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化. 1.语法结构 ${expression} 2.[ ]与.运算符 EL 提供"."和"[ ]"两种运算符来存取数据. 当要存取的属性名称中包含一些特殊字符,如 . 或 - 等并非字母或数字的符号,就一定要使用"[ ]".例如