- 浏览: 230552 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (127)
- 求职技巧 (1)
- java语言 (27)
- 数据库 (1)
- JDK 6.0学习笔记 (5)
- TOMCAT (2)
- JSP&Servlet (3)
- Data Binding (1)
- Windows (1)
- DB2 (15)
- Hibernate (5)
- XML (1)
- Financial Business (1)
- 项目管理 (0)
- Open source Framework (1)
- 总结思考反思 (2)
- Oracle (1)
- English Study (2)
- Other (28)
- java 模式 (8)
- en study (2)
- 异常处理 (4)
- Java 基础知识 (3)
- JDK1.5 Tiger (2)
- SSO (1)
- 开发中遇到的问题解决 (1)
最新评论
-
sonull:
怒赞!困扰多年的问题,就因为这个问题我一直都用subversi ...
如何使eclipse中subclipse插件的显示语言设置为英文 -
hanmiao:
果真如此,很好用,重启 eclipse 之后 svnclips ...
如何使eclipse中subclipse插件的显示语言设置为英文 -
wystark:
...
如何使eclipse中subclipse插件的显示语言设置为英文 -
minn84:
...
对年轻人的几点忠告 -
leizisdu:
引用 if(不包含物品i仅是可能的)感觉有些拗口
0/1背包问题-递归、动态规划
我们已经知道el是jsp-2.0规范的一部分,tomcat-5.x版本以上都已经能够支持jsp-2.0规范,但在更低版本的tomcat和webphere,weblogic中还是无法使用这一便捷方式。
其实我们也可以选择在jsp中禁止使用el表达式,使用jsp指令(directive)可以对禁用某一个jsp中的el表达式。
禁用之后的el表达式会以原样显示出来,如下图所示。
为了对照,我们还在13-01下放了一个可以正常使用el表达式的例子,运行效果如下图显示。
在13-01/index.jsp中禁用el表达式,是使用了isELIgnore="true"这样一条jsp指令(directive),请注意大小写。
<%@ page isELIgnored="true" %>
<%
pageContext.setAttribute("hello", "Hello World");
%>
${hello}
还有一种批量禁用el的方法,我们可以在WEB-INF/web.xml中使用jsp-property-group标签批量禁用el,我们在13-02/WEB-INF/web.xml中进行如下配置。
<?xml version="1.0" encoding="UTF-8"?> <web-app 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-app_2_4.xsd" version="2.4"> <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <el-ignored>true</el-ignored> </jsp-property-group> </jsp-config> </web-app>
这样就会禁用所有以.jsp后缀的请求中的el表达式,使用这种方式需要注意两点。
-
jsp-property-group标签是jsp-2.0中新增功能,如果你使用低版本的web.xml(2.3或以下)就不能使用这个标签了。
-
设置jsp-config会影响jsp生成servlet的过程,如果程序修改时已经有jsp转换成servlet并缓存在work目录下,那么修改后需要先清除缓存,才能看到效果。
实际上还有第三种方法可以禁用掉所有jsp中的el表达式,那就是把web.xml定义为2.3版。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
</web-app>
这个就是13-03/WEB-INF/web.xml的定义,定义了web-app的版本号是2.3,这样一来所有的jsp都无法使用el表达式了,因为el表达式是2.4版才开始支持的功能。
注意
说了以上三种禁用el表达式的方法,不是希望大家抛弃el表达式,相反是希望大家在自己编写el时出现问题时,先去考虑是否有人在这三个地方做了设置造成el表达式的失效。建议大家多多使用el表达式,少用一些jsp中的scriptlet代码。
==================================================================
作用域
使用el的时候,默认会以一定顺序搜索四个作用域,将最先找到的变量值显示出来。
如果我们有${username}这样一个正则表达式,它回去依次调用pageContext.getAttribute("username") -> request.getAttribute("username") -> session.getAttribute("username") -> application.getAttribute("username"),只要找到某一个不为空的值就立刻返回。
这样的确方便我们的操作,但是随之也出现了另外一个问题,如果pageContext和request中有同名变量,但是我想取得request中的变量该如何是好呢?这就需要为el表达式引入作用域的概念了。
${pageScope.username}
${requestScope.username}
我们可以直接访问13-04这个应用,看看el表达式支持的所有对象。
下面我们分别对每个作用域对象进行讲解。
表 13.1. el中的作用域
例子中的${pageContext.request.contextPath}返回的是request.getContextPath()的值,在此例中就是/13-04,我们经常使用这个来拼接jsp中的绝对路径。 这里的${pageContext.request.contextPath}是一种特殊用法,不能使用${request.contextPath}的形式替代。 |
|
pageScope, requestScope, sessionScope, appliationScope都可以看作是Map型变量,调用其中的数据可以使用${pageScope.name}或${pageScope["name"]}的形式,这两种写法是等价的。 在某些情况下只能使用${pageScope["content-type"]},这里不能写成${pageScope.content-type},jsp无法解析连字符(-)会出现错误。 |
|
需要注意的是${paramValues.name}得到的是一个字符串数组,如果需要获得其中某个值,还需要使用${paramValues.name[0]}指定数组中的索引。 这与下面的${headerValues.name}是相似的。 |
|
${header.name}会取得http请求中的header参数,现实工作中很少用到这里的数据。 例子中使用Host是指请求访问的主机地址,包括ip和端口号。而Referer比较有趣,如果用户通过超链接跳转过来的,Referer会保存上次访问页面的地址,我们就可以通过它来统计哪些用户是从哪里转来的了。 |
|
${cookie.name}将获得对应cookie的对象,比如我们用jsp将一段cookie发送给客户端。 Cookie cookie = new Cookie("username", "Username in cookie");
response.addCookie(cookie);
创建一个名称为username,值为"Username in cookie"的Cookie对象,然后发送给客户端。 然后我们就可以使用${cookie.username}获得这个cookie了,${cookie.username.name}获得cookie名称,${cookie.username.value}获得cookie值。 |
|
ServletContext.getInitParamter()指的应用的初始变量,这些变量都是定义在web.xml中的。 <context-param>
<param-name>username</param-name>
<param-value>username with context param</param-value>
</context-param>
${initParam.username}就会得到这里的变量值。 |
以上都是死记硬背的东西,建议实际用到的时候翻看一下就好了,演示代码都放在13-04下,为了获得param和cookie还要点击一下最下边的连接才可以。
顺便说一下如果想在jsp中显示${name}而不让jsp把它当作el计算出来,可以写成\${name},这样最后显示的结果就是${name}了。
发表评论
-
Java Exception
2009-09-07 20:45 830程序出错时至少需要做的三件事 Notify the us ... -
0/1背包问题-递归、动态规划
2009-03-31 16:36 4727问题描述:给定n种物品和一个背包,物品I的重量是Wi,其价值为 ... -
认识理解Java中native方法
2009-03-16 10:42 1175Java不是完美的,Java的不足除了体现在运行速度上要比传 ... -
Java中static、this、super、final用法
2009-03-16 10:23 811Java中static、this、 ... -
Java对象的序列化和反序列化实践
2009-03-14 13:40 1109当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论 ... -
final在java中的应用
2009-03-10 12:05 1203final在Java中并不常用, ... -
session-config session-timeout
2009-02-16 11:44 3704session-config元素为Web应用中的javax.s ... -
web.xml中load-on-startup标签的含义
2009-02-13 10:02 973在servlet的配置当中,<loa ... -
acegi
2009-02-09 16:49 791Acegi安全系统,是一个用于Spring Framework ... -
For 循环示例
2009-02-09 14:42 928package com.test.For_Each; impo ... -
Java 泛型学习(Java 泛型的理解与等价实现)02
2009-02-09 14:36 680三、泛型的综合运用实例(代码参考java参考大全,有改动) ... -
Java 泛型学习(Java 泛型的理解与等价实现)01
2009-02-09 14:29 875泛型是JAVA SE 1.5的新特性,泛型的本质是参数化类型, ... -
Java 数据库连接池
2009-02-06 23:24 1004关键字: 数据库操作 /连接池类 package tu ... -
All kinds of Problem
2009-02-06 11:46 7872009-02-06 1. 为什么在WTP prospecti ... -
程序人生:你真的懂Java吗?
2009-02-06 11:03 977在这里,笔者根据自己 ... -
struts2 零配置方法总结
2009-02-03 22:16 866struts2 零配置 -
JavaEE
2009-01-19 17:26 1268JavaEE 是 J2EE的一个新 ... -
EL表达式
2009-01-17 13:02 1311EL脚本语言的配置和支 ... -
EL表达式语言语法及其他
2009-01-17 12:58 2595${表达式} EL的前世今生: ... -
关于EL表达式语言的简单总结
2009-01-17 12:28 2218首先你弄明白EL语言是怎么回事了吗? EL语言是JSTL输出 ...
相关推荐
JAVAEE 实验报告 EL 表达式和 JSTL 标签库的使用 EL 表达式(Expression Language)是一种在 JSP 页面中使用的脚本语言,用于简化 JSP 页面的开发。EL 表达式可以访问 JSP 页面中的变量、对象和集合,进行逻辑操作...
然而,有时开发者可能会遇到EL表达式不工作的问题,这可能给开发过程带来困扰。本篇文章将详细探讨这个问题,并提供几种有效的解决方案。 1. **检查JSP页面的DOCTYPE** EL表达式在JSP 2.0及更高版本中默认启用。...
通过本文的分析与解决方案,我们可以更好地理解如何解决EL表达式未被解析的问题,避免类似错误的发生。同时,对于新手开发者来说,熟悉Maven的基本用法以及Web规范的不同版本之间的差异也是十分必要的。
通过JXL库和EL表达式,开发者可以快速生成动态的、格式化的Excel文件,这在数据分析、报表生成或数据导出场景中非常有用。尽管JXL库在处理现代Excel格式上可能稍显过时,但它仍然是一个实用的工具,尤其适合处理较旧...
EL表达式通常以`${}`包围,它可以直接输出变量的值或者执行简单的运算。例如,如果有一个名为"user"的JavaBean,其中包含一个"name"属性,那么在JSP页面中,我们可以用`${user.name}`来获取并显示这个属性的值。 **...
本文将重点介绍JSTL_EL表达式的概念、特点及其应用场景。 #### 二、EL 表达式的概念 EL表达式是一种简洁的数据访问语言,它允许开发者在JSP页面中直接获取和操作Java对象。这种表达式的语法非常直观易懂,比如`"${...
### EL表达式中`s`的要求解析 #### 一、EL表达式概述 EL(Expression Language)表达式是一种在JSP页面中使用的简化数据访问语法,主要用于获取存储在不同作用域中的对象属性。EL表达式的典型格式为`${expression}...
### EL表达式函数详解 #### 一、引言 在Web开发中,特别是使用Java Server Pages (JSP)进行开发时,我们经常会遇到需要在页面上动态处理数据的情况。为了提高开发效率并确保代码的简洁性和可维护性,Java Standard...
通过上述分析,我们可以看出,解决EL表达式无效问题需要从多个角度进行排查,包括检查依赖、语法、作用域、类型转换以及服务器配置等。理解并熟练运用这些知识,将有助于我们在开发过程中更有效地诊断和修复此类问题...
### jsp页面中EL表达式被当成字符串处理不显示值问题的解决方法 #### 背景介绍 在Java Web开发中,JSP(JavaServer Pages)是一种广泛使用的服务器端技术,用于创建动态网页。EL(Expression Language)是JSP 2.0...
### JSP EL表达式的深入解析 #### 一、EL表达式概述 ...通过上述分析,我们可以看出EL表达式不仅简化了数据的获取过程,还提供了丰富的运算符和功能支持,极大地提升了JSP页面的开发效率和代码质量。
2. **局部开启EL表达式支持**:对于特定的JSP页面,可以通过设置`isELIgnored`属性为`false`来单独启用EL表达式支持。 #### 三、详细步骤 ##### 3.1 整体升级项目配置 如果希望整个项目都能够支持EL表达式,可以...
在探讨EL表达式的`empty`操作符之前,我们先简要了解一下什么是EL表达式。EL,全称为Expression Language,是JavaServer Pages (JSP) 技术中的一个重要组成部分,用于在JSP页面中访问和操作JavaBean对象。EL表达式...
至于“工具”,可能是指一些辅助开发的工具,如IDE(如Eclipse、IntelliJ IDEA)中的EL表达式检查器,它们可以帮助开发者在编写代码时实时检查EL表达式的正确性,或者像Tomee、Glassfish这样的服务器提供的EL表达式...
### EL表达式教程 #### EL简介 EL (Expression Language),即表达式语言,是一种简洁的数据访问语言,专门设计用于在JSP页面中访问JavaBeans属性和执行简单的运算。EL表达式可以大大简化JSP页面中Java代码的编写,...
在探讨“EL表达式及JSTL标准标签”的过程中,我们深入分析了这些技术在Java Server Pages(JSP)中的应用及其对Web开发的影响。以下是对该主题的详细阐述: ### 1. EL表达式(Expression Language) EL表达式是...
在Web开发中,JSP页面经常使用EL表达式(Expression Language)来获取Java代码中定义的属性值。EL表达式的主要用途是在JSP页面中表达式语言的脚本表达式中动态获取值,其解析过程在服务器端执行。而JavaScript是一种...
EL表达式语言主要用于简化Java Servlets和JSP页面中的数据访问,而JSTL则提供了一套丰富的标签库,帮助开发者更高效地处理常见任务。 EL表达式: 1. EL是一种简洁的脚本语言,用于获取和设置JavaBeans或其他可绑定...