web.xml版本过低——导致解析jsp EL表达式失败


问题描述

url地址种存在EL表达式
在这里插入图片描述
jsp页面

<%@page contentType="text/html; UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<body>
<h2>Hello World!</h2>
<a href="${pageContext.request.contextPath}/index">点击我进入主页</a>
</body>
</html>

原因:由于web.xml版本过低导致

解决方案

项目中的web.xml文件:

<!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>
  <display-name>Archetype Created Web Application</display-name>
</web-app>

将web.xml的版本提高,使用如下代码:

<?xml version="1.0" encoding="UTF-8"?>  
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"   
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  
   
</web-app> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java 中可以使用 JSP 的标准标签库(JSTL)中的 EL 表达式语言来解析 EL 表达式。JSTL 是为了简化 JSP 页面中的 Java 代码而设计的,其中包含了 EL 表达式解析器。 Java 中解析 EL 表达式的步骤如下: 1. 引入 JSTL 的依赖包。 在 Maven 项目中,可以在 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> ``` 2. 使用 EL 表达式语言解析解析表达式。 Java 中可以使用 `javax.el.ExpressionFactory` 类来创建 EL 表达式语言解析器,并通过调用 `createValueExpression()` 方法来解析表达式。例如: ```java import javax.el.ExpressionFactory; import javax.el.ValueExpression; import javax.servlet.jsp.JspFactory; ... // 获取 JSP 工厂 JspFactory jspFactory = JspFactory.getDefaultFactory(); // 获取 EL 表达式语言解析器 ExpressionFactory expressionFactory = jspFactory.getJspApplicationContext(request.getServletContext()).getExpressionFactory(); // 解析表达式 ValueExpression valueExpression = expressionFactory.createValueExpression( request.getELContext(), "${user.name}", String.class ); // 获取表达式的值 String userName = (String) valueExpression.getValue(request.getELContext()); ``` 在上面的例子中,`createValueExpression()` 方法的第一个参数是 `javax.servlet.jsp.PageContext` 类型的对象,可以通过调用 `request.getELContext()` 方法获取。第二个参数是要解析表达式字符串,第三个参数是表达式的返回值类型。调用 `getValue()` 方法可以获取表达式的值。 需要注意的是,在解析 EL 表达式时需要提供上下文对象,例如 `javax.servlet.jsp.PageContext` 类型的对象或者 `javax.el.ELContext` 类型的对象。通常情况下,可以通过 `request.getELContext()` 方法获取上下文对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值