JSTL和EL表达式学习笔记
13jstl与el(附加跳转到查询页面的案例)
Jstl与el(附加跳转到查询页面的案例)Jstl与el(附加跳转到查询页面的案例) (1)Jstl与el的优缺点 (1)例1:set /remove/ out (1)例2:if (1)例3:forEach (2)Jstl与el的优缺点Jstl:只能运行逻辑运算,不能进行算数运算;例如(<c:set var=”name” value+”张三”scope=”page”/>)。
El:只能运行算数运算,不能进行逻辑运算;(${name})。
例1:set /remove/ outvar :写入变量的名称value:变量的值,值不能为javaBean类型scope:变量写入的范围target:只能通过EL表达式获取,用来获取对象property:设定对象的属性,和target结合使用<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><%@ taglib uri="/jsp/jstl/core" prefix="c" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><c:set var=”name” value=”张三” scope=”page”/>姓名:${name}<c:remove var=”name”/><c:out value=”${name}/”></body></html>例2:iftest:进行的条件判断可以使用EL表达式,结果必须为boolean类型<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><%@ taglib uri="/jsp/jstl/core" prefix="c" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><c:set var=”age” value=”20”></c:set><c:if test=”${age<18}”>年龄小于18岁,不能参加选举<br><a href=””>选举失败</a></c:if><c: if test=”${age>=18}”>年龄满18岁,可以参加选举。
实验四:EL表达式和JSTL标签库的使用复习进程
实验四:EL表达式和JSTL标签库的使用一、实验的目的(1)掌握EL表达式的使用。
(2)掌握JSTL标签库的使用。
二、实验内容与要求(1)学习EL表达式的原理和使用。
(2)了解JSTL标签库的原理及使用。
(3)EL实例的调试。
(4)JSTL实例的调试。
三、实验主要步骤1. EL表达式实例程序的调试(1)源代码el.jsp<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'el.jsp' starting page</title></head><body>45+36=${45+36}<br/><%=pageContext.getAttributesScope("info") %><br/>${info}<br/>ID:${user.id}<br/>ID:${er.id}<br>ID:${user[id]}<br/>name:${}<br/>age:${user.age}<br/>salary:${user.salary}空么?= ${empty user }><br/>Age>20:${user.age>=20 }<br/>ID is empty:${empty user.id }<br/></body></html>(2)源代码employeemain.jsp<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <%@ taglib uri="/jsp/jstl/core" prefix="c"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>员工管理主菜单</title></head><body><h1>员工列表</h1><hr/><table width="100%" border="1"><tr bgcolor="#99FFFF"><td width="14%">编号</td><td width="14%">姓名</td><td width="14%">性别</td><td width="14%">省份</td><td width="14%">城市</td><td width="14%">民族</td><td width="20%">操作</td></tr><c:forEach var="emp" items="${emplist}"><tr><td width="14%"><a href="toview.do?id=${emp.stu_id}">${emp.stu_name }</a></td> <td width="14%">${emp.stu_id}</td> <td width="14%">${emp.sex}</td><td width="14%">${emp.province}</td><tdwidth="14%">${emp.area}</td><td width="14%">${emp.nation}</td><td width="20%"><a href="toModofy.do?id=${emp.stu_id}">修改</a><a href="toDelete.do?id=${emp.stu_id}">删除</a></td></tr> </c:forEach></table></body></html>运行结果截图:2. JSTL标签库的使用程序实例的调试(1)源代码fmt02.jsp<%@ taglib uri="/jsp/jstl/core" prefix="c" %><html><head><title>JSTL日期格式案例</title></head><body><h1>JSTL日期格式标记</h1><hr><jsp:useBean id="now" class="java.util.Date"></jsp:useBean><fmt:setLocale value="zh_CN"/>full格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/><br> long格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="long" timeStyle="long"/><br>medium格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="medium"timeStyle="medium"/><br>default格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="default" timeStyle="default"/> <br>short格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="short" timeStyle="short"/><br> <hr></body></html>运行结果截图:(2)源代码jstl01.jsp<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><%@ taglib uri="/jsp/jstl/core" prefix="c" %><%@ taglib uri="/jsp/jstl/fmt" prefix="fmt" %><%@ taglib uri="/jsp/jstl/sql" prefix="sql" %><%@ taglib uri="/jsp/jstl/xml" prefix="x" %><%@ taglib uri="/jsp/jstl/functions" prefix="fn" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>JSTL应用</title></head><body><h1>c:forTokens标记使用</h1><hr/><c:set var="infos" value="10,30,40,50,60" /><c:forTokens items="${infos}" delims="," var="info" varStatus="status"><c:out value="${status.index}" />-<c:out value="${status.count}" />-<c:out value="${info}" /><br/></c:forTokens><hr/></body></html>运行截图:(3)源代码sql01.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/jsp/jstl/core" prefix="c" %><%@ taglib uri="/jsp/jstl/fmt" prefix="fmt" %><%@ taglib uri="/jsp/jstl/sql" prefix="sql" %><%@ taglib uri="/jsp/jstl/xml" prefix="x" %><%@ taglib uri="/jsp/jstl/functions" prefix="fn" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>使用JSTL SQL标记</title></head><body><sql:setDataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/student" user="root" password="root" var="infoData" scope="request" /><sql:query sql="select * from stuinfo" dataSource="${infoData}" var="emplist"scope="request"> </sql:query><h1>员工列表</h1><hr/><table width="100%" border="1"><tr bgcolor="#99FFFF"><td >编号</td><td width="14%">姓名</td><td width="14%">性别</td><td width="14%">省份</td><td width="14%">城市</td><td width="14%">民族</td><td width="20%">操作</td></tr><c:forEach var="row" items="${emplist.rows}"><tr><td width="14%"><a href="toview.do?id=${row.stu_id}">${row.stu_name }</a></td> <td width="14%">${row.stu_id}</td><td width="14%">${row.sex}</td><td width="14%">${row.province}</td><td width="14%">${row.area}</td><td width="14%">${row.nation}</td><td width="20%"><a href="toModofy.do?id=${row.empid}">修改</a><a href="toDelete.do?id=${row.empid}">删除</a></td></tr></c:forEach></table><hr/></body></html>运行截图:四、结论与体会EL表达式的目的是使用简洁的语法来替代jsp的表达式脚本<%=表达式%>,在jsp页面中输出动态的内容。
第06章:EL表达式和JSTL
从最小的属性范围中查 找key属性,如果找到, 则不再继续查找
属性值key=${key};<br>
request范围内的key=${requestScope.key};<br> session范围内的key=${sessionScope.key};<br> session范围内的key1=${key1}; 直接从指定的属性范围 内查找属性名为key的属 性值
set 标签用于给变量 设置值和作用范围
插入使用核心标签的指令
<%@ taglib uri="/jsp/jstl/core" prefix="c"%>
<body> <c:set var= "example" value="${100+1}" scope="session" />
${er[1]} 得到集合中第二位的对象
EL表达式的简单应用
输出姓名显示
<% Map names = new HashMap(); names.put("one","LiYang"); names.put("two","WangHua"); request.setAttribute("names",names); %> 姓名:${names.one}<br/> 姓名:${names["two"] }<br/>
通用标签
<c:set>含有的属性包括value、var、scope、target和property等,这
EL表达式与JSTL标签库(一)
EL表达式与JSTL标签库(⼀)1、JSTL概述JSTL标签库由标签库和EL表达式两个部分组成。
JSTL标准标签库(Java Server Page Standard Tag Library),⽤来解决创建的页⾯的操作问题,包括输⼊输出、条件测试、遍历集合。
2、EL表达式语法EL表达式的主要作⽤:获取数据。
EL表达式主要⽤于替换JSP页⾯中的脚本表达式,从Web作⽤域中获取Java对象,获取数据,包括访问Javabean的属性、List集合、Map集合、数组等。
执⾏运算:利⽤EL表达式可以在JSP页⾯中执⾏⼀些基本的关系运算、逻辑运算和算术运算,以在JSP页⾯完成⼀些简单的逻辑操作。
获取Web开发常⽤对象。
利⽤EL表达式的隐式对象,可以轻松获得Web常⽤对象的引⽤,从⽽获取这些对象中的数据。
EL表达式的格式: ${expression },使⽤${⽂本时需要变为\${[]和.运算符 EL表达式可以返回任意类型的值。
EL取值结果为⼀个带有属性的对象时,使⽤[]或.来访问其属性,实质是通过getter⽅法来访问其属性。
访问形式如下:${object["propertyName"]}${object.propertyName} propertyName不是有效的java变量名时,只能使⽤[]⽅式访问。
如${header["accept-language"]}。
如果访问对象的属性也是⼀个对象,并且也带有属性,此时既可以使⽤[],也可以使⽤.运算符来访问第⼆个对象的属性。
${pageContext.request.contextPath }3、EL表达式的隐式对象 EL表达式中,存在11个隐式对象。
隐式对象描述例⼦pageContext JSP上下⽂对象。
它可访问JSP隐式对象。
${pageContext.request.contextPath }param⼀个包含所有请求参数的Map。
EL笔记
EL表达式语言表达式语言的英文为Expression Language,简称EL。
它是JSP2.0中引入的一个新内容。
通过EL可以简化在JSP开发中对对象的引用,从而规范页面代码,增加程序的可读性及可维护性。
EL为不熟悉Java语言页面开发的人员提供了一个开发Java Web 应用的新途径。
目录1.1EL表达式语言的基础 (1)1.2禁用EL (1)1.2.1使用斜杠“”符号: (1)1.2.2使用page指令: (1)1.2.3在web.xml文件中配置<el-ignored>元素 (1)1.3保留的关键字 (2)1.4EL的运算符及优先级 (2)1.4.1通过EL访问数据 (2)1.4.2在EL中进行算术运算 (2)1.4.3在EL中判断对象是否为空 (3)1.4.4在EL中进行逻辑关系运算 (3)1.4.5在EL中进行条件运算 (3)1.5EL的隐含对象 (4)1.5.1页面上下文对象 (4)1.5.2访问作用域范围的隐含对象 (4)1.5.3访问环境信息的隐含对象 (4)1.6定义和使用EL函数 (5)1.1EL表达式语言的基础语法格式为:${expression}参数说明:expression:用于指定要输出的内容,可以是字符串,也可以是运算符组成的表达式。
技巧1:由于EL表达式的语法以“${”开头,所以如果在JSP页面中要显示“${”字符串,必须在前面加上“\”符号,或者写成“${‘${‘}”,也就是用表达式来输出“${”符号。
EL特点:1.语言的语法简单,使用方便;2.EL可以与JSTL结合使用,也可以与JavaScript语句结合使用;3.EL中会自动进行类型转换;4.EL不仅可以访问一般变量,也可以访问JavaBean中的属性以及嵌套属性和集合对象;5.在EL中可以获得命名空间(PageContext对象,它是页面中所有其他内置对象的最大范围的6.集成对象,通过它可以访问其他内置对象);7.在使用EL进行除法运算时,如果0作为除数,则返回无穷大Infinity,而不返回错误;8.在EL中可以访问JSP的作用域(request、session、application以及page);9.扩展函数可以与Java类的静态方法进行映射。
ch09-EL与JSTL笔记
⏹EL表达式及其用法EL表达式的语法格式相当简单,只需以“${”开始,最后以“}”结束即可,具体语法格式如下: ${expression}在EL表达式中“.”运算符与“[ ]”运算符的作用是等价的${erObj[0].name}⏹EL表达式访问JavaBean中的属性以及嵌套属性和集合对象;package bean;public class User {private String name="tom";public String getName() {return name;}public void setName(String name) { = name;}public static String staticMethod(){return"staticMethod";}}<body><jsp:useBean id="user"class="er"/>${}</body>⏹在EL表达式中可以执行关系、逻辑和算术等运算;${3/2}⏹在EL表达式中可以访问JSP内置对象◆与作用范围有关的EL隐含对象包含有:pageScope、requestScope、sessionScope和applicationScope–可以读取使用JSP内置对象pageContext、request、session以及application的setAttribute()方法所设定的对象的数值-----即getAttribute(String name),却不能取得其他相关信息。
–例如,要取得session中储存的一个username属性的值:session.getAttribute("username")–在EL中则使用下面的方法:${ername}思考:${username}访问的是哪个内置对象中的username 属性◆与输入有关的隐含对象有两个,即param和paramValuesrequest.getParameter(String name)request.getParameterValues(String name)在EL中则可以使用param和paramValues两者来取得数据:${}elDemo.html<body><form action="elDemo.jsp">用户名:<input type="text"name="name"><input type="submit"value="登录"></form></body>elDemo.jsp<body>${}</body>${}elDemo.html<body><form action="elDemo.jsp">用户名:<input type="text"name="name"><br>爱好:<input type="checkbox"name="in"value="爱好1">爱好1<input type="checkbox"name="in"value="爱好2">爱好2<input type="checkbox"name="in"value="爱好3">爱好3<input type="submit"value="登录"></form></body>elDemo.jsp<body>用户名: ${}<br>爱好: ${paramValues.in[1]}</body◆cookie在cookie中设定了username属性值,可以使用${ername.value}来取得属性值。
Java相关课程系列笔记之10JSP学习笔记(建议用WPS打开)
JSP学习笔记Java相关课程系列笔记之十笔记内容说明JSP(程祖红老师主讲,占笔记内容100%);目录一、JSP基础 (1)1.1什么是JSP (1)1.2为什么要使用JSP (1)1.3 JSP与Servlet的关系 (1)1.4如何写一个JSP文件 (1)1.5 JSP是如何运行的 (1)1.6隐含对象 (2)1.7指令 (2)1.8 JSP注释 (3)1.9案例:创建emplist.jsp页面,将表示逻辑交给JSP处理 (3)二、JSP标签和EL表达式 (4)2.1什么是JSP标签 (4)2.2 JSTL及其使用 (4)2.3什么是EL表达式 (4)2.4 EL表达式的使用 (4)三、JSTL中的几个核心标签 (7)3.1 if (7)3.2 choose (7)3.3 forEach (7)3.4 url (8)3.5 set (8)3.6 remove (8)3.7 catch (8)3.8 import (8)3.9 redirect (8)3.10 out (8)3.11 JSP标签是如何运行的 (8)3.12案例:将员工列表中的Java代码改为JSP标签,并添加分页 (9)四、自定义标签 (10)4.1如何写一个自定义标签 (10)4.2 JavaEE5.0中,如何使用EL表达式和JSTL (10)4.3案例:自定义标签 (10)4.4案例:修改之前员工列表中的日期显示 (11)五、MVC (13)5.1什么是MVC (13)5.2使用MVC的目的 (13)5.3如何使用MVC来开发一个Web应用程序(JavaEE) (13)5.4 MVC的优缺点 (13)5.5案例:简易贷款(贷款数小于余额数*10) (13)5.6修改5.5案例,使用户无法直接访问view.jsp页面 (15)1一、JSP基础1.1什么是JSPJSP(Java Server Page)是Java服务器端动态页面技术。
jsp中的JSTL与EL表达式用法及区别
jsp中的JSTL与EL表达式用法及区别对于JSTL和EL之间的关系,这个问题对于初学JSP的朋友来说,估计是个问题,下面来详细介绍一下JSTL和EL表达式他们之间的关系,以及JSTL和EL一些相关概念!EL相关概念JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java 代码段。
所以我们先来学习EL表达式EL主要用于查找作用域中的数据,然后对它们执行简单操作;它不是编程语言,甚至不是脚本编制语言。
通常与 JSTL 标记一起作用,能用简单而又方便的符号来表示复杂的行为。
EL基本格式EL表达式的格式:用美元符号($)定界,内容包括在花括号({})中;例如: ${loginInfoBean.suser}此外,您可以将多个表达式与静态文本组合在一起以通过字符串并置来构造动态属性值;例如:Hello {loginInfoBean.suser} ${loginInfoBean.spwd}EL语法组成-标识符EL表达式由标识符、存取器、文字和运算符组成。
标识符用来标识存储在作用域中的数据对象。
EL 有11 个保留标识符,对应于11个EL隐式对象。
除了11隐式对象外,假定所有其它标识符都用来标识作用域的变量。
标识符例:${abc} 相当于<%=pageContext.findAttribute(“abc”)%>${og_1} <%=pageContext.findAttribute(“og_1”)%>…等等;就是说{}内的标识符除了11个保留字之外都表示作用域中的数据对应的名.${requestScope}中的requestScope是11个EL隐式对象之一,它不再表示作用域中数据,而是表示request作用域;EL隐藏对象pageContext PageContext 实例对应于当前页面的处理pageScope 与页面作用域属性的名称和值相关联的Map类requestScope 与请求作用域属性的名称和值相关联的Map类sessionScope 与会话作用域属性的名称和值相关联的Map类applicationScope 与应用程序作用域属性的名称和值相关联的Map类param 按名称存储请求参数的主要值的 Map 类paramValues 将请求参数的所有值作为 String 数组存储的 Map 类Header 按名称存储请求头主要值的 Map 类headerValues 将请求头的所有值作为 String 数组存储的 Map 类cookie 按名称存储请求附带的 cookie 的 Map 类initParam 按名称存储Web 应用程序上下文初始化参数的Map 类EL存取器存取器用来检索对象的特性或集合的元素。
JSTL标签和EL表达式使用笔记
JSTL标签和EL表达式使用笔记一般在jsp页面的头部都会应用一些标签库,一般就用下面这几个:<%@ page contentType="text/html; charset=UTF-8" language="java" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="/jsp/jstl/core"%><%@ taglib prefix="fmt" uri="/jsp/jstl/fmt"%><%@ taglib prefix="fn" uri="/jsp/jstl/functions"%>✧为了避免每个页面都写一次,可以把这些写在一个jsp文件里面,然后每个要用到这些标签的页面应用下就可以了。
✧<%@include file="../common/head.jsp"%>EL表达式截取字符串(使用JSTL) fn标签<%@ taglib uri="/jsp/jstl/functions" prefix="fn"%>上面的uri 根据你的实际情况定。
${fn:substring("你要截取的字符串"),beginIndex,endIndex}<%@ taglib prefix="fn" uri="/jsp/jstl/functions" %>下面是JSTL中自带的方法列表以及其描述函数名函数说明使用举例fn:contains 判定字符串是否包含另外一个字符串<c:if test="${fn:contains(name, searchString)}">fn:containsIgnoreCase 判定字符串是否包含另外一个字符串(大小写无关) <c:if test="${fn:containsIgnoreCase(name, searchString)}">fn:endsWith 判定字符串是否以另外字符串结束<c:if test="${fn:endsWith(filename, ".txt")}">fn:escapeXml 把一些字符转成XML表示,例如<字符应该转为< ${fn:escapeXml(param:info)}fn:indexOf 子字符串在母字符串中出现的位置${fn:indexOf(name, "-")}fn:join 将数组中的数据联合成一个新字符串,并使用指定字符格开${fn:join(array, ";")}fn:length 获取字符串的长度,或者数组的大小${fn:length(shoppingCart.products)}fn:replace 替换字符串中指定的字符${fn:replace(text, "-", "•")}fn:split 把字符串按照指定字符切分${fn:split(customerNames, ";")}fn:startsWith 判定字符串是否以某个子串开始<c:if test="${fn:startsWith(product.id, "100-")}">fn:substring 获取子串${fn:substring(zip, 6, -1)}fn:substringAfter 获取从某个字符所在位置开始的子串${fn:substringAfter(zip, "-")}fn:substringBefore 获取从开始到某个字符所在位置的子串${fn:substringBefore(zip, "-")}fn:toLowerCase 转为小写${fn.toLowerCase()}fn:toUpperCase 转为大写字符${fn.UpperCase()}fn:trim 去除字符串前后的空格${fn.trim(name)}函数描述包含fn:contains(string, substring)假如参数string中包含参数substring,返回truefn:containsIgnoreCase(string, substring)假如参数string中包含参数substring(忽略大小写),返回truefn:startsWith(string, prefix)假如参数string以参数prefix开头,返回truefn:endsWith(string, suffix)假如参数string 以参数suffix结尾,返回true组装/拆分fn:join(array, separator)将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。
第八章 JSTL和EL
第八章JSTL和EL一、EL表达式:●EL表达式概念:EL的全程是Expression Language,它是一种借鉴了 JavaScript和Xpath的表达式语言。
EL表达式提供了在Java代码之外,访问和处理应用程序数据的功能,通常用于在某个作用域(page,request,session,application等)内取的属性值,或者做简单的运算和判断。
●EL表达式特点:1.自动转换类型:String类型的两个数字想加自动转换int型进行算术运算。
2.使用简单:与JSP页面中嵌入的Java代码相比,EL更加简洁。
●EL表达式的语法:$ { EL表达式} EL表达式的语法有两个要素,$和{} 二者缺一不可●EL表达式的使用:1.点操作符:通过对象点出对象的属性。
例:${对象.属性} 可以访问某个对象的属性2.[]操作符:◆与点操作符类似,对象[“属性”]或对象[‘属性’]◆与点操作符不同的是,[]操作符可以通过数组的下标访问数组中的某个元素,例:${array[0]}●EL隐式对象:EL表达式进行访问某个对象属性值时,必须先把这个对象使用键值对存储到某个隐式对象中,访问时通过作用域访问对象(pageScope、requestScope、sessionScope、applicationScope)进行访问。
注意:如果存储值时没有指定范围,系统会按照隐式对象范围由小到大的顺序查找(page→request→session→application)。
●注意:EL表达式调用的是这个对象的对应的get()方法案例:Page1:<%User u=new User();u.setUname(“哈哈”);u.setUpwd(“123456”);session.setAttribute("eluser",u);session.setAttribute("msg","登录成功!") ;response.sendRedirect("el.jsp");%>Page2:<body><br/>用户:${eluser} //输出对象的toString()方法<hr/>用户名:${eluser.uname } //输出:哈哈<br/>用户名:${eluser["uname"] } //输出:哈哈<br/>用户名:${eluser['uname'] } //输出:哈哈<br/>密码:${eluser.upwd} //输出:123456<br/>消息:${msg} 输出:登录成功<br/></body>案例2:<body><%pageContext.setAttribute("pageContextName", "哈哈pageContext");request.setAttribute("requestName", "呵呵request");session.setAttribute("sessionName", "(*^__^*)request");application.setAttribute("applicationName", "嘎嘎application");pageContext.setAttribute("stuName", "哈哈");request.setAttribute("stuName", "呵呵");session.setAttribute("stuName", "(*^__^*)");application.setAttribute("stuName", "嘎嘎");User u=new User();u.setUname("10");pageContext.setAttribute("user",u);List list=new ArrayList();int i=1;list.add("1001"+ i++);list.add("1001"+ i++);list.add("1001"+ i++);list.add("1001"+ i++);list.add("1001"+ i++);pageContext.setAttribute("list",list);Map names = new HashMap();names.put("one","LiYang");names.put("two","WangHua");request.setAttribute("names",names);%><hr/>${pageContextName}<br/>${requestName}<br/>${sessionName}<br/>${applicationName}<br/><hr/>${stuName}:不指定范围从最小范围开始查找page,request,session,application 没有找到返回null页面显示空白<br/>${pageScope.stuName}:指定了范围在对应范围中查找<br/> ${sessionScope.hahaas}<br/>${requestScope.stuName}<br/>${sessionScope.stuName}<br/>${applicationScope.stuName}<br/><hr/>${user.uname}<br/>${user.uname+10}<br/> String类型的数字相加自动转换进行算术运算<hr/>${pageScope.list[0]}<br/>${pageScope.list['2']}<br/>${pageScope.list["3"]}<br/><hr/>姓名:${names.one}<br/>姓名:${names["two"] }<br/><hr/>${pageContext}</body>案例三:<body>网址:http://127.0.0.1:8080/t8/el3.jsp?userName=haha&userName=xixi<br/><!-- 从网址上获取值-->${erName }<br/>//输出haha${erName[1]}<br/>得到一个数组,输出数组索引为1的输出xixi </body>二、JSTL标签✧JSTL的概念:JSTL的全称是Java Pages Standard Tag Library,即JSP标准标签库。
JSP的EL表达式,JSTL表达式,自定义标签
EL表达式El表达式格式:${}${er.age}:表示为session范围内的user属性的age属性的值或者这样表示:${er[“age”]},中括号中age代表为user中的属性相当于以下代码User user2 = (User)session.getAttribute("user");String age = user2.getAge();什么情况下使用[]来获取属性??当属性的名称包含’.’符号时,只能用[]方式去获取这个属性,而不能使用.方式如下所示:User user3 = new User();user3.setName("zheng");session.setAttribute("er", user3);name:${ } //此种情况获取不到name的值name2: ${sessionScope["er"].name }//只能用[]的方式来获取上面的sessionScope可以省略不写,如果不写的话,将从小范围的域开始查找。
既依次request域,session域,Application域,如果找到就直接返回,不在继续下去,如果所有域都找不到该属性,则回传null。
EL可以进行自动的类型转换例如scope:${param.scope +11} 如果param.scope为数字,可以自动转换为两个数的相加隐含对象输入相关的隐含对对象1,param 获取一个${param.scope} 相当于 request.getParameter(“scope”);2,paramValues 获取一组数据,得到是一个数组${} 相当于 request.getParameterValues(“name”)其他隐含对象cookie,header,pageContext(重要) PageContext对象,可以获取页面和请求的所有信息pageContext:${pageContext.request.contextPath } //获取web应用名称SessionId :${pageContext.session.id } //获取当前session的id requestUrl :${pageContext.request.requestURL } //获取当前页面的路径EL关系运算符(关系运算符必须放在{}里面,放在外面无效)EL逻辑运算符(逻辑运算符必须放在{}里面,放在外面无效)EL 的empty运算符<!--empty可以作为一个集合,若该集合不存在或集合中没有元素,其结果都为true,否则为false -->names is Empty: ${ empty List}EL ()运算符,代表运算的优先级。
EL表达式、jstl标签
EL表达式、jstl标签EL表达式(Expression Language)⽬的:为了使JSP写起来更加简单。
表达式语⾔的灵感来⾃于 ECMAScript 和 XPath 表达式语⾔,它提供了在 JSP 中简化表达式的⽅法,让Jsp的代码更加简化。
1、语法结构${expression}2、[ ]与.运算符EL 提供“.“和“[ ]“两种运算符来存取数据。
当要存取的属性名称中包含⼀些特殊字符,如 . 或 - 等并⾮字母或数字的符号,就⼀定要使⽤“[ ]“。
例如:${ user. My-Name}应当改为${user["My-Name"]}如果要动态取值时,就可以⽤“[ ]“来做,⽽“.“⽆法做到动态取值。
例如:${er[data]}中data 是⼀个变量3、变量EL存取变量数据的⽅法很简单,例如:${username}。
它的意思是取出某⼀范围中名称为username的变量。
因为我们并没有指定哪⼀个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
属使⽤⽅式:导⼊包在jsp页⾯使⽤: <%@taglib prefix="c" uri="/jsp/jstl/core" %> 引⽤即可 prefix 是前缀 uri是标签引⽤包的唯⼀标识以下内容转⾃菜鸟教程:/jsp/jsp-jstl.htmlJSP 标准标签库(JSTL)JSP标准标签库(JSTL)是⼀个JSP标签集合,它封装了JSP应⽤的通⽤核⼼功能。
JSTL⽀持通⽤的、结构化的任务,⽐如迭代,条件判断,XML⽂档操作,国际化标签,SQL标签。
除了这些,它还提供了⼀个框架来使⽤集成JSTL的⾃定义标签。
根据JSTL标签所提供的功能,可以将其分为5个类别。
第6章 EL和JSTL
• <c:set>语法如下: 语法如下: 语法如下
<c:set var="name" value="value" scope="page|request|session|application"/>
• <c:remove>语法如下: 语法如下: 语法如下
<c:remove var="name" scope="page|request|session|application"/>
• EL基础语法
EL的语法非常简单,是一个以“${”开始,以“}”结束的表达式 的语法非常简单,是一个以“ 开始 开始, 的语法非常简单 结束的表达式
${EL表达式}
示例: 示例:
${}
-3-
EL使用
• 在JSP中使用 中使用<jsp:useBean>标准动作定义了一个 标准动作定义了一个Person对象并赋值,使 对象并赋值, 中使用 标准动作定义了一个 对象并赋值 表达式显示数据值, 用EL表达式显示数据值,示例代码如下: 表达式显示数据值 示例代码如下:
• <c:catch>语法如下: 语法如下: 语法如下
<c:catch var="name"></c:catch> • 示例: 示例:6.D.2 comm.jsp
-11-
条件标签-if标签
• 条件标签包括 :
<c:if> <c:choose> <c:when> <c:otherwise>
第7章 JSTL与EL表达式
9.3 JSTL标签库介绍 JSTL标签库介绍
在JSTL1.1中有以下这些标签库是被支持的: JSTL1.1中有以下这些标签库是被支持的 中有以下这些标签库是被支持的: 标签库 Core URI /jsp/jstl/core 前缀 c x fmt sql
XML /jsp/jstl/xml processing I18N formatting /jsp/jstl/fmt Database access /jsp/jstl/sql Functions
第7章 JSTL与EL表达式 JSTL与EL表达式
CCUT SOFT
9.1 概述
在JSP页面中,一些逻辑内容需要使用大量的 JSP页面中 页面中, Java表达式来实现 这就使得JSP页面显得很混乱 Java表达式来实现,这就使得JSP页面显得很混乱、 表达式来实现, 页面显得很混乱、 很复杂。 很复杂。使用自定义标记是一种很好的降低复杂度 的途径,但是, 的途径,但是,自定义标记却很容易造成重复定义 和非标准的实现。鉴于此,Sun于2002年发布了 和非标准的实现。鉴于此,Sun于2002年发布了 JSTL( JSTL(JSP Standard Tag Library,JSP标准 Library,JSP标准 标记库)。 标记库)。
9.2 JSTL EL表达式语言 EL表达式语言
${sessionScope.sampleValue + 12} ${(requsetScope.sampleValue + 12)/3} ${(pageScope.sampleValue + 12) /3==4} ${(pageScope.sampleValue + 12) /3>=5} <input type="text" name="sample1" value=“ value=“${pageScope.sampleValue + 10}"> ${not empty pageScope.sampleValue}
el和jstl学习笔记
尽量避免在JSP中使用JA V A代码来表示页面显示逻辑。
EL表达式:JSP 2.0以后,EL表达式已经被纳入正式规范,servlet 2.4以上都默认支持。
EL表达式一般操作的是作用域(application,session,reques t,pageContext)中的属性。
EL变量指某一个作用域中的属性。
<%=((Person)request.getAttribute("qy")).getName2()%>--${2}${s},会自动按照”pageContext,request,session,application”的顺序去找属性名为s的属性。
如果找到,则显示。
否则,什么都不显示。
${request S cope.s}相当于:<%=request.getAttribute("s") %>。
显然可读性要强很多。
注意:EL表达式中的变量,都必需用setAttribute("a","AA")放在”page,request,session,application”四种作用域里${}如果表达式中的值是个javaBean的对象,可以这样直接访问他的变量,而不需要转型。
.和[]操作符:${u.addr.country}访问相关的属性。
也可以通过:${u[“addr”][“country”]}。
或者.和[]结合使用:${u.addr[“country”]}.操作符特点:简便、易读。
[]操作符:可以利用传递字符串,实现动态取值。
比如:${u[s].country}$ {empty a}如果a是null,空字符串或空的集合就返回true,“空格”返回false。
表达式中的符号:+加号不能连接字符串,只能加和,其他都与以前一样。
${param.a}相当于:<%=request.getParameter("a") %>${paramV alues.b[0] }相当于:<%=request.getParameterV alues("b")[0] %>用于多选框Java标签库jstl:因为在jsp中使用java代码去控制页面的显示(即:用小段的<%%>),可读性很差,这样后期维护会比较麻烦,所以引入了Java标签库。
实验九 EL表达式和JSTL标签库的使用
3. 在 Src 文件夹中创建一个 EmployeeBean 的 JavaBean,访问作用域变
量,其中包括 3 个属性 eno 表示雇员号、ename 表示雇员名和 ecompany 表
示雇员公司名。代码如下
【步骤1】EmployeeBean.java程序代码 package com.beans;
return eno; } public String getEname(){
return ename; } public String getEcompany(){
return ecompany; } } 【步骤2】在WebRoot目录下编写Employee.jsp页面,在其中通过表单输入雇员信息,将 请求转发到一个Servlet。 <%@ page contentType="text/html;charset=gb2312"%> <html> <body> 请输入雇员信息: <form action="employee.do" method="post"> <table> <tr><td>雇员号:</td><td><input type="text" name="eno"></td></tr> <tr><td>雇员名:</td><td><input type="text" name="ename"></td></tr> <tr><td>公司名:</td><td><input type="text" name="ecompany"></td></tr> </table> <input type="submit" value="提交"> </form> </body>
EL表达式和JSTL的使用
EL表达式和JSTL的使⽤⼀:EL表达式1.概述:在jsp开发中,为了获取Servlet域对象中存储的数据,经常要写很多java代码,这样的做法会使JSP页⾯混乱,难以维护,为此,在JSP2.0规范中提供了EL表达式。
它是Expression Language的缩写。
2.语法:${表达式}2.1内置对象: 2.1.1获取指定域的对象:<%--初始化数据-- %><%pageContext.setAttribute("name", "pValue");request.setAttribute("name", "rValue");session.setAttribute("name","sValue");application.setAttribute("name", "aValue");%><%--获取指定作⽤域的数据--%>${ }${ }${ }${ }2.1.2请求参数<%-- param.xxx 对应 request.getParameter("xxx"); paramValues.xxx 对应 request.getParameterValues("xxx");--%>${ername }${paramValues.hobby }<%--获得⼀组数据,使⽤数组 --%>${paramValues.hobby[1] }<%--如果是数组,可以使⽤下表 --%>2.1.3pageContextjsp:<%=((HttpServletRequest)pageContext.getRequest()).getContextPath() %>el:${pageContext.request.contextPath }2.2使⽤el获得数据2.2.1⾃定义数据,必须放在作⽤域<%String s = "black";%>${s } <%--⽆法获取,s不在域中 --%>2.2.2获得字符串<%String s = "black";pageContext.setAttribute("sss",s);%>${sss}<br/>${pageScope.sss }<%这两个都可以获取到字符串“black”%>2.2.3获得数组<%String[] arr = {"A","B","C"};pageContext.setAttribute("arr",arr,PageContext.REQUEST_SCOPE);%>${arr }${arr[1]}${arr[2] }//上⾯的PageContext.REQUEST_SCOPE后⾯介绍2.32.3.1setAttribute(String name,值,int scope):如果没有指定scope,该属性默认在page范围内,如:pageContext.setAttribute("page","hello"); 使⽤pageContext将属性设置在request范围中pageContext.setAttribute("request2","hello" , pageContext.REQUEST_SCOPE);使⽤pageContext将属性设置在session范围中pageContext.setAttribute("session2","hello" , pageContext.SESSION_SCOPE);使⽤pageContext将属性设置在application范围中pageContext.setAttribute("app2","hello" , pageContext.APPLICATION_SCOPE); 2.3.2 getAttribute(String name,int scope):取得指定范围内的name属性,其中scope可以是如下4个值:PageContext.PAGE_SCOPE:对应于page范围。
el表达式@jstl
一、jstl与el表达式1、jstl是什么?java standard taglib(java标准标签库)。
2、标签是什么?sun公司制订的一种技术规范,用来将jsp页面中的java代码使用类似于html当中的标记来替换的一种技术。
这样做的目的,是为了使jsp页面更好维护以及更好的测试。
3、el表达式是什么?sun制订的一种用于计算的一种规则,早期只能用于给标签的属性赋值,现在也可以直接输出。
4、el表达式的基本语法${el表达式}第一种:访问bean的属性${}:jsp引擎会依次从pageContext、request、session、application查找绑订名为"user"的对象,如果找到了,就不再向下查找,否则,继续向下查找。
找到后,调用该对象的getName(),并输出其值。
找不到,则输出""。
或者也可以使用${user["name"]}或者是${user[propname]}此外,[]里面还可以是0,1..这样的下标,作用是输出数组里的元素值。
可以使用pageScope,requestScope,sessionScope,applicationScope四个关键字指定查找的范围。
${}第二种:获得请求参数值${ername}:等价于request.getParameter("username");${paramValues.interest}:等价于request.getParameterV alues("interest");第三种:计算一个表达式,将结果作为标签的属性值或者直接输出。
算术运算:"+","-","*","/","%", 但是要注意,"+"号不能连接字符串。
第5章:EL表达式与JSTL
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
不过,以下两种情况,两者会有差异: (1) 当要存取的属性名称中包含一些特殊字符,如 . 或 – 等并非字母或数字的符号,就一定要使 用 [ ],例如: ${user.My-Name } 上述是不正确的方式,应当改为: ${user["My-Name"] } (2) 我们来考虑下列情况: ${er[data]} 此时,data 是一个变量,假若data的值为"sex"时,那上述的例子等于${er.sex}; 假若data 的值为“name”时,它就等于${}。因此,如果要动态取值时,就 可以用上述的方法来做, 但 . 无法做到动态取值
<%
String path = request.getContextPath();
String
basePath
=
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/
%>
<%
User user = new User("周思宇",20,"男");
导入
<%@ taglib uri="/jsp/jstl/core" prefix="c"%>
通用标签
1、设置变量 <c:set> 2、显示变量 <c:out> 3、移除变量 <c:remove>
条件标签
1、选择 <c:if></c:if> test
<c:if test="${not empty }"></c:if>
<c:out value="${ 3 + 7}"> 程序执行结果为10。但是你却不能直接在JSP 网页中使用: <p>Hi ! ${ username }</p> 到了JSP 2.0 之后,EL 已经正式纳入成为标准规范之一。因此,只要是支持Servlet 2.4 / JSP2.0 的Container,就都可以在JSP 网页中直接使用EL 了。 除了JSP 2.0 建议使用EL 之外,JavaServer Faces( JSR-127 ) 也考虑将EL 纳入规范, 由此可知,EL 如今已经是一项成熟、标准的技术。 假若您所用的Container 只支持Servlet 2.3/JSP 1.2,如:Tomcat 4.1.29,您就不能 在JSP 网页中直接使用EL,必须安装支持Servlet 2.4 / JSP 2.0 的Container
JSTL部署 在EE应用程序中部署JSTL有两种方式: 已存在的工程上部署 将jstl.jar和standard.jar两个包考到现有工程 WebRoot / WEB-INF / lib 目录下 将相关的 .tld文件考到现有工程 WebRoot / WEB-INF 目录下;
也可通过eclipse在已存在 工程上部署 新建工程的时候直接部署 在JSP使用JSTL-core标签库 core在jsp中的使用: 在 web.xml 中添加 <jsp-config> <taglib> <taglib-uri>/jsp/jstl/core</taglib-uri> <taglib-location>/WEB-INF/c.tld</taglib-location> </taglib> </jsp-config> 在jsp文件中添加 <%@ taglib prefix=“c” uri=“/jsp/jstl/core” %>或<%@ taglib prefix="c" uri="/WEB-INF/c.tld" %> 使用<c:out value=“HelloWorld” />
<body>
<c:forEach items="${userList}" var="u" varStatus="status"> ${ }:${u.age }:${u.gender } <br />
</c:forEach> </body> </html>
EL
EL概念
EL主要用于查找作用域中的数据,然后对它们执行简单操作;它不是编程语言,甚至 不是脚本编制语言。通常与 JSTL 标记一起作用,能用简单而又方便的符号来表示复 杂的行为。 EL 全名为Expression Language,它原本是JSTL 1.0为方便存取数据所自定义的语言。当 时EL只能在JSTL 标签中使用,如下:
迭代标签
1、<c:forEach>
Eg1:
<c:set var="userName" value="周思宇" scope="page"></c:set> <c:set target="${er}" property="userID" value="1"></c:set> <c:out value="${erName}" default="用户姓名不存在">
本元素的需求,甚至可以不需要它们,从而避免了相关的维护成本。使 分工更明确。
<% if (session.getAttribute(“user”).equals(“member”)) { %> <p>Welcome, member!</p> <% } else { %> <p>Welcome, guest!</p> <% } %> JSTL一般配合EL一起使用,因此先看看EL.
User userWang = new User("王尧",21,"男");
User userPang = new User("胖子",22,"男");
List<User> list = new ArrayList<User>();
list.add(user);
list.add(userWang);
EL存取器
存取器用来检索对象的特性或集合的元素。
存取器: 通过 “[]” 或 “.” 符号获取相关数据
例: ${userBean.suser} 或 ${userBean[“suser”]} //获取输出bean中的suser属性值; ${mcType[“id”]} //获取map中key为id对应的值;
EL 提供 . 和 [ ] 两种运算符来存取数据。下列两者所代表的意思是一样的: ${er.sex} 等于 ${er["sex"]} . 和 [ ] 也可以同时混合使用,如下: ${sessionScope.shoppingCart[0].price} 回传结果为shoppingCart中第一项物品的价格。
如果要使用JSTL,则必须引用jstl.jar和 standard.jar两个包。 为什么要用JSTL 我们JSP用于开发信息展现页非常方便;也可以嵌入java代码(scriptlet、表 达式和声明)代码用来实现相关逻辑控制。看下面程序。但这样做会带 来如下问题: jsp维护难度增加; 出错提示不明确,不容易调试; 分工不明确;(即jsp开发者是美工,也是程序员); 最终增加程序的开发成本; 解决上面的问题可以使用定制标记库,JSTL使JSP开发者可以减少对脚
</c:out> <c:if test="${5 % 2 ==0}"> 5能够被2整出 </c:if> <c:if test="${5 % 2 !=0}"> 5不能被2整出 </c:if> <br /> <c:forEach begin="1" end="10" step="2" var="i" >
</c:forEach>
Eg2:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.test.entity.*" %>
<%@ taglib uri="/jsp/jstl/core" prefix="c" %>
${requestScope}中的requestScope是11个EL隐式对象之一,它不再表示作用域中数据,而是表示 request作用域;
EL隐藏对象 pageContext PageContext 实例对应于当前页面的处理 pageScope 与页面作用域属性的名称和值相关联的Map类 requestScope 与请求作用域属性的名称和值相关联的Map类 sessionScope 与会话作用域属性的名称和值相关联的Map类 applicationScope 与应用程序作用域属性的名称和值相关联的Map类 param 按名称存储请求参数的主要值的 Map 类 paramValues 将请求参数的所有值作为 String 数组存储的 Map 类 Header 按名称存储请求头主要值的 Map 类 headerValues 将请求头的所有值作为 String 数组存储的 Map 类 cookie 按名称存储请求附带的 cookie 的 Map 类 initParam 按名称存储 Web 应用程序上下文初始化参数的Map类