9.EL表达式 和 JSTL核心标签库

EL表达式

1./*获取数据*/

  (某个web域中的对象,访问javabean的属性、访问List集合、访问Map集合、访问数组)

 1 <html>
 2   <head>
 3     <title>el表达式</title>
 4   </head>
 5
 6   <body>
 7
 8
 9  <---------------------el表达式---(找不到数据的话,返回"",不是null)---------------------------------><br/>
10       <%
11           String data = "data";
12           request.setAttribute("data", data);
13       %>
14
15
16       ${data } <br/>   <!-- 相当于 psgeContext.findAttribute-->
17
18 <---------------------el表达式---(先找到request域中的person对象,在通过这个person对象,拿到bean的属性)---------------------------------><br/>
19   <%
20       Person p = new Person();
21       p.setName("elName");
22       request.setAttribute("person", p);
23   %>
24
25   ${person.name }<br/>
26
27
28 <-------------el表达式--(从复杂bean中取出数据)-----------------><br/>
29     <%
30         Person p1 = new Person();
31         Adress a = new Adress();
32         a.setCity("上海");
33         p1.setAdress(a);
34
35         request.setAttribute("p1", p1);
36      %>
37
38    ${p1.adress.city }<br/>
39
40 <-------------el表达式--(从list中取出数据)-----------------><br/>
41       <%
42         List list = new ArrayList();
43         list.add(new Person("aaa"));
44         list.add(new Person("bbb"));
45         list.add(new Person("ccc"));
46
47
48         request.setAttribute("list", list);
49      %>
50
51       ${list[1].name }<br/>
52
53 <-------------el表达式--(从map中取出数据)-----------------><br/>
54       <%
55         Map map = new HashMap();
56         map.put("aa", new Person("111"));
57         map.put("bb", new Person("222"));
58         map.put("cc", new Person("333"));
59
60         request.setAttribute("map", map);
61      %>
62       ${map.aa.name }<br/>    <!-- 用el表达式在取数据时,通常用.号,如果.号取不出来,就用[] 如 map[111].name -->
63
64 <-------------el表达式--(得到当前web应用的名称)(动态获取工程名称)(应用:如超链接中,需要写工程名)-----------------><br/>
65
66 ${pageContext.request.contextPath} <br/>
67
68
69   </body>
70 </html>

2./*执行运算*/

  在JSP页面执行一些简单的运算 (${user==null})

  empty运算符:检查对象是否为 null 或 “空”

  二元表达式:${user !=null?user.name:""}

3./*获取WEB开发常用对象*/ (使用$的时候,会先判断要获取的对象 是否是已经定义了的隐式对象)

EL表达式定义了一些隐式对象 (11个) ${隐式对象名称} --获得对象的引用

  1.pageContext (对应JSP页面中的pageContext对象)

  2.pageScope (代表page域中用户保存属性的Map对象)

  3.requestScope

  4.sessionScope

  5.applicationScope

  6.param (表示一个保存了所有请求参数Map对象)(表单回显可能用到)

  7.paramValues (表示一个保存了所有请求参数的Map对象,跟上面不同,这个返回的是String[])

  8.header (表示一个保存了所有http请求头字段的Map对象)

  9.headerValues

  10.cookie (表示一个保存了所有cookie的Map对象)

  11.initParam (表示一个保存了所有web应用初始化参数的Map对象)

  (通过得到的Map对象,然后指定该Map对象的关键字 就能拿到对应的值)

4./*调用JAVA方法*/

  EL表达式语法允许开发人员都已自定义函数,以调用Java类的方法

  示例:${prefix:method(params)}

    1.在EL表达式中调用的方法只能是 /*静态方法*/。

    2.这个Java类的静态方法需要在TLD文件中描述,才可以被EL表达式调用

    3.EL自定义函数用于扩展EL表达式的功能,可以让EL表达式完成普通Java程序代码所能完成的功能

(使用EL函数移除页面中的Java代码和使用自定义标签移除java代码的区别)

/*EL函数无法移除与WEB开发相关的代码 (如request.setAttrbute())*/

EL函数库 /*针对字符串的一些常见操作*/(sun公司针对一些字符串的常见处理定义了一套EL函数库供开发者使用)

  在页面中使用JSTL定义的EL函数:(注意:${fn:substring("www.it315.org", 4, 9) } 结果为it315 而不是 it315. )

  <%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefin="fn " %>

  /*如果需要在JSP页面中对字符串进行一些常见操作,首先考虑是否可以用到sun公司提供的EL函数库(fn.tld)*/

  /*如果sun公司的EL函数库没有,就需要自己写 自定义标签或者写一个EL函数*/

/*注意:1.$不能嵌套使用 用一个就可以了   2.$后面不能有空格 要直接接{},不然没有作用*/

/*JSTL标签库*/

/*核心标签库 (开发里面常用的标签)*/

  c.tld (standard.jar)文件里面描述的就是核心标签,平常用的<c:if>之类用c开头的,都是核心标签库中的

  1.<c:out> 标签 (输出文本)

  <c:out value="<a href=‘‘>点点</a>" default="缺省值(如果value为空,没有,就使用default里面的值)" escapeXml="true"/>

   escapeXml属性会将文本转义后输出(实现类似html转义标签的作用)

  2.<c:set>标签 (可以往域里面存东西,往javabean里面存东西,往Map里面存东西)

  <c:set var="data" value="xxx" scope="page"/> ${data}

  <c:set property="name" value="uuuu" target="${p}"/> ${p.name}

  Map map = new HashMap();

  request.setAttribute("map",map);

  <c:set property="dd" value="xxx" target="${map}" /> ${map.dd}

  (这里的property,相当于Map中的关键字,根据这个关键字,来确定对应的值)

  3.<c:remove> 标签 (删除域中属性)

  4.<c:catch> 标签 (抓住嵌套在标签中的内容抛出的异常)

  <c:catch var="myex"> <%会抛出异常的代码%> ${myex.message}

  

  5.<c:if> 标签

  <c:if var="sss" test="${user==null}" scope="page"> ${sss}

  (看到 var 属性 就代表着 将标签的处理结果以var的值为关键字存在某个域中 ,具体是存在哪个域中,用scope去指定)

  6.<c:forEach> 标签

  <c:forEach var="num" beign="1",end="9" step="1"> ${num} (用来做分页的时候会用到)

  forEach 实现表格间色显示 <c:forEach var="str" items="${list}" varStatus="status"> ( ${status} 获取到了一个对象,这个对象,这个对象记住了当前是第几次迭代 )  

  <tr class="${status.count%2==0?‘even‘:‘odd‘}"> <td>${str}</td> </tr> (用class来为奇数 偶数 赋不同的颜色)

  7.<c:url> 标签(实现URL的重写(将会话标识号以参数形式附加在URL地址上))

  要想使用这个<c:url>生成超链接,就必须配合HTML元素<a>使用.

  <a href="

    <c:url value="./testParamImported.jsp">

    <c:param name="username" value="yangmu"></c:param>

    <c:param name="password" value="hello"></c:param>

    </c:url>

  ">跳转页面</a>

  <c:url var="index" value="/index.jsp">

    <c:param name="name" value="中国"></c:param> (使用param标签 在地址后面带上参数,可以是中文)

  </c:url>

  <a href="${index}">购买</a> (1.会自动带上工程名 2.会自动加上session的id号)

  8.<c:forTokens> 标签 (以指定字符分隔字符串)

  <c:forTokens var="tokens" items="${data}" delims=","> (以逗号分隔存在某个域中的字符串,每分割出一个字符串,就将其存到var中)

    ${tokens}

  </c:forTokens>

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@ page import="com.javaweb.domain.Person" %>
 3 <%@ page import="com.javaweb.domain.Adress" %>
 4 <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
 5 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 6 <html>
 7   <head>
 8     <title>使用jstl+el完成集合迭代</title>
 9   </head>
10
11   <body>
12  <----------------------List集合的迭代---------------------------> <br/>
13       <%
14         List list = new ArrayList();
15         list.add(new Person("aaa"));
16         list.add(new Person("bbb"));
17         list.add(new Person("ccc"));
18
19
20         request.setAttribute("list", list);
21      %>
22
23
24      <c:forEach var="person" items="${list }">
25          ${person.name} <br/>
26      </c:forEach>
27
28  <----------------------Map集合的迭代--------------------------->   <br/>
29        <%
30         Map map = new HashMap();
31         map.put("aa", new Person("111"));
32         map.put("bb", new Person("222"));
33         map.put("cc", new Person("333"));
34
35         request.setAttribute("map", map);
36      %>
37
38      <c:forEach var="entry" items="${map }">
39          ${entry.key } : ${entry.value.name} <br/>
40      </c:forEach>
41
42
43
44      <!-- jstl if标签 -->
45      <!-- 代表用户登录了 -->
46      <c:if test="${user!=null }">
47          欢迎您
48      </c:if>
49
50      <c:if test="${user==null }">
51          用户名:<input type="text">
52         密码:<input type="text">
53      </c:if>
54
55
56
57   </body>
58 </html>
时间: 2024-10-16 12:29:23

9.EL表达式 和 JSTL核心标签库的相关文章

EL表达式和JSTL核心标签库

1. EL 简介EL 全名为Expression Language,所有EL都是以${ 为起始.以} 为结尾的.EL 语法很简单,它最大的特点就是使用上很方便. 接下来介绍EL 主要的语法结构: ${sessionScope.user.sex}上述EL范例的意思是:从Session的范围中,取得用户的性别.假若依照之前JSP Scriptlet的写法如下: User user = (User)session.getAttribute("user");String sex = user.

EL表达式 与 JSTL标准标签库

目录 EL表达式 什么是EL表达式 作用 EL内置11对象 EL执行表达式 JSTL 什么是JSTL JSTL标准标签库有5个子库 把JSTL标签库jar包引入工程当中 if标签 foreach标签 JavaEE开发模式 什么是开发模式 JavaEE模式 EL表达式 什么是EL表达式 EL(Express Lanuage)表达式可以嵌入在jsp页面内部 减少jsp脚本的编写 EL出现的目的是要替代jsp页面中脚本的编写. 作用 ? EL最主要的作用是获得四大域中的数据 ? 从四大域当中取数据 p

jsp之jstl核心标签库

JSTL核心标签库技术 1. JSTL介绍 在JSP页面中即可书写html,也可以书写Java代码,导致页面混乱,维护,修改,升级难度加大,于是国际上不同的公司在实际应用中,根据页面的需求将Java代码进行抽离封装,页面上需要的时候,通过标签(和书写HTML标签差不多)的方式引入封装的Java代码.由于每个公司都有自己一套标签,开发人员在使用标签的时候,可以使用不同公司研发的标签,导致标签严重重复.为了解决这个问题,Apache Jakarta小组归纳汇总了那些网页设计人员经常遇到的问题,开发了

JSTL 核心标签库 使用(转)

JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:forEach.forTokens 4.URL操作标签:import.url.redirect 使用标签时,一定要在jsp文件头加入以下代码: <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"

JSTL 核心标签库 使用

div id="cnblogs_post_body"> JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:forEach.forTokens 4.URL操作标签:import.url.redirect 使用标签时,一定要在jsp文件头加入以下代码: <%@taglib prefix="c" uri="

[转]JSTL 核心标签库的使用

JSTL 核心标签库 使用 JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:forEach.forTokens 4.URL操作标签:import.url.redirect 使用标签时,一定要在jsp文件头加入以下代码: <%@taglib prefix="c" uri="http://java.sun.com/jsp/js

JSTL 核心标签库

JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:forEach.forTokens 4.URL操作标签:import.url.redirect 使用标签时,一定要在jsp文件头加入以下代码: <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"

jsp引用JSTL核心标签库

一.引用JSTL 1.  JSTL的引入可以让JSP代码中<%%>等代码消失掉,再结合EL表达式,会更加方便以及美观. 2.  各套框架(还没有学习,比如struts,SpringMVC等)都有自己的标签库,这时JSTL可以作为公共.通用的,横行于各框架中. 操作: 第一步:下载JSTL包 下载地址:http://tomcat.apache.org/taglibs/ 第二步,新建一个jsp页面 JSTl基本应用: 1.核心标签库:包括基本的语言功能,变量操作,流程控制等等. 2.国际化和格式化

JSTL、JSTL核心标签库

JSTL环境 JSTL是另一个标准规范,并非在JSP的规范中,所以必须另外下载JSTL实现. 要使用JSTL标签库,必须在JSP网页上使用taglib指示元素定义前置名称与uri参考.例如,引入JSTL1.1核心标签库: <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> JSTL分类 JSTL提供的标签库分为五个大类. 1.核心标签库:提供条件判断.属性访问.URL处理及错误处理