spring mvc学习(37):JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)
EL表达式和JSTL标签库: 在JSP页面代替java代码,便于编写
一.EL表达式
作用: ${} 简化脚本表达式 <%= %>
j2ee1.4以前版本需指定<%@ page isELIgnored="false">
j2ee1.4以后版本默认支持EL表达式
1.EL内置对象
EL内置11个对象,不需定义可直接使用
pageScope 获取page域属性组成的Map
requestScope 获取reqeust域属性组成的Map
sessionScope 获取session域属性组成的Map
applicationScope 获取application域属性组成的MappageContext 获取jsp的9大隐式对象, 如 ${pageContext.request}
initParam 获取在web.xml配置的WEB应用参数param 请求参数Map<String,String>, 如: ${param.userName}
paramValues 请求参数Map<String,String[]>, 如: ${paramValues.userName[1]}
header 请求头Map<String,String[]>, 如: ${header["Accept-Language"] }
headerValues 请求头Map<String,String[]>cookie 获取cookie对象, 如 ${cookie.JSESSIONID.name} ${cookie.JSESSIONID.value}
2.EL语法
1.常量(直接输出到HTML)
${"字符串"} ${123} ${true}
2.变量(在四大域搜寻)
${userName} 在四大域搜寻变量名的值,不存在则返回"" (相当于 <%= pageContext.findAttribute("userName") %>)${pageScope.userName}${requestScope.userName}${sessionScope.userName}${applicationScope.userName}搜寻数组/集合对象${myList[0]}搜寻map对象${myMap.key} ${myMap["key-first.last"]} key名是数字或特殊符(.-),必须用[]搜寻javaBean对象${user.getName()} 相当于 <%=user.getName()%>
3.简单运算
算数运算
${1+"2"} 非数字都被转成数字,不能转就报错,空元素当作没参与关系运算 > gt < lt >= ge <= le != ne == eq${a>2}逻辑运算 && and || or ! not${a>2 && b>2}三元表达式${name == null ? "张三" : name}域中指定的属性是否空 empty/not empty${not empty name}
3.调用java方法
EL表达式可调用java静态方法,步骤如下:
1)编写一个包含静态方法的类
2)编写一个tld文件,配置静态方法
<?xml version="1.0" encoding="UTF-8"?><taglib version="2.0"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-jsptaglibrary_2_0.xsd"> <tlib-version>1.0</tlib-version> <uri>http://www.lioil.win/method</uri><short-name>my</short-name><function><name>elMethod</name><function-class>win.lioil.Method</function-class><function-signature>java.lang.String method(java.lang.String)</function-signature></function> </taglib>
3)在jsp中引入tld文件: <%@ taglib uri="http://www.lioil.win/method" prefix="my"%>
4)在jsp中调用java静态方法: ${my:elMethod("x")}
* 对字符串进行操作,可以用EL函数库(JSTL标签库)
二.JSP原生标签(很少用)
sun公司推出的原生标签,属于jsp规范,不需引入第三方标签库<jsp:inclue> 替代request.getRequestDispatcher().include()
<jsp:forward> 替代request.getRequestDispatcher().forward()
<jsp:param> 在url后接请求参数在域中搜寻名为id的bean,没有就在该域中创建
<jsp:useBean id="beanName" class="package.class" scope="page|request|session|application"/>将请求参数存到bean对象, property指定请求参数/beanName对象属性名,param指定请求参数
<jsp:setProperty name="bean" property="" param=""/>获取bean对象的属性值到输出流, property指定属性名
<jsp:getProperty name="bean" property="" />
三.JSTL标签库(常用)
全称Java Standard Tag Library,由JCP(Java Community Process)指定标准, 和EL配合取代JSP的Java代码,以便开发
1.下载JSTL标签库(Taglibs)
一般使用JSTL1.1以上版本,现在最新版是JSTL1.2.5
在Apache Tomcat官网下载JSTL标签库(Taglibs)
下载地址: http://tomcat.apache.org/download-taglibs.cgi
下载页面有4个jar包:
Impl: taglibs-standard-impl-1.2.5.jar JSTL实现类库Spec: taglibs-standard-spec-1.2.5.jar JSTL标准接口EL: taglibs-standard-jstlel-1.2.5.jar JSTL1.0标签-EL相关Compat: taglibs-standard-compat-1.2.5.jar 兼容版本
从README得知:
如果不使用JSTL1.0标签,可以忽略taglibs-standard-jstlel包,README没有介绍taglibs-standard-compat包,估计应该是兼容以前版本标签库,所以一般只需要 taglibs-standard-impl 和 taglibs-standard-spec 两个jar包Maven依赖配置如下:<dependency><groupId>org.apache.taglibs</groupId><artifactId>taglibs-standard-spec</artifactId><version>1.2.5</version></dependency><dependency><groupId>org.apache.taglibs</groupId><artifactId>taglibs-standard-impl</artifactId><version>1.2.5</version></dependency>
把上述两个jar包加到项目,或者复制到Tomcat/lib(所有项目都可以共用,一劳永逸)
2.核心标签库
core 核心标签库
fmt 国际化标签
sql 数据库标签(废弃)
xml XML标签(废弃)
在jsp中引入 core fmt 标签库:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="f"%>
1.core标签库
输出默认转义<c:out value="<h1>header</h1>" default="value"/><c:out value="${name}"/>操作域变量 <c:set var="name" value="value" scope="page"/>Map对象 <c:set target="${myMap}" property="name1" value="value1" scope="request"/>Bean对象 <c:set target="${myBean}" property="name2" value="value2" scope="request"/>删除属性 <c:remove var="name" scope="request"/>捕获异常 <c:catch var="e"><%= 1/0 %></c:catch> ${e.message }条件判断<c:if test="${i>1}" var="result" scope="page">大于1</c:if><c:if test="${i<1}" var="result" scope="page">小于1</c:if><c:choose><c:when test="${day == 1}">星期一</c:when><c:when test="${day == 2}">星期二</c:when><c:when test="${day == 3}">星期三</c:when><c:when test="${day == 4}">星期四</c:when><c:when test="${day == 5}">星期五</c:when><c:otherwise>休息日</c:otherwise></c:choose>
循环
1.遍历集合List
<table border="1"><tr><th>名称</th><th>是否是集合中第一个元素</th><th>是否是集合中最后一个元素</th><th>显示当前遍历的索引</th><th>显示当前遍历的计数</th></tr><c:forEach items="${myList}" var="it" varStatus="st" ><tr><td>${pageScope.it}</td><td>${pageScope.st.first}</td><td>${pageScope.st.last}</td><td>${pageScope.st.index}</td><td>${pageScope.st.count}</td></tr> </c:forEach></table>
2.遍历Map
<c:forEach items="${myMap}" var="entry" >${entry.key }:${entry.value }<br></c:forEach>
3.循环计数(for i)
<c:forEach begin="1" end="100" step="1" var="num" >${num}</c:forEach>
分隔字符串
<c:forTokens items="sdfa,fsad,fds" delims="," var="result">${result}<br></c:forTokens>
在URL后加参数
<c:param> 嵌套在<c:import>、<c:url>、<c:redirect>,为这些标签所用URL附加参数实现include功能<c:import url="/index.jsp" var="p" scope="page"></c:import>输出: ${p}URL重写<c:url value="/index.jsp" context="${pageContext.request.contextPath}" var="eurl" scope="page"></c:url> <a href="${eurl}">xxx</a>请求重定向<c:redirect url="/index.jsp" context="${pageContext.request.contextPath}"></c:redirect>
2.fmt标签库
格式化日期 <fmt:formatDatevalue="<%=new Date()%>" pattern="yyyy/MM/dd hh:mm:ss" var="date" scope="request" />${requestScope.date}格式化数字 <fmt:formatNumber value="3.1415926" pattern="0000.00000000000" var="num1" scope="request" /><fmt:formatNumber value="3.1415926" pattern="####.###########" var="num2" scope="request" />${requestScope.num1}<br>${requestScope.num2}<br>
spring mvc学习(37):JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)相关推荐
- java标签库jstl-el表达式介绍使用配置手册_JAVA EE 实验报告EL表达式和jstl标签库的使用...
昆明理工大学信息工程与自动化学院学生实验报告 ( 2013 -2014 学年第一学期) 课程名称:Java EE技术开课实验室:系机房444 2013 年 12月2 日年级.专业.班计科111 学号姓 ...
- 28. EL 表达式 以及 JSTL 标签库
28. EL 表达式 以及 JSTL 标签库 1.EL 表达式 a)什么是 EL 表达式,EL 表达式的作用? EL 表达式的全称是:Expression Language.是表达式语言. EL 表达 ...
- 【JSP教科书】JSP知识在线指南(记录知识JSP体系、EL表达式、JSTL标签库、JSP开发模型和分页查询)
文章目录 @[toc] 一.JSP简介 1.1 什么是JSP? 1.2 JSP的特点 1.3 JSP为什么也是Servlet 1.4 tomact服务器中的资源分析 1.4.1 tomact服务器中的 ...
- EL表达式和JSTL标签库学习笔记
先说一些数据库的知识,在进行表的操作时,若有一对多的关系,则在建外键时应选择多的一方.如user和group的对应关系,应在一个user属于多少个group,而不是一个group有多少用户,虽然这样也 ...
- EL表达式与Jstl标签库学习
一.EL表达式 1)概念:Expression Language(EL表达式),jsp文件内置的一种能简化代码的表达式,可供jsp文件对流转数据的读取. 2)作用:让 jsp 书写起来更加的方便.简化 ...
- Java Web - EL表达式和JSTL标签库
在使用servlet和jsp的过程中,两者之间的数据流转是十分常见的,jsp实际上也是一种servlet,也就是两个servlet之间的数据流转,我们根据不同的使用场景选择使用,请求转发(在reque ...
- Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
来自:http://blog.csdn.net/love_you_99/article/details/8184797 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极 ...
- JAVA Web基础6-EL表达式与JSTL标签库
一.EL表达式语言 1.EL表达式全称expression language,用于在JSP页面获取其内置对象的内容 语法:${...} 在jsp中page指令有一个属性是isELIgnored, 用来 ...
- EL表达式和JSTL标签库使用
EL表达式 介绍: EL(Expression Language) 目的:为了使JSP写起来更加简单. 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP ...
最新文章
- C#精髓【月儿原创】第三讲 C#泛型有什么好处
- 【转】【iOS知识学习】_视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途...
- 50个最有用的Matplotlib数据分析与可视化图
- django-装饰器实现PV统计
- l380废墨收集垫已到使用寿命_湖北土工网垫
- HDOJ HDU 1849 Rabbit and Grass ACM 1849 IN HDU
- React Native运行原理解析
- HTML:H5中新增表单标签<fieldset>
- 会不会导致内存泄漏_使用ThreadLocal不当可能会导致内存泄露
- 日撸 Java 三百行(71-80天,BP 神经网络)
- Navicat安装问题及解决办法
- jsonp跨域请求用法
- win7家庭版如何升级到专业版和旗舰版
- 理想的Datepicker
- 让你提前认识软件开发(39):软件研发之殇
- 踢球骨折在家day7
- Advanced PHP 高级PHP教程 Lynda课程中文字幕
- Android Studio 中文社区
- 应收应付重分类的配置和操作详解
- 无法打开因为apple无法检查其是否包含恶意软件_最全汇总:iPhone 无法充电或充电缓慢的原因及解决办法...
热门文章
- Java学习----方法的重载
- android shape的用法总结
- jsp servlet中的过滤器Filter配置总结(转)
- SQL实现split函数,自定义分割字符,自定义取出第几个分割字符前的字符串
- h5滚动隐藏滚动条_这 10 个值得开启的隐藏功能,让你的 Chrome 释放更多潜力
- pythonui教学视频_分享软件开发相关视频教程(Java、C++、Python、UI设计、HTML5、iOS)...
- 计算机网络是将地理知识,计算机网络的基础知识精选.ppt
- oracle集群监听启动,在RAC中lsnrctl和srvctl操作监听区别
- PyCharm设置自动换行
- PWA(Progressive Web App)入门系列:(二)相关准备