以前用WSAD wizard做的,都可以在JSP页面中解析到EL表达式,当然前提是JSP2.0的情况下。
今天遇到了一个莫名其妙的问题。刚下载Eclipse3.3+MyEclipse6.0体验的过程中,遇上了解析不到EL表达式的问题。经过好几个小时的琢磨终于发现了,给大家share一下:
问题就出在建Web Project的时候web.xml声明上。
web.xml声明部分一般分为如下版本的xsd,
web-app_2_2.xsd
web-app_2_3.xsd
web-app_2_4.xsd
web-app_2_5.xsd
更详细的列出各版本web.xml声明部分吧,如下:
web-app_2_2.xsd
Java代码
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/dtd/web-app_2_2.dtd">
web-app_2_3.xsd
Java代码
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!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_2_4.xsd
Java代码
1. <?xml version="1.0" encoding="UTF-8"?>
2. <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
web-app_2_5.xsd
Java代码
1. <?xml version="1.0" encoding="UTF-8"?>
2. <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
确定web.xml里的xsd版本之后一定要在JSP的声明(<%@page %>)部分加一行,如下:
<%@ page isELIgnored="false" %>
这样设为false才能解析EL表达式。
经过各版本的test之后....
注意!! 其中servlets 2.4(我没记错的话JSP 2.0出来之后的第一个版本),这个版本的isELIgnored默认设置为false。所以使用web.xml里用web-app_2_4.xsd声明的时候在JSP页面不用特意声明。
下面是官方Documention中isELIgnored Attribute的详解:
The isELIgnored Attribute
• Format
– <%@ page isELIgnored="false" %>
– <%@ page isELIgnored="true" %>
Purpose
– To control whether the JSP 2.0 Expression Language
(EL) is ignored (true) or evaluated normally (false).
• Notes
– If your web.xml specifies servlets 2.3 (corresponding to
JSP 1.2) or earlier, the default is true
• But it is still legal to change the default—you are permitted
to use this attribute in a JSP-2.0-compliant server
regardless of the web.xml version.
– If your web.xml specifies servlets 2.4 (corresponding to
JSP 2.0) or earlier, the default is false
关键字: el表达式不起作用
今天晚上学习SSH,发现一个el表达式在JSP2.0中不起作用的问题。反复调试多次,发现是web.xml中出了问题。猜测是版本的问题,但只知道了如何修改,不知道为什么那样修改。停止工作后看别人博客,很幸运的发现了原因。
tomcat5.0的版本, 使用了低版本,只求稳定。
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<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">
2.4版本默认启用el表达式,如果使用2.5版本,默认el表达式是关闭的
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
那么对应2.5的web.xml --> jsp页面里应该增加<%@ page isELIgnored="false"%>
一句话,凡是部署描述文件遵循Servlet2.4规范的WEB应用,EL表达式的计算默认是启用的,而未遵循的,则EL表达式的计算默认是禁用的。
所以解决方案还可以是:将web.xml中的DTD(文档类型定义)改问2.4的版本
分享到:
相关推荐
通过上述分析,我们可以看出,解决EL表达式无效问题需要从多个角度进行排查,包括检查依赖、语法、作用域、类型转换以及服务器配置等。理解并熟练运用这些知识,将有助于我们在开发过程中更有效地诊断和修复此类问题...
解决IDEA中EL表达式失效的问题通常涉及检查JSP页面的元指令、项目配置、依赖项以及应用服务器的设置。通过明确指定`isELIgnored`属性、确认Servlet版本和添加JSTL依赖,大多数情况下可以修复问题。如果问题依然存在...
EL表达式主要用于简化页面逻辑,提高代码可读性和维护性。在本场景中,"用EL判断登入密码和用户名是否为空"是一个典型的用户认证过程中的需求,确保在用户尝试登录时,输入的用户名和密码不为空,以防止无效的登录...
此外,EL表达式还可以与JSTL(JavaServer Pages Standard Tag Library)结合使用,增强JSP页面的功能,例如进行条件判断、循环控制等。 在实际开发中,当遇到`javax.el.ELException`时,首先应检查表达式是否符合EL...
在这个特定的错误信息中,`javax/el/ValueExpression` 指出问题可能出在EL表达式的解析或执行上。这可能是由于尝试使用未定义或无效的`ValueExpression`,或者在访问或操作Java对象时出现了问题。 **el-ri.jar** `...
在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术。在JSP中,`${}`表达式通常被称为EL...同时,学习和理解EL表达式的工作原理以及JSP页面的生命周期,对于诊断和解决这类问题非常有帮助。
JSP页面主要由静态内容(HTML、CSS、JavaScript)和动态元素(Java表达式、脚本片段、指令)组成。 二、登录页面结构 一个基本的登录页面通常包含以下组件: 1. 用户名输入框:用户输入其用户名或账户ID。 2. 密码...
通过结合EL表达式和JSTL标签,我们可以创建动态的、适应性强的分页界面,提高用户体验。在实际开发中,还需要考虑错误处理和优化,例如处理无效的页码请求,以及在数据量变化时自动调整分页参数等。
这个修复方案解决了EL表达式在Jetty服务器上的解析问题,确保了JSP页面的正常编译和执行。对于开发人员来说,了解服务器和框架对EL语法的特定要求是非常重要的,尤其是当遇到类似问题时,及时调整表达式以符合这些...
如果使用EL表达式(${...})或JSTL(如`${...}" />`),它们通常会自动处理编码问题,但仍建议在JSP页面头部设置响应编码。 8. 应用程序级设置: 在Servlet容器的配置中,可以设置全局的字符编码,比如在Spring ...
在JSP页面中,你可以定义JavaBeans(自定义组件)、使用EL(表达式语言)进行数据绑定、以及利用JSTL(JavaServer Pages Standard Tag Library)进行控制流操作。在本例中,我们可能有一个简单的JSP文件,用于接收...
对于可能出现的错误,如无效的登录尝试或数据库操作失败,JSP页面应提供适当的错误消息。这可以通过在Java代码中捕获异常,然后将错误信息传递回JSP页面显示。 总的来说,"JSP实现微博登录界面"项目展示了如何利用...
EL允许在JSP页面中直接访问JavaBean属性,使得页面更加简洁。在这个项目中,EL可用于直接显示计算结果,无需额外的Java代码。 8. **Ajax技术** 如果想增强用户体验,可以引入Ajax(Asynchronous JavaScript and ...
5. **JSTL和EL表达式**:JSP Standard Tag Library(JSTL)提供了一组标签库,可以简化JSP页面中的业务逻辑,而Expression Language(EL)则提供了简洁的方式来访问和操作Java对象。 6. **会话管理**:为了跟踪用户...
- EL简化了从JSP页面获取和设置JavaBean属性的过程,使得表达式更为简洁,如`${bean.property}`。 4. **JSP生命周期** - **解析阶段**:JSP被转换成Servlet源码。 - **编译阶段**:源码被编译成字节码,然后加载...
JSP文件由静态内容(HTML、CSS、JavaScript)和动态元素(Java代码片段、脚本let、JSP指令、EL表达式、JSTL标签库)组成。 2. **JSP生命周期**:JSP在被请求时会转化为Servlet,经历初始化、服务、销毁三个阶段。...
3. JSP表达式语言(EL):EL是一种简洁的脚本语言,用于获取和设置JavaBeans属性。它简化了从JSP页面访问Java对象的属性,如`${variable}`用于输出变量的值。 4. JavaServer Pages Standard Tag Library (JSTL):...
例如,可以使用EL表达式来获取当前页、总页数、是否有前后页等信息,并生成相应的HTML链接。 6. **服务器端处理**:在服务器端,通常会有一个Servlet或Controller处理用户的分页请求,它负责查询数据库并填充...
5. **JSTL和EL**:JSP页面可能使用了JSP Standard Tag Library (JSTL)和Expression Language (EL),以更简洁的方式处理标签和表达式。 通过学习和实践这个项目,初学者可以掌握Java Web开发的基础,并逐步提升到更...
- 使用EL(Expression Language)表达式代替脚本元素,提高代码可读性。 - 有效利用缓存和Session管理,减少不必要的数据库访问。 - 对JSP页面进行静态化,提升性能。 ### 故障排查与硬件维护 在描述中提到的故障...