el表达式与标签库

来源:互联网 发布:python 模拟浏览器 编辑:程序博客网 时间:2024/05/22 17:47

EL有效表达式基础操作符

EL表达式内置对象


el表达式的四大作用域

<!-- 创建对象 id:变量名,class:对象名,scope:作用域    默认page--><jsp:useBean id="user" class="lesson04.User" scope="page"></jsp:useBean><!-- 设值 property:对象的属性名,name:对象变量名,value:赋值--><jsp:setProperty property="name" name="user" value="小二"/><jsp:setProperty property="age" name="user" value="4"/><!-- 创建对象 id:变量名,class:对象名,scope:作用域--><jsp:useBean id="user1" class="lesson04.User" scope="request"></jsp:useBean><!-- 设值 property:对象的属性名,name:对象变量名,value:赋值--><jsp:setProperty property="name" name="user1" value="小三"/><jsp:setProperty property="age" name="user1" value="8"/><!-- el表达式也拥有四个对应的内置对象 pageScope requestScope sessionScope applicationScope --><!-- page -->${pageScope.user.name }---------${pageScope.user.age }<br/> <!-- request -->${requestScope.user1.name }----------${requestScope.user1.age }<br/><%//jsp内置对象 pageContext request session application//useBean的scope  page request session application//el表达式内置对象  pageScope requestScope  sessionScope applicationScope//el表达式内置对象实际上就是Map 只是填充了 通过setAtrribute()方法写入的键值对//如果不指定作用域对象  会从作用域最低的对象搜索 pageScope<requestScope<sessionScope<applicationScope//如果不指定域名对象  影响搜索的效率   建议加上pageContext.setAttribute("id", 1);request.setAttribute("id", 2);session.setAttribute("id", 3);application.setAttribute("id", 4);%>${sessionScope.id }<br/><!-- el表达式提供了全局对象 pageContext 可以用于处理页面上任意的内置-->${pageContext.session.id }<br/><!-- 获取sessionID -->${pageContext.request.contextPath }<br/><!-- 获取上下文对象 -->



param:一般是从服务器传递结果到页面,在页面中取出服务器保存的值
<form><input type='text' name="num1" value="${param.num1 }"/>+<input type='text' name="num2" value="${param.num2 }"/><input type='submit' value="="/><input type='text' name="result" value="${param.num1+param.num2 }"></form>
效果





2.JSTL标签库

标记库名称

URI

前缀

说明

core

http://java.sun.com/jsp/jstl/core

c

核心功能实现,包括变量管理、迭代和条件判断等

I18N

http://java.sun.com/jsp/jstl/fmt

fmt

国际化,数据格式显示

SQL

http://java.sun.com/jsp/jstl/sql

sql

操作数据库

XML

http://java.sun.com/jsp/jstl/xml

x

操作XML

Fn

http://java.sun.com/jsp/jstl/functions

fn

常用函数库,包括String操作,集合类型操作等


引入标签库

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


Core标记库内容



例如

<%@page import="java.util.ArrayList"%><%@page import="java.util.List"%><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %><%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%><!-- 引入自定义标签 --><%@taglib tagdir="/WEB-INF/tags" prefix="ex" %><!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>Insert title here</title></head><body><!-- core标签库 --><!-- 1、定义变量  变量存储在四大作用域中  page request session application标签的属性 value 一般都支持el表达式计算 --><c:set var="name" value="zs" scope="page"></c:set>${pageScope.name }<!-- 2、if语句 不支持else--><c:set var="sal" value="20000" scope="page"></c:set><c:if test="${pageScope.sal<=10000 }">低薪</c:if><c:if test="${pageScope.sal>10000 }">高薪</c:if><!-- 3、choose when otherwise    相当于if....else...--><c:choose><c:when test="${pageScope.sal<=10000 }">低薪</c:when><c:when test="${pageScope.sal>10000 and pageScope.sal<=20000 }">中薪</c:when><c:otherwise>高薪</c:otherwise></c:choose><!-- 4、循环 forEach --><!-- for(int i=1;i<=10;i++){} --><c:forEach var="i" begin="1" end="10" step="1">${pageScope.i }</c:forEach><!-- foreach(){} --><%String[] str=new String[]{"篮球","足球"};pageContext.setAttribute("str", str);List list=new ArrayList();list.add("羽毛球");list.add("排球");pageContext.setAttribute("myList", list);%><c:forEach var="ste" items="${pageScope.myList }">${pageScope.ste }</c:forEach><!-- 5、out输出内容  c:out标签能够对内容的特殊符号进行转译  escapeXml 默认值true 表示对html进行转译五风险   false和el表达式有风险--><c:set var="tt" value="<font color=red>你好</font>"></c:set><%-- ${pageScope.tt } --%><c:out value="${pageScope.tt }" escapeXml="true"></c:out><!-- 其他标签 --><!-- 跳转 --><%-- <c:redirect url="http://www.pan.com/jspLesson/lesson05work/db.jsp"></c:redirect> --%><!-- catch 异常 --><c:catch var="myEx"><% String ss=null;ss.toString();%></c:catch>${pageScope.myEx }<!-- 国际化,数据格式显示  --><jsp:useBean id="date" class="java.util.Date"></jsp:useBean><!-- formaDate 将日期类型转换成字符串 --><fmt:formatDate value="${pageScope.date }" pattern="yyyy-MM-dd"/><!-- parseDate 将字符串转换成日期类型 --><fmt:parseDate value="2017/12/12" pattern="yyyy/MM/dd"></fmt:parseDate><!-- 四舍五入    pattern="###.#" 保留的小数位--><fmt:formatNumber value="123.56" pattern="###.#"></fmt:formatNumber><!-- 国际化 --><!-- 设值浏览器的locale对象 --><fmt:setLocale value="${pageContext.request.locale }"/><!-- 设置读取的资源文件的basename --><fmt:setBundle basename="my"/><!-- 读取资源文件的信息 --><fmt:message key="hello"></fmt:message><!-- 字符串 --><!-- 去空格 -->${fn:trim('   hello world   ') }<!-- 包含 -->${fn:contains('nihao','i') }<!-- 把字符串以指定的字符拆分 --><c:forEach var="ee" items="${fn:split('a,b,c',',') }">${pageScope.ee }</c:forEach><!-- 是否已指定字符结尾 -->${fn:endsWith('dddd.txt', '.txt')}<!-- 是否以指定的字符开头 -->${fn:startsWith('你好', '你')}<!-- 在一个字符串中  查找指定的字符并返回所在的下标(下标从0开始) 未找到返回-1-->${fn:indexOf('hello','o')}<!-- 返回字符串的长度 -->${fn:length('dfdfdf')}<!-- 字符串替换 -->${fn:replace('a,b,c', ',', ';')}<!--  -->${fn:join(fn:split('a,b,c',',') ,';')}<!-- 截取字符串  包左不包右 -->${fn:substring('jdfldj', 0, 2)}<!-- 从左往右查找指定字符并截断 -->${fn:substringAfter('lfjglg', "f")}<!-- 从右往左查找指定字符并截断 -->${fn:substringBefore('lfjglg', "j")}<!-- 转小写 -->${fn:toLowerCase("DDDD")}<!-- 转大写 -->${fn:toUpperCase("aaaa")}</body></html>