技术标签: Java
在jstl中的fn标签也是我们在网页设计中经常要用到的很关键的标签,在使用的时候要先加上头
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>就可以使用fn标签了。
使用此标签可以帮我们在jsp页面不再嵌入那么多的java代码,如分割函数split()的使用等。
具体使用方法请参见下表:
|
称呼Functions标签库为标签库,倒不如称呼其为函数库来得更容易理解些。因为Functions标签库并没有提供传统的标签来为JSP页面的工作服务,而是被用于EL表达式语句中。在JSP2.0规范下出现的Functions标签库为EL表达式语句提供了许多更为有用的功能。Functions标签库分为两大类,共16个函数。
长度函数:fn:length
字符串处理函数:fn:contains、fn:containsIgnoreCase、fn:endsWith、fn:escapeXml、fn:indexOf、fn:join、fn:replace、fn:split、fn:startsWith、fn:substring、fn:substringAfter、fn:substringBefore、fn:toLowerCase、fn:toUpperCase、fn:trim
以下是各个函数的用途和属性以及简单示例。
9.7.1 长度函数fn:length函数
长度函数fn:length的出现有重要的意义。在JSTL1.0中,有一个功能被忽略了,那就是对集合的长度取值。虽然java.util.Collection接口定义了size方法,但是该方法不是一个标准的JavaBean属性方法(没有get,set方法),因此,无法通过EL表达式“${collection.size}”来轻松取得。
fn:length函数正是为了解决这个问题而被设计出来的。它的参数为input,将计算通过该属性传入的对象长度。该对象应该为集合类型或String类型。其返回结果是一个int类型的值。下面看一个示例。
<%ArrayList arrayList1 = new ArrayList();
arrayList1.add("aa");
arrayList1.add("bb");
arrayList1.add("cc");
%>
<%request.getSession().setAttribute("arrayList1", arrayList1);%>
${fn:length(sessionScope.arrayList1)}
假设一个ArrayList类型的实例“arrayList1”,并为其添加三个字符串对象,使用fn:length函数后就可以取得返回结果为“3”。
9.7.2 判断函数fn:contains函数
fn:contains函数用来判断源字符串是否包含子字符串。它包括string和substring两个参数,它们都是String类型,分布表示源字符串和子字符串。其返回结果为一个boolean类型的值。下面看一个示例。
${fn:contains("ABC", "a")}<br>
${fn:contains("ABC", "A")}<br>
前者返回“false”,后者返回“true”。
9.7.3 fn:containsIgnoreCase函数
fn:containsIgnoreCase函数与fn:contains函数的功能差不多,唯一的区别是fn:containsIgnoreCase函数对于子字符串的包含比较将忽略大小写。它与fn:contains函数相同,包括string和substring两个参数,并返回一个boolean类型的值。下面看一个示例。
${fn:containsIgnoreCase("ABC", "a")}<br>
${fn:containsIgnoreCase("ABC", "A")}<br>
前者和后者都会返回“true”。
9.7.4 词头判断函数fn:startsWith函数
fn:startsWith函数用来判断源字符串是否符合一连串的特定词头。它除了包含一个string参数外,还包含一个subffx参数,表示词头字符串,同样是String类型。该函数返回一个boolean类型的值。下面看一个示例。
${fn:startsWith ("ABC", "ab")}<br>
${fn:startsWith ("ABC", "AB")}<br>
前者返回“false”,后者返回“true”。
9.7.5 词尾判断函数fn:endsWith函数
fn:endsWith函数用来判断源字符串是否符合一连串的特定词尾。它与fn:startsWith函数相同,包括string和subffx两个参数,并返回一个boolean类型的值。下面看一个示例。
${fn:endsWith("ABC", "bc")}<br> ${fn:endsWith("ABC", "BC")}<br>
前者返回“false”,后者返回“true”。
9.7.6 字符实体转换函数fn:escapeXml函数
fn:escapeXml函数用于将所有特殊字符转化为字符实体码。它只包含一个string参数,返回一个String类型的值。
9.7.8 字符匹配函数fn:indexOf函数
fn:indexOf函数用于取得子字符串与源字符串匹配的开始位置,若子字符串与源字符串中的内容没有匹配成功将返回“-1”。它包括string和substring两个参数,返回结果为int类型。下面看一个示例。
${fn:indexOf("ABCD","aBC")}<br> ${fn:indexOf("ABCD","BC")}<br>
前者由于没有匹配成功,所以返回-1,后者匹配成功将返回位置的下标,为1。
9.7.9 分隔符函数fn:join函数
fn:join函数允许为一个字符串数组中的每一个字符串加上分隔符,并连接起来。它的参数、返回结果和描述如表9.25所示:
表9.25 fn:join函数
参数 |
描述 |
array |
字符串数组。其类型必须为String[]类型 |
separator |
分隔符。其类型必须为String类型 |
返回结果 |
返回一个String类型的值 |
下面看一个示例。
<% String[] stringArray = {"a","b","c"}; %>
<%request.getSession().setAttribute("stringArray", stringArray);%>
${fn:join(sessionScope.stringArray,";")}<br>
定义数组并放置到Session中,然后通过Session得到该字符串数组,使用fn:join函数并传入分隔符“;”,得到的结果为“a;b;c”。
9.7.10 替换函数fn:replace函数
fn:replace函数允许为源字符串做替换的工作。它的参数、返回结果和描述如表9.26所示:
表9.26 fn:replace函数
参数 |
描述 |
inputString |
源字符串。其类型必须为String类型 |
beforeSubstring |
指定被替换字符串。其类型必须为String类型 |
afterSubstring |
指定替换字符串。其类型必须为String类型 |
返回结果 |
返回一个String类型的值 |
下面看一个示例。
${fn:replace("ABC","A","B")}<br>
将“ABC”字符串替换为“BBC”,在“ABC”字符串中用“B”替换了“A”。
9.7.11 分隔符转换数组函数fn:split函数
fn:split函数用于将一组由分隔符分隔的字符串转换成字符串数组。它的参数、返回结果和描述如表9.27所示:
表9.27 fn:split函数
参数 |
描述 |
string |
源字符串。其类型必须为String类型 |
delimiters |
指定分隔符。其类型必须为String类型 |
返回结果 |
返回一个String[]类型的值 |
下面看一个示例。
${fn:split("A,B,C",",")}<br>
将“A,B,C”字符串转换为数组{A,B,C}。
9.7.12 字符串截取函数fn:substring函数
fn:substring函数用于截取字符串。它的参数、返回结果和描述如表9.28所示:
表9.28 fn:substring函数
参数 |
描述 |
string |
源字符串。其类型必须为String类型 |
beginIndex |
指定起始下标(值从0开始)。其类型必须为int类型 |
endIndex |
指定结束下标(值从0开始)。其类型必须为int类型 |
返回结果 |
返回一个String类型的值 |
下面看一个示例。
${fn:substring("ABC","1","2")}<br>
截取结果为“B”。
大家好,我是风游,我的世界7月4日更新了村庄玩法,外观上的变化,村民的职业也有了很大的拓展,在村庄中我们可以找到各种职业的村民,每种职业村民还会贩卖不同的道具,冒险家还可以给无业村民赋予职业,而赋予职业的方法,就是在他身边放一个对应的职业工作台。那么我的世界中一共有几种类型的村民,他们贩卖的道具有哪些,对应的道具方块又是什么,一起来看看吧。村民版本变化①全新外观:村民的外观由交易等级、职业和生物群..._村民职业对应工作台
如何使用tensorflow 提取特征图 ?》首先模型训练结束后,我们会得到关于【3】【4】检查点的四个文件:.data, .index, .meta, checkpoint;其中.meta是图结构,也就是神经网络的结构,在训练过程中图结构水不不变的,保存一次即可。实现:saver = tf.train.Saver(), saver.save(less, ‘model-name’,w..._tensorflow提取特征
5.24更新:周博通又提示无法识别rss地址了,我已经联系周博通作者了,希望能有解决办法!!51cto的rss源不能用了。单击打开,提示打不开。使用周伯通、sharpreader、博阅等不下于5款知名rss阅读软件,均没发现可以订阅的,都踢死“地址输入不正确”。。。。。唯一可以使用的就是google reader了,支持很好,可惜我不..._51cto rss feed
重载数组下标操作符,使用operator原贴:http://blog.csdn.net/keeplooking2510/article/details/8042057 数组在类的定义中确定好了长度之后,就会限制所要存储的元素的个数,假如我们要存储的元素的个数超过了已确定的数组的长度,那么就会导致数组越界。故最好的办法就是在创建对象的时候才确定要存储元素的个数,即数组的长度_重载数组下标运算符
"Wake me up when it's done."礼物文化有一次给组员分享程序猿该如何去尽力帮助到其他人,如何赢得声誉。在日常开发过程中,我们在实现业务需求的同时,抽象出可复用的模块,提供API供业务层调用。不同的程序猿会设计出不一样的API,好的设计往往是遵循一定原则的。网上比较经典的是Google API Design指南,可以作为一个模板...
问题1、目标机启动盘制作问题之前有通过Uboot Flashboot制作目标启动盘,有的启动不了,有的是直接启动到DOS界面,但结果都不是我们所需要的结果,我们所需要的结果是启动到如下界面。 启动到如下界面的优盘启动盘制作方式是通过matlab制作,制作页面如下:其中boot configuration下的Create boot disk按钮就是制作启动盘的,通过此制作方式我们的优盘_xpc-target搭建
原题链接题目:输入样例:6Hello ? Good to chat with youcan you speak Chinese?Really?Could you show me 5What Is this prime? I,don 't know输出样例:Hello ?AI: hello! Good to chat with youAI: good to chat with youcan you speak Chinese?AI: I can speak_价值一亿的ai核心代码pta测试点
需求:审批流程自定义审批的每个节点可以有多个审核人,有一个失败则视为审批失败审批的过程可以自由前进后退:当发文到达某个节点失败后,会自动被打回到上一个节点.上一个节点可以选择修改后继续提交,或者再打回到上一个节点.整个审批可以看成是三种状态:1.草稿:来自两种情况:1.发起人刚起草审核.2.审核被第一个审核人打回此状态下发起人可自由修改发文_审批流状态
我正在使用第三方Web服务的网站上返回动态内容,并使用JavaScript解析并显示该页面的数据。我们已经在网站上的几个地方使用骨干将数据发布到web服务,所以我想到了试图使用Backbone的路由器来运行基于页面url的特定功能并获取查询,因为我们将查询散列到页面的网址。使用静态HTML文件的主干路由例如:全球站点search.html#查询这是路由器代码,我有这一点:var Router = ..._在静态html页面中使用路由
昨天在Windows server2008R2上安装11.2.0.4的时候,安装到一半,出现错误“启动服务OracleMTSRecoveryService时出现操作系统错误”。参考MOS:OS error in starting service OracleMTSRecoveryService OR System error 14001 has occurred (文档 ID 1471946.1)..._启动服务oraclemtsrecoveryservice
双非大学生应该做什么样的兼职呢?大学里面的兼职各种各样,但是能提高自己的兼职并不多不算很多,因为是双非,所以很多要求高的兼职别人都不会要,大多数人都会被别人当做推广或者韭菜直接收割!一定不要去做推广性质的小代理,那些小代理只是别人推广的工具,你的朋友圈和人脉圈都会被别人利用,别人也有可能因此对你产生不一样的看法,这种兼职没有任何营养可言!接下来我给大家推荐几个有用的兼职,第一个是大家最看不上的,那就是发传单之类的需要自己放低尊严的兼职,很多人会觉得很好笑,为什么我会给大家推荐这样的兼职呢?不是很多博主_http://img04.sogoucdn.com/app/a/100520146/a914d98bc86d9061656c7fe2a0819c97
这几天行激活pycharm pro版会遇到问题,license server的网址都不可用了。包括各个网站的百度云的破解资源链接都被和谐了,发现最近jetbrains对盗版管得严。 首次安装在注册界面选择licence server激活模式 输入http://elporfirio.com:1017/ http://www.imsxm.com/ h..._pyc pro