JSP,JSF和EL简介
JavaServer页面,JavaServer Faces和表达语言
在本文中,我将研究JavaServer Pages(JSP)和Expression Language(EL),然后将其与JavaServer Faces (JSF)关联。 我将讨论如何在JSP和JSF代码中直接访问HTTP对象,并且您将看到它们之间语法差异的一些示例。
JSP是传统技术
JSP是Java EE的传统Web编程技术,该技术在1999年的第一个J2EE版本中发布。 后来,它在2003年被JSF取代,但是它的开发继续到Java EE 7中发布的最新版本2.3,但尚未贬值。
首选JSF
尽管JSF已取代JSP成为首选选项,但仍有许多使用JSP的应用程序,并且很可能在未来的几年中会遇到这种应用程序,因此值得对这项技术有所了解。
动态Java Web应用程序
JSP是一种服务器端技术,允许开发人员创建动态Java Web应用程序。 JSP可以看作是Servlet技术的扩展,因为它提供了易于创建用户视图的功能。 JavaServer Pages由HTML代码组成,但是它允许包含Java代码以进行动态内容创建。 由于Web应用程序包含许多用户屏幕,因此JSP在Web应用程序中使用很多。
缩小Java和HTML之间的差距
为了弥合Java代码和JSP中HTML之间的鸿沟,它提供了其他功能,例如JSP标签 , 表达式 语言和自定义 标签 。 这使它更易于理解,并有助于Web开发人员快速开发JSP页面。 但是,大多数时候,我们仅将JSP用于视图生成,并且所有业务逻辑都存在于servlet代码, Enterprise Java Bean或模型类中。
与JSF相比,它是一种不太复杂的视图呈现语言,并且没有从组件带来的优势中受益。 但是,视图逻辑和业务逻辑的分离并不总是那么清晰。 JSP Scriptlet允许直接在视图逻辑中编写Java代码。 这使分离蒙上了阴影。
内联Java
此类Java代码直接在JSP页面中的火箭和百分比<%…%>之间输入
在这里,我们使用Java代码访问HTTPServerRequest对象,以检索名为id和password的查询参数。
将这种逻辑与视图技术混合在一起是不好的做法。 这就是为什么现代Java EE应用程序选择不使用JSP,而是使用结构更好的基于组件的JSF语言的原因。
JSP隐式对象
JSP隐式对象是由Servlet容器创建的,同时将JSP转换为Servlet。 这些主要与HTTP对象和范围有关。 如上面的代码片段所示,我们可以直接在scriptlet中使用JSP中的隐式对象,以访问与当前范围或HTTP对象相关的值。
在以下代码片段中,我们将引用HTTP请求对象以获取上下文路径。
<%=request.contextPath %>
其他隐式JSP对象的示例是request , response , pageContext和application 。
为了使问题进一步复杂化, 表达式语言具有自己的隐式对象,这些隐式对象的名称与JSP中可用的名称相似,并且与相同的HTTP对象和范围相关。
${request.contextPath}
其他EL隐式对象的示例: request , requestScoped , pageContext , applicationScoped
就像前面在JSP示例中所做的那样,在这里我们从HTTP请求对象获取上下文路径。 请注意,某些对象的名称不同,并且使用了不同的语法。
在JSP和JSF中使用EL
让我们稍微扩展一下主题,看看我们如何在JSP和JSF中使用表达式语言。
下面的代码片段显示了EL在JSP中的用法:
- 隐式对象: $ {request.contextPath}
- Bean属性: $ {book.title}
下面的代码片段显示了在JSF中使用EL的情况:
- 隐式对象: #{request.contextPath}
- Bean属性: #{book.title}
在这两种情况下,对象引用都被命名为相同,并且引用相同的对象。 唯一的区别是用于引用实例的语法。 JSP使用美元符号,而JSF使用哈希 。 通过使用带有小写第一个字母的类 名来引用Bean名称 (除非已在命名注释中明确定义了另一个名称)。
最后,让我们看看在表达式语言中使用的一些语法。
- 逻辑运算符
- [] , () , – , <=> , eq ne , || 和更多
- 并且 , 不是 的instanceof, 真实 ,MOD和更多
- $ {非空book.title}
如您所料,它是非常熟悉的。 我们拥有验证相等性并执行数学运算的标准逻辑运算符。 另外,我们在复合操作(例如我们在此处看到的非空操作)上获得了一些语法糖。
进一步阅读
如何稍微了解上下文和依赖注入 (CDI)和企业Java Bean (EJB)。 这是两项核心技术。
我最近发布了一个迷你系列博客,介绍了JAX-RS 。 他们讨论了如何管理bean验证失败 , 如何与使用者和生产者一起使用以及如何创建JAX-RS资源实体 。
关于JAX-RS主题,有两个深入的系列:
- 什么是JAX-RS批注? 深入研究开发REST端点时最常用的注释。
- @Context注释用于什么? 深入了解@Context批注的许多用途。
接下来是什么?
如果您是Java EE的新手,那么不知所措要绕过企业生态系统中的所有API。 这就是为什么我编写并记录了视频培训课程Learning Java Enterprise Edition的原因 。 这是一个为期两个小时的课程,向您介绍所有最重要的Java EE API。 关于如何使用Enterprise Java进行编程的大量演示,代码示例和练习任务,将使您成为Java EE开发人员时能说得很透彻。
增进知识
如果您想了解更多信息,那么有些课程将更深入地介绍每个API。 您将学习一门关于JAX-RS API的课程,通过学习如何构造RESTful端点来提高自己的知识。 WebSocket API上有一门课程,您可以学习如何开发聊天应用程序,而JSON上则有一门课程,您可以学习如何掌握JSON-Processing API课程。 即将到来的课程很多,所以为什么不现在就加入并让您的Java EE事业发展呢?
翻译自: https://www.javacodegeeks.com/2017/09/jsp-jsf-el-introduction.html
JSP,JSF和EL简介相关推荐
- jsf el表达式_JSP,JSF和EL简介
jsf el表达式 JavaServer页面,JavaServer Faces和表达语言 在本文中,我将研究JavaServer Pages(JSP)和Expression Language(EL), ...
- JSP中的EL表达式详细介绍
2019独角兽企业重金招聘Python工程师标准>>> 一.JSP EL语言定义 EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能.脚本编制元素是指页面中能够用于在 ...
- JSP中使用EL表达式
原文地址: JSP中使用EL表达式 JSP 表达式语言--菜鸟教程 EL表达式简介
- 大数据WEB阶段(十三)JSP(二)JSP标签、EL表达式、JSTL
JSP标签.EL表达式.JSTL (一)JSP标签技术 一.JSP标签技术概述 jsp本质上是一种动态web资源开发技术 , 看起来像是html , 但其中可以写java代码 , 非常方便用来开发动态 ...
- SpringMVC的JSP页面中EL表达式不起作用${}
解决方法: 在使用el表达式的jsp中配置: <%@page isELIgnored="false" %> 该设置代表在本jsp中使用el表达式,可以解析其中的值.若i ...
- 【JSP教科书】JSP知识在线指南(记录知识JSP体系、EL表达式、JSTL标签库、JSP开发模型和分页查询)
文章目录 @[toc] 一.JSP简介 1.1 什么是JSP? 1.2 JSP的特点 1.3 JSP为什么也是Servlet 1.4 tomact服务器中的资源分析 1.4.1 tomact服务器中的 ...
- JSP中是EL表达式与JSTL
EL语法:${ } EL取值来自于作用域对象 1.如何从指定作用域取值(默认从最小作用域取值) pageScope.requestScope.sessionScope.applicationScope ...
- jsp基础、el技术、jstl标签、javaEE的开发模式
一.jsp技术基础 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ...
- JSP简单练习-EL表达式操作JavaBean
/** javaBean代码*/ package bean;public class Box {double length;double width;double height;public Box( ...
最新文章
- 2021年大数据Flink(二十五):Flink 状态管理
- apache mysql 连接数_浏览器端同时请求100个url后,如何提升有效的msyql连接数
- 华为全面屏鸿蒙,华为P50pro最新确认:麒麟1020+立体全面屏+鸿蒙系统,这才是华为...
- Java PriorityQueue PriorityBlockingQueue
- web开发常用的几种居中形式
- ubuntu cpu频率控制
- 从零开始学习docker(十)搭建WordPress+Mysql,为什么要用Docker Compose
- k8s ready 不调度_从零开始学K8s: 10.在K8s上运行应用
- oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)
- [USACO13NOV]Crowded Cows【暴力枚举】
- 小程序优化处理解决方案1 请求和setData
- Overture教程之如何更改整首谱子的调号
- pboot 将编码转换为实体html_java转换 HTML字符实体,java特殊字符转义字符串
- JAVA 页面置换先进先出算法(FIFO)
- MicroStation:MDL常用API(持续更新)
- 建模师的工资一般是多少
- 使用redisTemplate-geo计算经纬度距离
- relativity (v1.0.1)靶机
- javaweb:web.xml配置详解
- 添加ActiveSync支持
热门文章
- 达到年薪 40W 必需掌握的技术。
- Spring面试题(第一期)
- Shell入门(四)之数组
- 如何查看python安装路径
- 快来看看你们的新年礼物,猜猜是什么?
- mybatis报错Type interface xxx.Dao is not...
- php mysql 编码为utf-8_php连mysql用 utf-8编码乱码怎么办
- win 7 mysql 1067_win7系统登陆MySQL服务出现1067错误的解决方法
- hashmap应用场景_工作中常用到的Java集合有哪些?应用场景是什么?
- 10人以下小团队管理手册-学习笔记