JSP页面中常用四种标签解析.docx
- 文档编号:8161675
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:39
- 大小:248.27KB
JSP页面中常用四种标签解析.docx
《JSP页面中常用四种标签解析.docx》由会员分享,可在线阅读,更多相关《JSP页面中常用四种标签解析.docx(39页珍藏版)》请在冰豆网上搜索。
JSP页面中常用四种标签解析
nishenmeJSP页面常用四种标签:
EL:
${}
jstl(sunapache):
<%@taglibprefix="c"uri="%>
<%@taglibprefix="fn"uri="%>
<%@taglibprefix="fmt"uri="%>
struts-tags:
<%@taglibprefix="s"uri="/struts-tags"%> form> property>…… Ognl(Struts) 一、JSPEL语言定义 EL(ExpressionLanguage)目的: 为了使JSP写起来更加简单。 表达式语言的灵感来自于ECMAScript和XPath表达式语言,它提供了在JSP中简化表达式的方法。 它是一种简单的语言,基于可用的命名空间(PageContext属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到Java类中静态方法的可扩展函数以及一组隐式对象。 EL提供了在JSP脚本编制元素范围外使用运行时表达式的功能。 脚本编制元素是指页面中能够用于在JSP文件中嵌入Java代码的元素。 它们通常用于对象操作以及执行那些影响所生成内容的计算。 JSP2.0将EL表达式添加为一种脚本编制元素。 二、JSPEL简介 1、语法结构 ${expression} 2、[]与.运算符 EL提供“.“和“[]“两种运算符来存取数据。 当要存取的属性名称中包含一些特殊字符,如.或? 等并非字母或数字的符号,就一定要使用“[]“。 例如: ${user.My-Name}应当改为${user["My-Name"]} 如果要动态取值时,就可以用“[]“来做,而“.“无法做到动态取值。 例如: ${sessionScope.user[data]}中data是一个变量 3、变量 EL存取变量数据的方法很简单,例如: ${username}。 它的意思是取出某一范围中名称为username的变量。 因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。 假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。 属性范围在EL中的名称 PagePageScope RequestRequestScope SessionSessionScope ApplicationApplicationScope request的生命周期是request请求域,一个请求结束,则request结束 session的生命周期是session会话域,打开一个浏览器请求一个网站的页面后,Session开始,当session超过时间限制(一般是20分种)后,session注销而失效 或是人为使用session.invalidate();使用session失效; 或是关闭浏览器后,session还存在,但是这里已经无法获取session了,过一会它还是失效 二、JSPEL中的有效表达式 有效表达式可以包含文字、操作符、变量(对象引用)和函数调用。 我们将分别了解这些有效表达式中的每一种: 1、文字 JSP表达式语言定义可在表达式中使用的以下文字: 文字文字的值 Boolean true和false Integer 与Java类似。 可以包含任何正数或负数,例如24、-45、567 FloatingPoint 与Java类似。 可以包含任何正的或负的浮点数,例如-1.8E-45、4.567 String 任何由单引号或双引号限定的字符串。 对于单引号、双引号和反斜杠,使用反斜杠字符作为转义序列。 必须注意,如果在字符串两端使用双引号,则单引号不需要转义。 Nullnull 2、操作符 JSP表达式语言提供以下操作符,其中大部分是Java中常用的操作符: 术语定义 算术型 +、-(二元)、*、/、div、%、mod、-(一元) 逻辑型 and、&&、or、||、! 、not 关系型 ==、eq、! =、ne、、gt、<=、le、>=、ge。 可以与其他值进行比较,或与布尔型、字符串型、整型或浮点型文字进行比较。 空 空操作符是前缀操作,可用于确定值是否为空。 条件型A? B: C。 根据A赋值的结果来赋值B或C。 3、隐式对象 JSP表达式语言定义了一组隐式对象,其中许多对象在JSPscriplet和表达式中可用: pageContext JSP页的上下文。 它可以用于访问JSP隐式对象,如请求、响应、会话、输出、servletContext等。 例如,${pageContext.response}为页面的响应对象赋值。 此外,还提供几个隐式对象,允许对以下对象进行简易访问: 术语定义 param 将请求参数名称映射到单个字符串参数值(通过调用ServletRequest.getParameter(Stringname)获得)。 getParameter(String)方法返回带有特定名称的参数。 表达式$(param.name)相当于request.getParameter(name)。 paramValues 将请求参数名称映射到一个数值数组(通过调用ServletRequest.getParameter(Stringname)获得)。 它与param隐式对象非常类似,但它检索一个字符串数组而不是单个值。 表达式${paramvalues.name)相当于request.getParamterValues(name)。 header 将请求头名称映射到单个字符串头值(通过调用ServletRequest.getHeader(Stringname)获得)。 表达式${header.name}相当于request.getHeader(name)。 headerValues 将请求头名称映射到一个数值数组(通过调用ServletRequest.getHeaders(String)获得)。 它与头隐式对象非常类似。 表达式${headerValues.name}相当于request.getHeaderValues(name)。 cookie将cookie名称映射到单个cookie对象。 向服务器发出的客户端请求可以获得一个或多个cookie。 表达式${cookie.name.value}返回带有特定名称的第一个cookie值。 如果请求包含多个同名的cookie,则应该使用${headerValues.name}表达式。 initParam将上下文初始化参数名称映射到单个值(通过调用ServletContext.getInitparameter(Stringname)获得)。 除了上述两种类型的隐式对象之外,还有些对象允许访问多种范围的变量,如Web上下文、会话、请求、页面: 术语定义 pageScope 将页面范围的变量名称映射到其值。 例如,EL表达式可以使用${pageScope.objectName}访问一个JSP中页面范围的对象,还可以使用${pageScope.objectName.attributeName}访问对象的属性。 requestScope 将请求范围的变量名称映射到其值。 该对象允许访问请求对象的属性。 例如,EL表达式可以使用${requestScope.objectName}访问一个JSP请求范围的对象,还可以使用${requestScope.objectName.attributeName}访问对象的属性。 sessionScope 将会话范围的变量名称映射到其值。 该对象允许访问会话对象的属性。 例如: $sessionScope.name} applicationScope 将应用程序范围的变量名称映射到其值。 该隐式对象允许访问应用程序范围的对象。 三、特别强调: 1、注意当表达式根据名称引用这些对象之一时,返回的是相应的对象而不是相应的属性。 例如: 即使现有的pageContext属性包含某些其他值,${pageContext}也返回PageContext对象。 2、注意<%@pageisELIgnored="true"%>表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。 四、举例说明 1、例如, <%=request.getParameter(“username”)%>等价于${param.username} 2、例如,但是下面的那句EL语言可以完成如果得到一个username为空,则不显示null,而是不显示值。 <%=user.getAddr()%>等价于${user.addr}。 3、例如: <%=request.getAttribute(“userlist”)%>等价于${requestScope.userlist} 4、例如,原理如上例3。 ${sessionScope.userlist}1 ${sessionScope.userlist}2 ${applicationScope.userlist}3 ${pageScope.userlist}4 ${uselist}含义: 执行顺序为4123。 “.”后面的只是一个字符串,并不是真正的内置对象,不能调用对象。 4、例如, <%=user.getAddr()%>等价于${user.addr} 第一句前面的user,为一个变量。 第二句后面user,必须为在某一个范围里的属性。 QQ空间新浪微博腾讯微博搜狐微博人人网开心网XX搜藏更多10Tags: JSPEL表达式复制链接收藏本文打印本文关闭本文返回首页上一篇: 访问JSP文件或者Servlet文件时提示下载的解决方法下一篇: JSP页面缓存cache技术--浏览器缓存介绍及实现方法相关文章获取jsp各种参数Hibernate的原理与配置JSP动态网站开发环境配置详细方法java解析出url请求的路径和参数键值对类(解析出ujsp文件上传浏览,支持ie6,ie7,ie8JBuilder2005单元测试之业务类介绍快速建立Servlet和JSP的运行、调试和编译环境Hibernate的JNDI绑定分析友情提醒: 本站文件的解压密码: (请使用最新的winrar)文章评论共有0位脚本之家网友发表了评论我来说两句 最近更新 JSP获取真实IP地址的代码java易懂易用的MD5加密(可直接运行) (2)jspform表单方法示例Hibernate的JNDI绑定分析java去掉html标签必须首先去掉双引号的正在JSP下如何计算时间差JSP由浅入深(6)——JSP声明一个开发人员眼中的JSP技术(上)传智播客javaweb过滤器Resin在Windows系统下的安装热点排行 JSPEL表达式详细介绍struts2+spring+hibernate分页代jspweb.xml文件的作用及基本配置搭建EXTJS和STRUTS2框架(ext和stJsp生成页面验证码的方法[附代码jspJFreeChart使用心得与例子FCKeditor使用方法(FCKeditor_2.response.setHeader参数、用法的jsp复选框使用方法JSP连接Access数据库 Js与CSS工具 CSS在线压缩格式化(中文)css格式化整理工具(英文)CSS整形格式化JavaScript格式化整理工具jsbeautifierJs格式化整理工具(英文)php格式化整理工具(英文)HTML/JS互相转换工具javascriptpack加密压缩工具JSMinifier压缩JS混淆工具在线JS脚本校验器错误JavaScript正则表达式在线测试工具代码转换工具 Base64编码加密Escape加解密HTML/UBB代码转换GB2312/BIG5繁简字转换经典小工具集数字转换HTML多功能代码转换器迅雷快车加/解密汉字转换拼音 详细出处参考: 二,Struts标签 一、 写jsp页面的时候,在struts2中,用的是s标记,先引入标记: <%@taglibprefix="s"uri="/struts-tags"%> 二、 struts2的标签和1是完全不同的。 struts2的标签分为两大类: 非UI标志和UI标志struts1将标志库按功能分成HTML、Tiles、Logic和Bean等几部分 下面就介绍strut2的具体标签: 1、UI UI标志又可以分为表单UI和非表单UI两部分。 表单UI部分基本与Struts1.x相同,都是对HTML表单元素的包装。 不过,Struts2.0加了几个我们经常在项目中用到的控件如: datepicker、doubleselect、timepicker、optiontransferselect等。 因为这些标志很多都经常用到,而且参数也很多,要在一篇文章详细说明并非易事。 下面主要是ui标签的一些用法 form: formaction="exampleSubmit"method="post"enctype="multipart/form-data"> submit /> reset /> form>可以上传文件的form。 textfield: textfield label="姓名: " name="name" tooltip="EnteryourNamehere"/> datepicker: datepicker tooltip="SelectYourBirthday" label="生日" name="birthday"/> textarea: textarea tooltip="Enteryourremart" label="备注" name="remart" cols="20" rows="3"/> select: select tooltip="Chooseuser_type" label="" list="#{'free': '免费','vip': '收费'}"value="#{'free': '免费'}" name="bean.user_type" emptyOption="true" headerKey="None" headerValue="None"/> select tooltip="Chooseuser_type" label="" list="#{'free': '免费','vip': '收费'}"value="#{'free': '免费'}" name="bean.user_type" emptyOption="true" headerKey="None" headerValue="None"/> select list="venderList" listKey="id" listValue="name" value="%{panyName}" name="companyName"cssClass="sel_style_w_180"/> 挺好用的 checkboxlist: checkboxlist tooltip="ChooseyourFriends" label="朋友" list="{'Patrick','Jason','Jay','Toby','Rene'}" name="friends"/> checkbox: checkbox tooltip="ConfirmedthatyourareOver18" label="年龄" name="legalAge" value="18"/> file: file tooltip="UploadYourPicture" label="Picture" name="picture"/> a: ahref="getP.jsp">超链接提交 a> date: datename="ad_end_time"format="yyyy-MM-dd"/> 2、非UI if、elseif和else描述: 执行基本的条件流转。 参数: 名称必需默认类型描述备注test是Boolean决定标志里内容是否显示的表达式else标志没有这个参数id否Object/String用来标识元素的id。 在UI和表单中为HTML的id属性例子: <%@pagec%> <%@taglibprefix="s"uri="/struts-tags"%> DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"> -- 这里有点小技巧: 本来可以用#parameters.name[0]来获得,请求中name的值。 但是,在我实现include例子时, 无论我用param标志给name赋任何值,#parameters里面不会含有任何值,所以#parameters.name也为空值。 其原因为: 当使用include标志时,被包含的页面(included)里#parameters拿到的是包含页面里的请求参数。 因此,这里必须手工调用request.getParameter("name")。 --> iteratorvalue="linkList"status="bean"> propertyvalue="#bean.Index+1"/> propertyvalue="link_title"/> propertyvalue="link_url"/> iftest="link_type==1"> 文字 if> elseiftest="link_type==2"> 图片 elseif> else> ----- else> 例1condition.jsp iterator描述: 用于遍历集合(java.util.Collection)或枚举值(java.util.Iterator)。 参数: 名称必需默认类型描述status否String如果设置此参数,一个IteratorStatus的实例将会压入每个遍历的堆栈value否Object/String要遍历的可枚举的(iteratable)数据源,或者将放入新列表(List)的对象id否Object/String用来标识元素的id。 在UI和表单中为HTML的id属性例子: <%@pagec%> <%@pageimport="java.util.List"%> <%@pageimport="java.util.ArrayList"%> <%@taglibprefix="s"uri="/struts-tags"%> DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"> <% Listlist=newArrayList(); list.add("Max"); list.add("Scott"); list.add("Jeffry"); list.add("Joe"); list.add("Kelvin"); 如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。 copyright@ 2008-2022 冰点文档网站版权所有 经营许可证编号:鄂ICP备2022015515号-1ConditionFlow