Jsp的各种元素在转化为servlet时处理是不一样的:
指令,控制web容器如何处理页面
脚本,被插入到生成的servlet里
EL表达式,作为参数传递到解析器
get/set Property,变成方法,调用bean
jsp:include/forward,变成servlet相关api
jsp:plugin,变成浏览器标签
自定义标签,变成方法,调用相关实现

ParseException会在编译jsp页面过程中产生

_jspInit(),_jspService(),_jspDestroy()

<%@ page buffer=”none|xxxkb” %>
<%@ page contentType="text/vnd.wap.wml"%>
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page pageEncoding="UTF-8" %>

<%@ page errorPage=”file_name”%>
<%@ page isErrorPage="true" %>
这个错误页面能得到一个javax.servlet.jsp.ErrorData对象
可以用EL表达式处理
${pageContext.errorData.statusCode}
${pageContext.errorData.throwable}
${pageContext.errorData.throwable.cause}

<%@pageisThreadSafe="true|false" %>声明这个jsp是多线程安全的,而且默认是true
你要手动处理这个页面的所有能并发访问的变量
即时是false,application和session域的属性和bean也要处理同步,一般不要设成false

EL表达式有两种:${}会立即计算,#{}则会延后计算(此写法可略)
前者是Jsp方式,后者是Jsf方式为JSP2.1新增
他们只能用做静态文本,或是作为某个标签的属性
<fmt:formatNumber value="${sessionScope.cart.total}"/>
${}都是只读的,只能调用字段
<h:inputTextid="name" value="#{customer.name}" />
#{}则可以读写,并且能调用方法

调用字段的El可以调用以下对象的字段或属性:
javaBean组件,集合,枚举,隐式对象
${customer}会按page,request,session,application的顺序寻找customer的值,直到返回null
隐式对象则会返回这个Object

public enum Suit{hearts,spades,diamonds,clubs}
${mySuit== "hearts"}这样可以直接访问mySuit枚举的常量Suit.hearts
.和[]用来访问其他对象的属性,集合的成员
${customer.name}或${customer["name"]},单引号也可以
${customer.address["street"]}组合使用也可以
${customer.orders[1]}可以访问数组或list成员
${customer.orders.socks}可以取出map下的与"socks"对应的value

${"literal"}也可以用常量或直接计算
${customer.age+20}
${57}
${true}
${null}
EL表达式里的字符串也可以是单引号

<some:tagvalue="some${expr}${expr}text${expr}"/>也可以这样写
会依次计算每个EL然后像字符串连接起来
EL的结果跟期望的类型不匹配的话会自动转换

调用方法的EL只能调用public非static方法,而且只能用作标签的属性,不能作为静态文本

<my:tagsomeAttribute="sometext\#{more\${text" />
前面加\表示不处理此EL
或是在web.xml里配置
<jsp-property-group>
<deferred-syntax-allowed-as-literal>
true
</deferred-syntax-allowed-as-literal>
</jsp-property-group>

<jsp-property-group>
<el-ignored>true</el-ignored>
</jsp-property-group>
或是
<%@page ... deferredSyntaxAllowedAsLiteral="true" %>
<%@page isELIgnored="true" %>

${’${’}exprA}的结果是${exprA}
\${exprA}的结果是${exprA}

隐式对象:
pageContext,下面有servletContext,session,request,response
param,paramValues,header,headerValues,cookie,initParam
pageScope,requestScope,SessionScope,applicationScope
${}里面是个隐式对象的话会返回这个对象,而不是普通的value

empty是一个运算符,判断是否为null或空
${!empty param.Add}
${pageContext.request.contextPath}
${sessionScope.cart.numberOfItems}
${param[’mycom.productId’]}
${header["host"]}
${requestScope[’javax.servlet.forward.servlet_path’]}里面有点的只能用[]

 

JavaEE5 Tutorial_Jsp,EL的更多相关文章

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

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

  2. EL表达式(3)

    本篇讲解使用EL表达式来调用Java方法(自定义EL函数)和Sun公司开发的EL函数库. 简单来说,我们在一个类中的某个方法,可以使用EL进行调用,这个能被EL表达式调用的方法称之为EL函数,但是这种 ...

  3. jsp标签jstl和el表达式

    1.el表达式的使用 1)访问bean的属性 方式一: ${user.name},容器会依次从pageContext,request,session,application中查找(getAttribu ...

  4. EL标签

    1.EL的作用 jsp的核心语法: jsp表达式 <%=%>和 jsp脚本<%  %>. 开发jsp的原则: 尽量在jsp页面中少写甚至不写java代码. 使用EL表达式替换掉 ...

  5. 浅谈EL与JSTL

    讲道理,自己在博大精深的Java世界里还只是一个很小很小的菜鸟.处于成长与学习之中,但学习一个漫长的过程.尤其对于那些知识点我觉得总结是尤为重要的.反正在我看来这段时间里虽然过了很多知识但却是一脸懵逼 ...

  6. 一、jsp和Servlet基础理论及jstl和EL表达式用法

    1.题外话:使用JSP有近一年半的时间了,但是开发量不大.昨天部门突然让做个读取EXCLE文件,然后在前台页面进行展示.并通过点击查看按钮可以对每条明细记录进行跳转后进行详情查看,并按照页面原型进行页 ...

  7. jsp页面无法识别el表达式的解决方案

    今天在写一个springmvc的小demo时,碰到一个问题,在jsp页面中书写为${user.username}的表达式语言,在浏览器页面中仍然显示为${user.username},说明jsp根本不 ...

  8. Mac制作U盘系统(OS X El Capitan)教程

    前言部分 重装过Mac OS X系统的人应该都深有体会,通过自带的重新安装 Mac OS X功能恢复系统(开机时按Command+R) 要耗费10几个小时才能完成(请求苹果国外服务器),但如果通过U盘 ...

  9. El表达式的关系运算符

    El表达式的关系运算符: ==  对应  eq !=   对应  ne >    对应  gt <    对应  It

随机推荐

  1. sizeof()与strlen()的区别

    首先需要说明的是sizeof和strlen都可以求长度,但是却有很大的区别,简单来说可以概括为以下几点: 1.sizeof是一个关键字,而strlen确实一个函数. 2.sizeof求的是字节长度,而 ...

  2. hdoj - 5202 Rikka with string (BestCoder Round #37 ($))

    http://acm.hdu.edu.cn/showproblem.php?pid=5202 字符串处理的题,要细心. 给定一个只包含小写字母和问号的字符串,让我们还原出本来的字符串,把问号替换成任意 ...

  3. .htaccess的应用

    今天下班后,同事问到这个东西的用法.我以前也没接触过,特地搜索了一下,现在保存方便以后使用. 1.首先判断服务器类型,服务器是否支持. 2.写法是否有错误. 3.需要的功能是否在.htaccess是否 ...

  4. armeabi,armeabi-v7a ,x86 和mips 都是什么?

    首先要明白ABI的概念:  ABI(Application Binary Interface)实际就是指应用程序基于哪种指令集来进行编译,我们能用到的ABI 也就四种  armeabi,armeabi ...

  5. 2-Medium下的MultipleCommandAssembly

    1.首先创建一个控制台项目 2.添加引用[红色的都是将项目添加为引用,其中蓝色的log4net是直接从源代码下的Reference文件夹下引用的dll] 3.写代码 1)首先将config配置好[ht ...

  6. 第7篇 ORACLE EBS DEMO虚拟机环境的安装

    ERP信息系统的实施不仅要求懂得道理方面的知识,更要侧重于应用实践.为了有一个稳定的测试环境.初学者可以自己搭建一个EBS DEMO环境.本节介绍EBS DEMO环境虚拟机的安装.一. 安装前的准备( ...

  7. 《OD大数据实战》HDFS入门实例

    一.环境搭建 1.  下载安装配置 <OD大数据实战>Hadoop伪分布式环境搭建 2. Hadoop配置信息 1)${HADOOP_HOME}/libexec:存储hadoop的默认环境 ...

  8. java I/O总结

    IO是非常重要的一块,但通常又被人们所忽视,这里希望能有个很清晰的介绍.自己学习的同时希望能够给别人带来一些帮助,对文章中用到其他作者(已经给出了链接)的图片在这里表示感谢! IO的分类 java I ...

  9. sql, plsql 总结

    /* *====================================== basic sql ========================================== */ - ...

  10. ural1221. Malevich Strikes Back!

    http://acm.timus.ru/problem.aspx?space=1&num=1221 算是枚举的 题目意思是必须划出这样的 11011 10001 00000 10001 110 ...