Java Web入门之EL(表达式语言)的解析及使用

简介: Java Web入门之EL(表达式语言)的解析及使用

前言


EL(表达式语言)的特点是简介 增加程序的可读性和可维护性 其语法如下


${expression} expression是用于指定要输出的内容 可以是字符串 也可以是由EL运算符组成的表达式


一、EL的特点?


1:可以与JSTL结合使用 也可以与JavaScript语句结合使用


2:EL中会自动进行类型转换


3:EL不仅可以访问一般变量 还可以访问JavaBean中的属性以及嵌套属性和集合对象


4:在EL中可以执行算术运算 逻辑运算 关系运算 条件运算等操作


5:在EL中可以获得命名空间


6:在EL中进行除法运算时 如果0作为除数 则返回无穷大而不是错误


7:在EL中可以访问JSP的作用域


8:扩展函数可以与Java类的静态方法进行映射


二、禁用EL的三种方法


1:使用斜杠\符号  语法如下

\${expression}


2:使用page指令来禁用

<%@ page isELIgnored="布尔值"%>

3:在web.xml中配置<el-ignored>元素

<jsp:config>
  <jsp-property-group>
  <url-pattern>*.jsp</url-pattern>
 <el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>


三:通过EL访问数据


通过EL提供的[]  和 .运算符可以访问数据 通常情况下这两个运算符是等价的  可以相互替代


但是当访问数组或者列表的元素时最好用[]运算符 因为可以具体访问第几个元素


在EL中判断对象是否为空

${empty expression}
判断是否为非空
${not empty expression}


其余的算数 逻辑条件运算等等与JAVA区别不大  此处不再赘述


四:EL的隐含对象


1:页面上下文对象pageContext


用于访问JSP内置对象和servletContext 在获取到这些内置对象后 就可以获取其属性值 语法如下


等等内置对象都可以访问

${pageContext.request}
${pageContext.response}
${pageContext.out}
${pageContext.session}


2:访问作用域范围的隐含对象


有以下四个  pageScope ,requestScope, sessionScope, applicationScope。


应用这四个隐含对象指定所要查找的标识符的作用域后 系统将不再按照默认的顺序来查找相应的标识符


3:访问环境信息的隐含对象


1:param和paramValues对象


用于获取请求参数的值 当值有多个的时候用paramValues会方便一些


2:header和headerValues对象


用于获取HTTP请求的一个具体的header的值 在header拥有多个不同值得情况 就必须使用headerValues对象


3:initparam对象


用于获取web应用初始化参数得值


五:定义和使用EL函数


分为以下三步


1:编写一个java类 并在该类中编写公用得静态方法 用于实现自定义EL函数的具体功能


2:编写标签库描述文件 并对函数进行声明 该文件扩展名为.tld 被保存到Web应用的WEB-INF文件夹下


3:在JSP页面中引用标签库 并调用定义的EL函数 实现相应的功能


对应代码如下


java类

package.com.wgh;
public class StringDeal{
public static String shiftEnter(String str){
String newStr=str.replacedAll("\r\n","<br>");
newStr=newStr.replaceAll("","&nbsp;");
 return newStr;
}
}


标签库描述文件

<?xml version="1.0" encoding="utf-8"?>
 <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/SMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 web-jsptaglibrary_2_0.xsd"
version="2.0">
 <tlib-version>1.0</tlib-version>
<uri>/stringDeal</uri>
<function>
 <name>shiftEnter</name>
<function-class>com.wgh.StringDeal</function-class>
<function-signature>java.lang.String.shiftEnter(java.lang.String)
</function-signature)
</function>
</taglib>
目录
打赏
0
0
0
0
193
分享
相关文章
2025 年 Java 从入门到精通学习笔记全新版
《Java学习笔记:从入门到精通(2025更新版)》是一本全面覆盖Java开发核心技能的指南,适合零基础到高级开发者。内容包括Java基础(如开发环境配置、核心语法增强)、面向对象编程(密封类、接口增强)、进阶技术(虚拟线程、结构化并发、向量API)、实用类库与框架(HTTP客户端、Spring Boot)、微服务与云原生(容器化、Kubernetes)、响应式编程(Reactor、WebFlux)、函数式编程(Stream API)、测试技术(JUnit 5、Mockito)、数据持久化(JPA、R2DBC)以及实战项目(Todo应用)。
81 5
Redis 实操要点:Java 最新技术栈的实战解析
本文介绍了基于Spring Boot 3、Redis 7和Lettuce客户端的Redis高级应用实践。内容包括:1)现代Java项目集成Redis的配置方法;2)使用Redisson实现分布式可重入锁与公平锁;3)缓存模式解决方案,包括布隆过滤器防穿透和随机过期时间防雪崩;4)Redis数据结构的高级应用,如HyperLogLog统计UV和GeoHash处理地理位置。文章提供了详细的代码示例,涵盖Redis在分布式系统中的核心应用场景,特别适合需要处理高并发、分布式锁等问题的开发场景。
119 38
|
20天前
|
Java Redis 面试题集锦 常见高频面试题目及解析
本文总结了Redis在Java中的核心面试题,包括数据类型操作、单线程高性能原理、键过期策略及分布式锁实现等关键内容。通过Jedis代码示例展示了String、List等数据类型的操作方法,讲解了惰性删除和定期删除相结合的过期策略,并提供了Spring Boot配置Redis过期时间的方案。文章还探讨了缓存穿透、雪崩等问题解决方案,以及基于Redis的分布式锁实现,帮助开发者全面掌握Redis在Java应用中的实践要点。
68 6
java 入门学习视频_2025 最新 java 入门零基础学习视频教程
《Java 21 入门实操指南(2025年版)》提供了Java最新特性的开发指导。首先介绍了JDK 21和IntelliJ IDEA 2025.1的环境配置,包括环境变量设置和预览功能启用。重点讲解了Java 21三大核心特性:虚拟线程简化高并发编程,Record模式优化数据解构,字符串模板提升字符串拼接可读性。最后通过图书管理系统案例,展示如何运用Record定义实体类、使用Stream API进行数据操作,以及结合字符串模板实现控制台交互。该指南完整呈现了从环境搭建到实际项目开发的Java 21全流程实
46 1
|
19天前
|
Java 抽象类与接口在 Java17 + 开发中的现代应用实践解析
《Java抽象类与接口核心技术解析》 摘要:本文全面剖析Java抽象类与接口的核心概念与技术差异。抽象类通过模板设计实现代码复用,支持具体方法与状态管理;接口则定义行为规范,实现多态支持。文章详细对比了两者在实例化、方法实现、继承机制等方面的区别,并提供了模板方法模式(抽象类)和策略模式(接口)的典型应用示例。特别指出Java8+新特性为接口带来的灵活性提升,包括默认方法和静态方法。最后给出最佳实践建议:优先使用接口定义行为规范,通过抽象类实现代码复用,合理组合两者构建灵活架构。
32 2
Java 从入门到实战完整学习路径与项目实战指南
本文详细介绍了“Java从入门到实战”的学习路径与应用实例,涵盖基础、进阶、框架工具及项目实战四个阶段。内容包括环境搭建、语法基础、面向对象编程,数据结构与算法、多线程并发、JVM原理,以及Spring框架等核心技术。通过学生管理系统、文件下载器和博客系统等实例,帮助读者将理论应用于实践。最后,提供全链路电商系统的开发方案,涉及前后端技术栈与分布式架构。附代码资源链接,助力成为合格的Java开发者。
49 4
Java 21 与 Spring Boot 3.2 微服务开发从入门到精通实操指南
《Java 21与Spring Boot 3.2微服务开发实践》摘要: 本文基于Java 21和Spring Boot 3.2最新特性,通过完整代码示例展示了微服务开发全流程。主要内容包括:1) 使用Spring Initializr初始化项目,集成Web、JPA、H2等组件;2) 配置虚拟线程支持高并发;3) 采用记录类优化DTO设计;4) 实现JPA Repository与Stream API数据访问;5) 服务层整合虚拟线程异步处理和结构化并发;6) 构建RESTful API并使用Springdoc生成文档。文中特别演示了虚拟线程配置(@Async)和StructuredTaskSco
82 0
最新 Java 从入门到实战技术实操指南
这是一份全面的Java实操指南,涵盖从入门到微服务架构的完整学习路径。内容包括Java 21新特性(虚拟线程、Record类)、响应式编程(Spring WebFlux)、微服务架构(Spring Boot 3.2、Spring Cloud、Kubernetes)、数据库与缓存(Redis 8、R2DBC)以及云原生部署和监控(Prometheus、Grafana)。通过电商系统实战项目,掌握最新技术栈与开发技巧。适合初学者及进阶开发者,附带代码示例与资源链接,助你快速提升技能。
39 0
应届生面试高频 Java 基础问题及详细答案解析
摘要: Java数据类型分为基本类型(如int、float等)和引用类型(如类、数组)。final可修饰类、方法和变量,使其不可继承、重写或修改。static用于类级别的变量和方法,共享于所有实例。&quot;==&quot;比较基本类型的值或引用类型的地址,而equals比较对象内容(需重写)。Java只有值传递,对于引用类型传递的是地址副本。String对象不可变,拼接操作会创建新对象而非修改原对象。Java 10的var支持类型推断,Java 16的Record提供不可变类简化。
42 0

热门文章

最新文章

推荐镜像

更多
  • DNS
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等

    登录插画

    登录以查看您的控制台资源

    管理云资源
    状态一览
    快捷访问