




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
nishenmeJSP页面常用四种标签:EL: $jstl(sun apache): struts-tags: Ognl(Struts)一、JSP EL语言定义E L(Expression Language) 目的:为了使JSP写起来更加简单。 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法。它是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能。脚本编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码的元素。它们通常用于对象操作以及执行那些影响所生成内容的计算。JSP 2.0 将 EL 表达式添加为一种脚本编制元素。二、JSP EL简介1、语法结构$expression2、 与.运算符EL 提供“.“和“ “两种运算符来存取数据。当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用“ “。例如:$user.My-Name应当改为$userMy-Name 如果要动态取值时,就可以用“ “来做,而“.“无法做到动态取值。例如:$sessionScope.userdata中data 是一个变量3、变量EL存取变量数据的方法很简单,例如:$username。它的意思是取出某一范围中名称为username的变量。因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。属性范围在EL中的名称Page PageScopeRequest RequestScopeSession SessionScopeApplication ApplicationScoperequest的生命周期是request请求域,一个请求结束,则request结束session的生命周期是session会话域,打开一个浏览器请求一个网站的页面后,Session开始,当session超过时间限制(一般是20分种)后,session注销而失效或是人为使用session.invalidate();使用session失效;或是关闭浏览器后,session还存在,但是这里已经无法获取session了,过一会它还是失效二、JSP EL 中的有效表达式 有效表达式可以包含文字、操作符、变量(对象引用)和函数调用。我们将分别了解这些有效表达式中的每一种:1、文字JSP 表达式语言定义可在表达式中使用的以下文字:文字 文字的值 Boolean true 和 false Integer 与 Java 类似。可以包含任何正数或负数,例如 24、-45、567 Floating Point 与 Java 类似。可以包含任何正的或负的浮点数,例如 -1.8E-45、4.567 String 任何由单引号或双引号限定的字符串。对于单引号、双引号和反斜杠,使用反斜杠字符作为转义序列。必须注意,如果在字符串两端使用双引号,则单引号不需要转义。 Null null 2、操作符JSP 表达式语言提供以下操作符,其中大部分是 Java 中常用的操作符:术语 定义 算术型 +、-(二元)、*、/、div、%、mod、-(一元) 逻辑型 and、&、or、|、!、not 关系型 =、eq、!=、ne、gt、=、ge。可以与其他值进行比较,或与布尔型、字符串型、整型或浮点型文字进行比较。 空 空操作符是前缀操作,可用于确定值是否为空。 条件型 A ?B :C。根据 A 赋值的结果来赋值 B 或 C。 3、隐式对象JSP 表达式语言定义了一组隐式对象,其中许多对象在 JSP scriplet 和表达式中可用:pageContext JSP 页的上下文。它可以用于访问 JSP 隐式对象,如请求、响应、会话、输出、servletContext 等。例如,$pageContext.response 为页面的响应对象赋值。此外,还提供几个隐式对象,允许对以下对象进行简易访问:术语 定义 param 将请求参数名称映射到单个字符串参数值(通过调用 ServletRequest.getParameter (String name) 获得)。getParameter (String) 方法返回带有特定名称的参数。表达式 $() 相当于 request.getParameter (name)。 paramValues 将请求参数名称映射到一个数值数组(通过调用 ServletRequest.getParameter (String name) 获得)。它与 param 隐式对象非常类似,但它检索一个字符串数组而不是单个值。表达式 $) 相当于 request.getParamterValues(name)。 header 将请求头名称映射到单个字符串头值(通过调用 ServletRequest.getHeader(String name) 获得)。表达式 $ 相当于 request.getHeader(name)。 headerValues 将请求头名称映射到一个数值数组(通过调用 ServletRequest.getHeaders(String) 获得)。它与头隐式对象非常类似。表达式 $headerV 相当于 request.getHeaderValues(name)。 cookie 将 cookie 名称映射到单个 cookie 对象。向服务器发出的客户端请求可以获得一个或多个 cookie。表达式 $.value 返回带有特定名称的第一个 cookie 值。如果请求包含多个同名的 cookie,则应该使用 $headerV 表达式。 initParam 将上下文初始化参数名称映射到单个值(通过调用 ServletContext.getInitparameter(String name) 获得)。 除了上述两种类型的隐式对象之外,还有些对象允许访问多种范围的变量,如 Web 上下文、会话、请求、页面:术语 定义 pageScope 将页面范围的变量名称映射到其值。例如,EL 表达式可以使用 $pageScope.objectName 访问一个 JSP 中页面范围的对象,还可以使用 $pageScope.objectName.attributeName 访问对象的属性。 requestScope 将请求范围的变量名称映射到其值。该对象允许访问请求对象的属性。例如,EL 表达式可以使用 $requestScope.objectName 访问一个 JSP 请求范围的对象,还可以使用 $requestScope.objectName.attributeName 访问对象的属性。 sessionScope 将会话范围的变量名称映射到其值。该对象允许访问会话对象的属性。例如:$sessionS applicationScope 将应用程序范围的变量名称映射到其值。该隐式对象允许访问应用程序范围的对象。三、特别强调:1、注意当表达式根据名称引用这些对象之一时,返回的是相应的对象而不是相应的属性。例如:即使现有的 pageContext 属性包含某些其他值,$pageContext 也返回 PageContext 对象。2、 注意 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。四、举例说明1、例如, 等价于 $ param.username 2、例如,但是下面的那句EL语言可以完成如果得到一个username为空,则不显示null,而是不显示值。 等价于 $user.addr。3、例如: 等价于$ requestScope.userlist 4、例如,原理如上例3。$ sessionScope.userlist 1$ sessionScope.userlist 2$ applicationScope.userlist 3 $ pageScope.userlist 4$uselist 含义:执行顺序为4 1 2 3。“.”后面的只是一个字符串,并不是真正的内置对象,不能调用对象。4、例如, 等价于 $user.addr第一句前面的user,为一个变量。第二句后面user,必须为在某一个范围里的属性。QQ空间 新浪微博 腾讯微博 搜狐微博 人人网 开心网 百度搜藏 更多 10Tags:JSP EL表达式 复制链接收藏本文打印本文关闭本文返回首页 上一篇:访问JSP文件或者Servlet文件时提示下载的解决方法下一篇:JSP页面缓存cache技术-浏览器缓存介绍及实现方法相关文章获取jsp各种参数Hibernate 的原理与配置JSP动态网站开发环境配置详细方法java解析出url请求的路径和参数键值对类(解析出ujsp 文件上传浏览,支持ie6,ie7,ie8JBuilder2005单元测试之业务类介绍快速建立Servlet和JSP的运行、调试和编译环境Hibernate的JNDI绑定分析友情提醒:本站文件的解压密码: (请使用最新的winrar) 文章评论共有 0 位脚本之家网友发表了评论我来说两句最 近 更 新JSP 获取真实IP地址的代码java 易懂易用的MD5加密(可直接运行)(2)jsp form表单方法示例Hibernate的JNDI绑定分析java去掉html标签 必须首先去掉双引号的正在JSP下如何计算时间差JSP由浅入深(6) JSP声明一个开发人员眼中的JSP技术(上)传智播客java web 过滤器Resin在Windows系统下的安装热 点 排 行JSP EL表达式详细介绍struts2+spring+hibernate分页代jsp web.xml文件的作用及基本配置搭建EXTJS和STRUTS2框架(ext和stJsp生成页面验证码的方法附代码jsp JFreeChart使用心得与例子FCKeditor使用方法(FCKeditor_2.response.setHeader参数、用法的jsp 复选框使用方法JSP连接Access数据库Js与CSS工具CSS在线压缩格式化(中文) css 格式化整理工具(英文) CSS整形格式化 JavaScript 格式化整理工具 jsbeautifier Js格式化整理工具(英文) php 格式化整理工具(英文) HTML/JS互相转换工具 javascript pack加密压缩工具 JS Minifier压缩 JS混淆工具 在线JS脚本校验器错误 JavaScript 正则表达式在线测试工具 代码转换工具Base64编码加密 Escape加解密 HTML/UBB代码转换 GB2312/BIG5繁简字转换 经典小工具集 数字转换 HTML多功能代码转换器 迅雷快车加/解密 汉字转换拼音 详细出处参考:/article/20042.htm二,Struts标签一、 写jsp页面的时候,在struts2中,用的是s标记,先引入标记: 二、 struts2的标签和1是完全不同的。 struts2的标签分为两大类:非UI标志和UI标志 struts1 将标志库按功能分成HTML、Tiles、Logic和Bean等几部分 下面就介绍strut2的具体标签: 1、UI UI 标志又可以分为表单UI和非表单UI两部分。表单UI部分基本与Struts 1.x相同,都是对HTML表单元素的包装。不过,Struts 2.0加了几个我们经常在项目中用到的控件如:datepicker、doubleselect、timepicker、 optiontransferselect等。因为这些标志很多都经常用到,而且参数也很多,要在一篇文章详细说明并非易事。 下面主要是ui标签的一些用法 form: 可以上传文件的form。 textfield: datepicker: textarea: select: 挺好用的 checkboxlist: checkbox: file: a: 超链接提交 date : 2、非UI if、elseif和else 描述: 执行基本的条件流转。 参数: 名称必需默认类型描述备注test是Boolean决定标志里内容是否显示的表达式else标志没有这个参数id否Object/String用来标识元素的id。在UI和表单中为HTML的id属性 例子: Condition Flow Condition Flow 文字 图片 - 例1 condition.jsp iterator 描述: 用于遍历集合(java.util.Collection)或枚举值(java.util.Iterator)。 参数: 名称必需默认类型描述status否String如果设置此参数,一个IteratorStatus的实例将会压入每个遍历的堆栈value否 Object/String要遍历的可枚举的(iteratable)数据源,或者将放入新列表(List)的对象id否Object/String用来标识元素的id。在UI和表单中为HTML的id属性 例子: Iterator Names: White 例2 iterator.jsp i18n 描述: 加载资源包到值堆栈。它可以允许text标志访问任何资源包的信息,而不只当前action相关联的资源包。 参数: 名称必需默认类型描述value是Object/String资源包的类路径(如com.xxxx.resources.AppMsg)id否Object/String用来标识元素的id。在UI和表单中为HTML的id属性 例子: HelloWorld=Hello Wrold! 例3 classes ApplicationMperties Internationization 例3 i18n.jsp include 描述: 包含一个servlet的输出(servlet或jsp的页面)。 参数: 名称必需默认类型描述value是String要包含的jsp或servletid否Object/String用来标识元素的id。在UI和表单中为HTML的id属性 例子: Iterator Interator Page Max i18n 例4 include.jsp param 描述: 为其他标签提供参数,比如include标签和bean标签. 参数的name属性是可选的,如果提供,会调用Component的方法addParameter(String, Object), 如果不提供,则外层嵌套标签必须实现UnnamedParametric接口(如TextTag)。 value的提供有两种方式,通过value属性或者标签中间的text,不同之处我们看一下例子: blue (A)参数值会以String的格式放入statck. (B)该值会以java.lang.Object的格式放入statck. 参数: 名称必需默认类型描述name否String参数名value否Stringvalue表达式id否Object/String用来标识元素的id。在UI和表单中为HTML的id属性 例子: 请参考例4。 set 描述: set标签赋予变量一个特定范围内的值。当希望给一个变量赋一个复杂的表达式,每次访问该变量而不是复杂的表达式时用到。其在两种情况下非常有用: 复杂的表达式很耗时 (性能提升) 或者很难理解 (代码可读性提高)。 参数: 名称必需默认类型描述name是String变量名字scope否String变量作用域,可以为application, session, request, page, 或action.value否Object/String将会赋给变量的值id否Object/String用来标识元素的id。在UI和表单中为 HTML的id属性 例子: 请参考例1。 text 描述: 支持国际化信息的标签。国际化信息必须放在一个和当前 action同名的resource bundle中,如果没有找到相应message,tag body将被当作默认message,如果没有tag body,message的name会被作为默认message。 参数: 名称必需默认类型描述name是String资源属性的名字id否Object/String用来标识元素的id。在UI和表单中为HTML的id属性 例子: 请参考例3。 url 描述: 该标签用于创建url,可以通过param标签提供request参数。 当includeParams的值时all或者get, param标签中定义的参数将有优先权,也就是说其会覆盖其他同名参数的值。 参数: 略 例子: URL URL a href=i18n Max ifelseifelse 例5 url.jsp property 描述: 得到value的属性,如果value没提供,默认为堆栈顶端的元素。 参数: 名称必需默认类型描述default否String如果属性是null则显示的default值escape否trueBooelean是否escape HTMLvalue否栈顶Object要显示的值id否Object/String用来标识元素的id。在UI和表单中为HTML的id属性 例子: 请参考例2三OGNL(struts)Struts2的OGNL标签详解一、Struts2可以将所有标签分成3类:UI标签:主要用于生成HTML元素的标签。非UI标签:主要用于数据库访问,逻辑控制等标签。Ajax标签:用于Ajax支持的标签。对于UI标签,则有可以分为两类:表当标签:表单标签主要用与生成HTML页面的from元素,以及普通表单元素的标签。非表单标签:非表单标签主要用于生成页面的树、Tab页等。流程控制标签:主要包含用于实现分页、循环等流程的标签。数据访问标签:主要包含用于输出ValueStack中的值,完成国际化等功能的标签。Struts2标签库分类图:二、使用Struts2标签库的准备:1、在Web.Xml文件中增加标签库d定义。(如果应用使用的是Servlet2.3以前)2、现在jsp中使用taglib编辑指令导入标签库,然后才可以使用标签。三、Struts2的OGNL标签:OGNL是ObjectGraphicNavigationLanguage的缩写,它是一个开源项目。Struts2框架使用OGNL作为默认的表达式语言。在传统的OGNL表达式求值中,系统会假设系统只要一个根对象,但Struts2的StackContext需要多个“根”对象,其中ValueStacke只是多个“根”对象的其中之一。假设:使用标签OGNL表达式求值,不是用Struts2的OGNL表达式是求之。如果系统的Context中包含两个对象:foo对象,它在Context中的名字为foo;bar对象, 并且它在Context中的名为bar。将foo对象设置成Context的根对象。返回foo.getBlah()方法的返回值#foo.blah返回bar.getBlah()方法的返回值#bar.blah可以看出ONGL表达式的语法非正常简洁。Struts2不知根据表达式从ValueStack中取的对象,还可以直接从对象中获取属性。Struts2提供了一个特殊的OGNLProperAccessories(属性访问器),它可以自动搜寻栈内的所有实体(从上到下),直接找到求值表达式匹配的属性。Struts2使用标准的Context来进行OGNL表达式求值,OGNl处理的顶级对象是一个Context,这个Context对象就是一个Map类型实例,在该OGNL的Context中,有一个对象,这个根对象就是OGNLValueStack,如果需要访问ValueStack里的属性,例如:#取出Valuestack中的bar属性:$bar;除此之外:Struts2还提供了一些命名对象,这些命名对象与根对象无关,它们只是存在于StackContext中。所以,访问这些对象实现需要使用#前缀来指明。1、paramenters对象:用于访问HTTP请求参数,2、request对象:用于访问HttpServletRequset的属性(Attribute)的Map。例如#request.userName3、Session对象:用于访问HttpSession的属性。例如#session.userName4、Application对象:用于访问ServletContext的属性。例如#application.userName5、Attr对象:如果可以访问到,则访问PageContext,否则将依次搜索HttpServletRequset,HttpSession,ServletContext中的属性。值得注意的是:当系统创建Action实例后,该Action实例已经被保存到ValueStack中,故无需书写#即可访问Action属性。OGNL中的集合(List/Map):直接生成一个List类型的集合,该List对象中包含三个元素,都个元素之间以英文逗号隔开;例:直接生成一个Map类型的集合,该Map对象中每个Key-value对象之间以英文冒号隔开:多项之间以英文逗号隔开。例:Set标签用于蒋某个值放入指定范围:Scope:指定变量被放置的范围,该属性可以接受aplication、session、requset、page、action。如果该属性,则默认在OGNLContext中。Value:赋给变量的值,如果没有设置该属性,则将ValueStack栈顶的值付给变量。对于集合,OGNL提供了两个与元素:in和notin,其中in判断某个元素是否在指定集合中;notin则用于判断某个元素是否不在指定集合中。 in表达式:在不在notin表达式:不在在OGNL还允许通过某个规则取得集合的自己,取得集合子集有三个操作符:1、?:取出所有符合选择逻辑的元素2、:取出符合集合逻辑的第一个元素3、$:取出符合选择逻辑的最后一个元素例:35-$在上面代码中,直接在集合后紧跟.运算符表明用于取出该集合的子集,内的表达式用于获取符合集合的元素,this指的是为了从大集books刷选数据到小集合,需要对大集合books进行迭代,this代表当前迭代的元素。表达式用于获取集合中价格大于35的书的集合。(一)、控制标签:Struts2的非UI标签包括控制标签和数据标签,主要用于完成流程控制,以及对ValueStack的控制,数据标签主要用于访问ValueStack中的数据;控制标签可以完成输出流程控制,例如分支,循环等操作,也可以对集合的合并,排列。控制标签有:1、if:用于控制选择器输出的标签;2、elseif:与if标签结合使用,用于控制选择输出的标签;3、else:与if标签结合使用,用于控制选择输出的标签;4、append:将多个集合拼接成一个新的集合;5、generator:字符解析器,用于将一个字符串解析成一个集合;6、Iterator:这是一个迭代器,用于将集合迭代输出;7、merge:用于多个集合拼接陈一个新的集合。但与appernd的拼接方式有所不同。8、sort:用于对集合进行排序;9、Subset:截取集合的部分元素,形成新的子集;If/elseif/else这三个标签都是用于进行分支控制的,他们都是用于根据一个Boolean表达式的值,来确定是否计算、输出标签体的内容。例: 23 21 都不等iterator标签:用于对集合进行迭代,这里集合包含List、Set和数组,也可对Map类型的对象进行迭代输出。Value、id、Status三个属性都是可选属性,如果没有指定value属性,则使用ValueStack栈顶的集合。例: 如果为标签指定status属性,即每次迭代时都会有一个IteratorStatus实例,该实例的方法包含如下几个:IntgetCount():返回当前迭代了几个元素;IntgetIndex():返回当前元素的索引;BooleanisEven():当前元素的索引是否是偶数;BooleanisFirst():当前元素是否是第一个元素;BooleanisLast():当前元素是否是最后一个元素;BooleanisOdd():当前元素的索引是否是奇数;append标签:用于将多个集合拼接起来,组成一个新的集合,通过阵中的拼接,从而允许通过一个标签就完成对多个集合的迭代。merge标签的用法看起来很像append标签,也是用于将多个集合拼接成一个集合但是采用的拼接方式与append不同,append是以集合位顺序的拼接,merge是以元素位顺序拼接;generator标签:指定字符串按指定分隔符分隔成多个子串,临时生成多个子串可以使用iterator标签来迭代输出。可以理解我generator将一个字符串转化成一个集合,在该标签的标签体内,整个临时生成的集合将位于Valuestack的顶端,但一旦该标签结束,该集合将被移除Valuestack。属性有count:指定生成集合中元素的总数,separator:指定用于解析字符串的分隔符;val:指定被解析的字符串;converter:制定一个转化器,该转化器负责将集合中的每个字符串转化成对象;id:可选属性,制定了该属性,则将生成的集合放在pageContext属性中;Subset标签:用于取得集合的子集,该标签的底层通过org.apache.Struts2.util.Subset.IteratorFilter类提供实现。属性有:count:指定生成集合中元素的总数,如果不指定该属性,默认取得源集合的全部元素。还有source,start,decider属性;subset标签生成的子集放在ValueStack的栈顶,如果该标签结束后,该标签生成的子集将被移除出ValueStack栈。Sort标签指定集合元素进行排序,进行排序是=时,必须提供自己的排序规则,即使实现自己的C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六一活动投球活动方案
- 六一活动游泳池活动方案
- 六一活动趣味性活动方案
- 六一独唱比赛活动方案
- 六一纹眉活动方案
- 六一节慰问活动方案
- 六一营销活动方案
- 六一采访活动方案
- 六五环境日小学活动方案
- 六年级英语课上活动方案
- 小学语文课前预习有效指导的研究结题报告
- 保密知识培训与教育
- 地类及变化原因划分、数据库结构、森林资源变化图斑现地核实表、年度更新统计报表
- 安全标准化示范班组建设汇报
- 材料科学基础-第9章-材料的亚稳态
- 2023(买卖合同)买卖合作协议正规范本(通用版)
- GB/T 4437.1-2023铝及铝合金热挤压管第1部分:无缝圆管
- 工贸企业重大事故隐患判定标准-处罚事故案例
- 中药贴敷课件
- 混凝土电杆组立检验批质量验收记录表
- 【中国礼仪文化在高铁乘务中的体现及提升策略8000字(论文)】
评论
0/150
提交评论