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对象,以检索名为idpassword的查询参数。

将这种逻辑与视图技术混合在一起是不好的做法。 这就是为什么现代Java EE应用程序选择不使用JSP,而是使用结构更好的基于组件的JSF语言的原因。

JSP隐式对象

JSP隐式对象是由Servlet容器创建的,同时将JSP转换为Servlet。 这些主要与HTTP对象和范围有关。 如上面的代码片段所示,我们可以直接在scriptlet中使用JSP中的隐式对象,以访问与当前范围或HTTP对象相关的值。

在以下代码片段中,我们将引用HTTP请求对象以获取上下文路径。

<%=request.contextPath %>

其他隐式JSP对象的示例是requestresponsepageContextapplication

为了使问题进一步复杂化, 表达式语言具有自己的隐式对象,这些隐式对象的名称与JSP中可用的名称相似,并且与相同的HTTP对象和范围相关。

${request.contextPath}

其他EL隐式对象的示例: requestrequestScopedpageContextapplicationScoped

就像前面在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stream模式不能接受blob文件_一文带你层层解锁文件下载的奥秘

今天带来的主题是关于文件下载&#xff0c;通过本文带你领略文件下载的奥秘。本文会花费你较长的时间阅读&#xff0c;建议先收藏/点赞&#xff0c;然后查看你感兴趣的部分&#xff0c;平时也可以充当当做字典的效果来查询。:) 不整不知道&#xff0c;一整&#xff0c;居然整出…

# 管道已结束_县城这条路启用自来水新管道,看看是否在你家附近...

连日来&#xff0c;县自来水公司的工作人员顶着高温抓紧作业&#xff0c;目前&#xff0c;县城范堤路自来水管道改造工程已过半&#xff0c;预计本月中旬完工。施工现场1目前&#xff0c;盐垣路至掘中路的新管道正在进行对接&#xff0c;为了确保启用新管道后的用水安全&#x…

python 中的eval与exec

eval类似exec,是使用python编译器运行表达式和语句两者区别在于:eval是编译表达式并返回值(如: eval("hello*2") 结果是 hellohello)exec则是运行一部分代码,并且不像eval那样返回结果,exec的返回值永远是None,且exec可运行多行代码(如: exec("l[1,2,3]\nfor i …

启动时指定需要绑定的网卡_为什么小型汽油机在启动时需要拉风门,而汽车却不用?...

很多人都有骑小型摩托车的经验&#xff0c;在启动摩托车时&#xff0c;一般要把“合风”拉上&#xff0c;否则摩托车启动就会很困难。特别是在天气比较寒冷时&#xff0c;如果不拉上合风&#xff0c;摩托车很难启动。但是在汽车上却没有“合风”这个装置&#xff0c;我们在启动…

java 栈和队列实现迷宫代码_Python 实现数据结构中的的栈,队列

栈栈(stack)又名堆栈&#xff0c;它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶&#xff0c;相对地&#xff0c;把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈&#xff0c;它是把新元素放到栈顶元素的上面&#xff…

管理任务执行-如何排任务优先级

背景 工程师出生的管理者擅长做任务管理&#xff0c;凡是明确答应过的事情&#xff0c;一般会如数兑现。 研究的含义 研究模块核心管理规划把事情做对团队建设理顺做事的主体任务管理把事情做出来&#xff0c;产出实实在在的业绩和成果做事【任务管理】是非常重要的管理内容 对…

maven项目 ant_将大型项目从Ant迁移到Maven

maven项目 ant事实是我们处在艰难时期。 我们花了将近三个月的时间将构建机制从Ant迁移到Maven 。 如果您打算在大型项目中进行同样的安排&#xff0c;那是您必须安排的最短时间。 我们仍在努力解决这种迁移带来的一些附带影响&#xff0c;但幸运的是&#xff0c;它们并不是那么…

缩影和掠影_普查员的“酸苦甜” 社区人口普查工作掠影

普查员的“酸苦甜”--社区人口普查工作掠影/十年一度的人口普查即将收官自十月中旬开展摸底工作以来长安路三社区的普查员们伴着晨曦出发&#xff0c;伴着星光回家&#xff0c;走街串巷、爬楼入户。他们中有社区干部、有社区工作者、还有热心的志愿者们&#xff0c;大家都绷着一…

八数码深度优先搜索_深度优先搜索和广度优先搜索

深度优先搜索和广度优先搜索关于搜索&遍历对于搜索来说&#xff0c;我们绝大多数情况下处理的都是叫 “所谓的暴力搜索” &#xff0c;或者是说比较简单朴素的搜索&#xff0c;也就是说你在搜索的时候没有任何所谓的智能的情况在里面考虑&#xff0c;很多情况下它做的一件事…

element 日期控件 限制开始日期和结束日期

基于element ui中的时间日期控件的开始日期和结束日期的限制用picker-options属性&#xff0c; 当前日期时间器特有的选项。 代码如下&#xff1a; <el-form-itemlabel"开始日期"label-width"90px"prop"startDate"><el-date-pickerv-mo…

JArchitect v2017发布!

我们很高兴地通知您&#xff0c; JArchitect v2017已发布 &#xff0c;现在可以下载 &#xff01; JArchitect是一个分析工具&#xff0c;确实可以让您深入研究代码的结构和质量 。 使用JArchitect&#xff0c;可以使用 代码指标 &#xff0c;使用可视化 图和树图 &#…

[C语言]程序练习(一)

你好&#xff0c;这里是争做图书馆扫地僧的小白。 个人主页&#xff1a;争做图书馆扫地僧的小白_-CSDN博客 目标&#xff1a;希望通过学习技术&#xff0c;期待着改变世界。 目录 前言 一、常量练习 &#xff08;一&#xff09;整型常量 &#xff08;二&#xff09;浮点型常…

如何在程序中不用加号实现加法_程序员那些事 | JavaScript基础(六)

Hello&#xff0c;程序员那些事又与大家见面了&#xff01;JS简易日历先给大家看一下效果&#xff1a;大家可能会觉得&#xff0c;唉~好像跟上节课讲的选项卡差不多&#xff0c;就是十二个按钮&#xff0c;改变this的class&#xff0c;同时下面放十二个div&#xff0c;每次显示…

用友UI层获取机构的方法

U层&#xff1a; UFIDA.U9.UI.PDHelper.PDContext.Current.OrgIDPDContext.Current.OrgRef.CodeColumn 转载于:https://www.cnblogs.com/Xanthus/p/11556836.html

求立方根_「每日一学」数学七上:立方根的知识要点

哈喽&#xff0c;大家好&#xff01;我们又见面了&#xff0c;欢迎继续关注【轩爸辅导】的【口袋数学】。日更【每日一学】【每日一练】&#xff0c;帮助孩子日积月累&#xff0c;考出好的成绩。配套辅导&#xff0c;哪里不会学哪里&#xff0c;哪里出错练哪里&#xff0c;帮助…

python声明编码格式_使用python将doc文件转为utf8编码格式的txt

最近花了点时间看了会doc的转换&#xff0c;果然官方文档最好用&#xff0c;代码如下&#xff1a; import os import sys import fnmatch import win32com.client PATH os.path.abspath(os.path.dirname(sys.argv[0])) doc_path PATH ‘/data/doc/’ txt_path PATH ‘/dat…

49反思

感谢自闭场 转载于:https://www.cnblogs.com/znsbc-13/p/11565800.html

mongodb适用于_适用于MongoDB和Mongometer的SpiderMonkey至V8

mongodb适用于通过10gen将MongoDB 2.3 / 2.4的默认JavaScript引擎从SpiderMonkey切换到V8&#xff0c;我想我将借此机会使用mongometer比较这些发行版的相对性能。 作为安全专家&#xff0c;我真的应该首先研究“ 其他身份验证功能” ……嘿。 我将记录比较过程中所采取的步骤…

地面指示标志_详解消防应急照明和疏散指示系统的施工及安装方法消防施工

详解消防应急照明和疏散指示系统的施工及安装方法消防施工消防应急照明与疏散指示系统在生活中随处可见&#xff0c;相信您并不陌生&#xff0c;它是为人员疏散、消防作业提供照明和疏散指示的系统&#xff0c;由各类消防应急灯具及相关装置组成。自今年3月1日国家标准GB 51309…

python获取某文件路径_Python获取当前文件路径

一. Python 获取当前文件路径方法 2. sys.path[0] 获取文件当前工作目录路径&#xff08;绝对路径&#xff09; sys.argv[0]|获得模块所在的路径&#xff08;由系统决定是否是全名&#xff09; 若显示调用python指令&#xff0c;如python demo.py&#xff0c;会得到绝对路径; 若…