1、什么是EL
expression language 表达式语言

特点:
语言简单,使用方便 。${表达式}。
提供自动类型转换的功能
如果返回结果为null时
String -- ””
Number -- 0
Character -- (char)0
Boolean -- false

<%
String count = request.getParameter("count");
if (count != null) {
out.println(Integer.valueOf(count) + 20);
}
%>

从查询字符串获取参数值,是String类型,如果是做算术运算,则必须开发者完成类型转换,再进行算术运算

${param.count + 20 }
1)从request获取查询字符串的值
2)自动类型转换
3)完成算术运算

param.count表示从request中获取查询字符串或从表单中获取表单数据,
parameValues表示多选框或多选下拉菜单中获取值
如果没有指定该参数名称,则获取到null, 且输出的时候为空字符串
如果获取到null,则做算术运算自动转化为0

用来处理来源于page,request, session, application中的一些attribute,查询字符串,表单数据

EL表达式的.运算符,是指attribute中的key值所指定的对象的属性的引用
如:
request.setAttribute("user", userBean);
${user.id } => ${requestScope.user.id }
${user.name } => ${requestScope.user.name }

${sessionScope.users[0].id }表示输出session对象中的users数组的第0个user对象的id属性

pageScope(pageScope里的attribute是来源于pageContext对象)
requestScope
sessionScope
applicationScope

如果没有指定来源于哪个作用域,则EL表达式语言从pageScope->requestScope->sessionScope->applicationScope依次
查找是否存在该指定的attribute

可以明确地指定EL表达式从哪个作用范围获取数据

2、el表达式中常用的符号
&& (and) 
|| (or)
! (not)
== eq (equal)
!= ne (not equal)
>= ge (greater and equal)
<= le (lower and equal)
> gt (greater than)
< lt (lower than)
/ div (divide)
% (mod)
判断是否为空 empty

3、JSTL标准标签库
JavaServer Pages Standard Tag Library

1)STL由JCP(java community process)制定的标准规范,它主要提供给JavaWeb开发人员一个标准通用的标签函数库。

2)Web程序员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入java程序(Scritping)的做法,
以提高程序的阅读性、维护性和方便性

功能如下:
基本输入输出、流程控制、循环、XML文件解析、数据库查询及国际化应用等

主要包含5类标签:
1)核心标签库
2)I18N标签库(国际化标签库)
3)SQL标签库
4)XML标签库
5)函数标签库

4、如何使用JSTL标准标签
1)下载jstl-1.2.jar库文件
2)在自己的应用中的WEB-INF目录的lib目录下存放下载好的jar文件
3)在需要使用标签库的jsp中用<%@ taglib %>指定声明使用的标签库

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> jstl的核心标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> jstl的格式化标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> jstl的数据库标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> jstl的函数标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %> jstl的xml文件标签库

uri:统一资源标识符 通过一个uri地址找到相应的标签

每一个标准标签库都有相对应的tld描述文件(jstl-1.2.jar包的META-INF),在描述文件中指定了其uri和short-name

5、核心标签库
1)表达式操作

<c:out value=""></c:out>  // 输出value属性指定的值
<c:set target="<%=user%>" property="name" value="value" />  //表示给页面中的user对象设置name属性的值 为value
<c:set var="name" value="value" scope="page|request|session|application"/>  //表示给pageContext, request, session, application对象中添加一个名称为name的attribute,值为value
<c:remove var="name" scope="page|request|session|application" />  //表示从四个对象中移除名字为name的属性
<c:catch var="name">   //异常代码
</c:catch>  //表示捕捉到的异常信息放在pageContext的name所指定的attribute,可以使用${pageScope.name }输出该异常信息

2)流程控制
<c:if test="${'abc' eq 'abc' }" var="result" scope="request">
"abc".equals("abc");
</c:if>
表示对test内的表达式进行判断,所判断的结果放在scope指定的对象中的attribute中,该attribute的名字由var指定
<c:out value="${requestScope.result }" />

<c:choose>
<c:when test="${12 > 15 }">
12 &gt; 15
</c:when>
<c:when test="${12 < 10 }">
12 &gt; 10;
</c:when>
<c:otherwise>
other
</c:otherwise>
</c:choose>
表示条件分支判断类似于if() else if() else if() else

3)迭代操作
<c:forEach var="u" items="<%=users %>" begin="0" end="5" varStatus="s" step="1">
id: ${u.id }
name: ${u.name }<br />
</c:forEach>
items是数组或列表等可以有循环操作的对象
var每次循环所接收的对象
begin从哪个索引开始循环,默认为0开始
end到哪个索引结束(如果大于最大索引,也不会报错)
varStatus表示一个对象来接收index属性,s.index可以输出循环的序号
step表示步长,增量表达式部分如何递增

<c:forTokens items="<%=str %>" delims="," var="s">
<c:out value="${s }"/>
<br />
</c:forTokens>
表示对items指定的字符串根据delims进行分割

4)URL操作
<c:import url="index.jsp"></c:import>
导入url指定的页面

<c:url value="/index.jsp"/>
获取由value指定的页面的包括contextPath的完整路径
String path = request.getContextPath();
<%=path %>/index.jsp

6、自定义标签
public int doStartTag():
在JSP引擎处理开始标签 (例如:<jsp:usebean> )时,将自动调用该方法。
如该方法返回SKIP_BODY,则JSP引擎将不再处理标记体内容
如果返回EVAL_BODY_INCLUDE,则将处理标记体内容

public int doEndTag():
JSP引擎处理结束标签 (例如 :</jsp:usebean> ) 时,将自动调用该方法。
如果该方法返回SKIP_PAGE,JSP引擎将不再处理剩余的JSP页面代码;
如果返回EVAL_PAGE,则JSP引擎将继续处理剩余的JSP页面代码

1)不带属性的自定义标签
a.自定义类继承自javax.servlet.jsp.tagext.TagSupport
b.实现public int doStartTag() throws JspException方法和
public int doEndTag() throws JspException方法
c.编写tld描述文件,放在WEB-INF目录下,文件名以.tld结尾

<taglib>
<description>MyTaglib</description> //对整个taglib的描述信息
<display-name>MyTaglib</display-name> //整个taglib的名字
<tlib-version>1.1</tlib-version> //版本号
<short-name>mytaglib</short-name> //prefix
<uri>http://gs.com/mytaglib</uri> //uri标记描述开始
<tag>
<description> //标签的说明
//print date with specified format
</description>
<name>date</name> //标签的名称,用在JSP页面中引用该标签
<tag-class>com.gs.taglib.MyTaglib</tag-class> 包含自定义标签的class文件
<body-content>JSP</body-content> //在JSP页面中进行处理
</tag>
</taglib>

d.web.xml文件中声明自定义的标签库

<jsp-config>
<taglib>
<taglib-uri>tld描述文件中的uri</taglib-uri>
<taglib-location>/mytaglib.tld</taglib-location> 指示tld描述文件的位置
</taglib>
</jsp-config>

e.在JSP页面中使用<%@ taglib uri="tld描述文件中的uri" prefix="my" %>声明使用自定义的标签库
f.<my:date></my:date>调用指定标签
2)带属性的自定义标签
a.在自定义标签类中添加与属性名称一样的属性,并且提供getter和setter方法,类中可以直接使用此属性名称
b.在tld描述文件的<body-content>JSP</body-content>后面添加与属性对应的<attribute></attribute>

<attribute>
<name>与类中和jsp标签中指定的属性名称一致</name>
<required>true|false</required> //表示在JSP页面的标签中是否一定需要提供该属性
<rtexprvalue>true|false|yes|no</rtexprvalue>// 表示该属性名称能否被用在表达式语句中
</attribut>

c.jsp页面中使用标签可以加上相应的属性

                                                            --很抱歉写的有点乱

EL表达式和标签的更多相关文章

  1. jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门

    一.mvc模式介绍 下图是常用的mvc分层模式: 项目中的包命名规则,一般如下: com.amos.domain 封装JavaBean,一般我喜欢用model命名这个包com.amos.dao 封装d ...

  2. 11、Jsp加强/EL表达式/jsp标签

    1 Jsp基础回顾 Jsp基础 1)Jsp的执行过程 tomcat服务器完成:jsp文件->翻译成java文件->编译成class字节码文件-> 构造类对象-> 调用方法 to ...

  3. jsp之el表达式jstl标签

    不管是el表达式还是jstl标签最终的目的都是要消除jsp中的java代码,当然是消除显式的java代码 el表达式的出现是为了简化jsp中读取数据并写入页面的操作. el表达式的功能不多,也很好记 ...

  4. JSP总结(jsp/EL表达式/核心标签)

    1.概念 jsp,即java Server Pages,java服务器页面. 2.简单介绍 小示例 <%@ page language="java" contentType= ...

  5. JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)

    JSP jsp的实质就是指在html界面中嵌入Java代码 jsp脚本 <%  Java代码  %>  相当于写在service方法中. <%=java 变量或者表达式 %> ...

  6. 2.EL表达式&JSTL标签库常用方法

    1.EL表达式 Expression Language表达式语言,主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出. 格式为${表达式} EL表达式输出Bean的普通属性.数组属性.Li ...

  7. EL表达式与标签的使用

  8. EL表达式与标签库

    https://blog.csdn.net/panhaigang123/article/details/78428567

  9. jsp web JavaBean MVC 架构 EL表达式 EL函数 JSTL

     一.JavaBean概念(非常重要) 1.JavaBean就是遵循一定书写规范的Java类型(开发中:封装数据) a.必须有默认的构造方法,类必须是public的   public class  ...

随机推荐

  1. asp.net core web 添加角色管理

    新建asp.net core web应用 添加RolesAdminController [Authorize(Roles = "Admin")] public class Role ...

  2. 全网最详细的Windows系统里Oracle 11g R2 Database服务器端(64bit)的下载与安装(图文详解)

    不多说,直接上干货! 环境: windows10系统(64位) 最好先安装jre或jdk(此软件用来打开oracle自带的可视化操作界面,不装也没关系:可以安装plsql,或者直接用命令行操作) Or ...

  3. Eclipse juno 中安装 JBoss Tools,集成Hibernate

    在Eclipse中集成Hibernate工具可以帮助开发者根据数据库生成映射文件.注释代码以及反向工程. Hibernate Tools作为JBoss Tools的核心组件,已经被捆绑在JBoss T ...

  4. Netty 出站缓冲区 ChannelOutboundBuffer 源码解析(isWritable 属性的重要性)

    目录: 前言 ChannelOutboundBuffer 介绍 addMessage 方法 addFlush 方法 flush0 方法 缓冲区扩展思考 总结 每个 ChannelSocket 的 Un ...

  5. SQL - 循环

    declare @itemnumber int --定义需要循环的次数 declare @tagint int --定义标志字段,用于结束循环 select @itemnumber = count(d ...

  6. Log4J & elk 事故总结

    周六的早晨8点,应用出现了大面积的登录超时问题. 作为一款日活15W.用户量700W+的应用,这是致命的问题. 唯一的安慰是——好在今天是周末,加班的公司才会使用.虽然如此,客服.产品的电话也被打爆了 ...

  7. 【Java并发编程】3、DelayQueue应用场景,多考生考试

    该场景来自于:http://www.cnblogs.com/sunzhenchao/p/3515085.html. 模拟一个考试的日子,考试时间为120分钟,30分钟后才可交卷,当时间到了,或学生都交 ...

  8. tomcat学习步骤,附带打破双亲委派模型企业应用实战

    1. tomcat入门 入门模块仅做学习大纲梳理,忽略了具体操作指引. Tomcat的三种部署模式: 简单架构模型 连接器的非阻塞模式(NIO) 通道(Channel).缓冲区(Buffer).选择器 ...

  9. Charlie's Change(完全背包+路径记忆)

    Charlie's Change Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3176   Accepted: 913 D ...

  10. 【Mybatis】XML配置实现增删改查

    ①创建数据库和表,数据库为mytest,表为users CREATE DATABASE mytest; USE mytest; DROP TABLE IF EXISTS users; CREATE T ...