web开发(七) JSTL标签库
在网上看见一篇不错的文章,写的详细。
以下内容引用那篇博文。转载于《http://www.cnblogs.com/whgk/p/6432786.html》,在此仅供学习参考之用。
一、为什么使用标签?
JSP是用来显示数据的,前面我们在JSP中的HTML中嵌入java代码,与<%%>等混在一起,可读性和可维护性都很差,而且使用java脚本不便于代码重用,要实现比较复杂的显示功能,也不方便,而JSP标签和HTML代码很类似,使用JSP标签显得JSP整洁而干净,可读性好,标签能够重复使用,所以就像我们上面说的,我们慢慢意识到不足,就自然在一步步改进,从使用JSP行为,使用EL,在使用标签,都是为了一个目的,让JSP更加完全,方便,只显示数据,而不嵌入逻辑代码。这个涉及到了分层思想,后面说讲解到。
二、JSTL标签库
JSTL标签库中包括很多种类的标签core、fmt、fn方法库、sql标签库,使用JSTL标签库,需要用taglib指令导入JSTL标签库
core标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
讲解<c:out/>、<c:set/>、<c:remove/>、<c:if test=""/>、<c:choose />、<c:forTokens />、<c:catch /> 、<c:url />、 <c:redirect />、<c:forEach/>、
<c:out/>标签
out :将指定内容输出到浏览器,默认支持el表达式,
<c:out value="" default="" escapeXml />
value:输出的值,可以为EL表达式
default:如果value属性的值不存在,会输出default属性值
excapeXml:如果为true,则会为value中的特殊字符进行转义,默认为true
<c:set/>和<c:remove/>标签
图中只介绍set标签的一种用法,其中var不能接受EL表达式,只能是字符,
<c:set target="" property="" value="" />
target:跟var类似,但是它能够接受EL表达式,可以是一个对象,一个map等,和var进行互补
property:对象中的属性名
value:属性赋值
使用哪种set标签,就看自己的需求了。
<c:if test=""/>标签
if条件语句
<c:choose />标签
<c:forTokens > 标签
将自定义字符串,按照指定字符进行分割,并遍历输出
items:自定义字符串
delims:指定字符
var:遍历的变量名。
<c:catch > 标签
相当于try catch
var:捕捉后的异常对象
<c:forEach/>标签
增强的for循环,
格式:
<c:forEach items="" var="" />
items:需要遍历的对象
var:用于存放遍历的每一项内容,存放在page作用域,只能在循环体中使用
1、items为字符串或字符串数组
为字符串,直接输出,为字符串数组,遍历输出
2、items为list集合
3、items为map集合
4、普通for循环
begin:从1开始
end:到10结束
step:每次加2
var:循环的变量,
<c:url />标签
记得讲session的时候,如果cookie禁用了,那么只能将url进行重写才能让session继续生效,而使用的api是response.encodeURL();就是将SESSIONID当作参数带过来,而url标签的作用就是实现类似功能
<c:url value="" var="" scope="" /> 就讲解三个属性
value:要进行重写的url
var:如果写了该变量,那么就会将其重写后的url存入page作用域中,如果scope没有的话,默认就是page,否则以scope属性值为准,在作用域范围内就可以直接拿着这个变量使用了,如下面所展示的。
scope:作用域范围,默认是page,
访问后点击超链接
没有关闭cookie,所以不会将SESSIONID写入url中 。
<c:redirect />标签
<c:import />标签
类似于JSP的include行为和include指令,JSTL也提供了include功能的标签<c:import/>,不过import标签功能更强大,甚至可以把Internet上的网页包含进来。
<c:import url="http://www.baidu.com" charEncoding="utf-8"/>
fmt标签库
是一些辅助性功能标签,就讲解一个把,用的不多,等用到的时候在去详细学
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
标签只有一个属性,value
<fmt:requestEncoding/>设置编码,
相当于Java中的request.setCharacterEncoding("");
post提交中文参数,使用<fmt:requestEncoding value="utf-8"/>来设置编码,就不会出现中文乱码了。
get提交中文参数,该标签就会失效,除非到TOMCAT的server.xml中,将URLEncoding设置为UTF-8(默认为ISO-8859-1)。
<fmt:setLocale/>显示所有地区的数据格式
等等
fn方法库
提供一些方法,函数,例如字符串查找,截取之类。之所以不叫fn标签库而叫fn方法库,因为与core,fmt标签格式不一样,并且必须在el表达式中使用
格式:fn:methodName()的格式,比如,fn:contains()
contains方法判断是否包含指定的字符串,相当于java里String类的contains方法。
fn:contains(String string1,String string2);
containsIgnoreCase方法,判断是否包含指定字符串,忽略大小写
fn:contains(String string1,String string2)
endsWith方法,判断某字符串是否以指定的参数结尾,
fn:endWith(String string1,String string2);
startsWith方法,判断某字符串是否以指定参数开始
fn:startsWith(String string1,String string2);
escapeXml方法,是否转义字符
fn:escapeXml(source);
indexOf方法,查找字符串在另一个字符串中第一次出现的位置
fn:indexOf(String string1,String string2);
split方法,将字符串以指定参数为界分割成多个字符串形成字符串数组
。。
join方法,与split方法相反,将字符串数组以参数为界连接成字符串
length方法,取字符串,数组,集合的长度
等等
SQL标签库
JSP中直接可以操作数据库,但是大多数时候我们都不会这样用。。
XML标签库
为了方便地处理XML,
三、总结
重点讲解了一下JSTL中的core标签库,其实也就是一些控制流程的标签,没什么思想,只要会用就行了,以后忘记了就回过头来查查看,最重要的是思想,这些死东西记录一下就行了。
web开发(七) JSTL标签库的更多相关文章
- Java Web(七) JSTL标签库
在之前我们学过在JSP页面上为了不使用脚本,所以我们有了JSP内置的行为.行为只能提供一小部分的功能,大多数的时候还是会用java脚本,接着就使用了EL表达式,基本上EL表达式看似能满足我们的要求,它 ...
- JavaWeb总结(七)—JSTL标签库
一.JSTL标签库介绍 JSTL标签库的使用时为了弥补HTML标签的不足,规范自定义标签的使用而诞生的.使用JSTL标签的目的是不希望在JSP中出现Java逻辑代码. 二.JSTL标签库的分类 1.核 ...
- java基础开发—jstl标签库
在DRP项目中.接触到了JSTL标签库. 在未使用Jstl之前,我们使用JSP脚本实现一些声明或是表达式任务,做一些业务相关操作时,须要在页面中嵌入大量的java代码.在DRP项目开发前期.使用jsp ...
- Java Web程序设计笔记 • 【第10章 JSTL标签库】
全部章节 >>>> 本章目录 10.1 JSTL 概述 10.1.1 JSTL 简介 10.1.1 JSTL 使用 10.1.2 实践练习 10.2 核心标签库 10.2. ...
- JSTL 标签库<转>
http://elf8848.iteye.com/blog/245559 JSTL标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可 ...
- JSTL标签库之核心标签
一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...
- 自定义jstl标签库
开发环境:Spring+SpringMVC +Maven +Mybatis JSTL 标签库的配置: 导入对应的 jstl.jar 和 standard.jar ,我使用的配置如下: <prop ...
- jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门
一.mvc模式介绍 下图是常用的mvc分层模式: 项目中的包命名规则,一般如下: com.amos.domain 封装JavaBean,一般我喜欢用model命名这个包com.amos.dao 封装d ...
- jstl标签库基础教程及其使用代码
概述 在 JSP 页面中,使用标签库代替传统的 Java 片段语言来实现页面的显示逻辑已经不是新技术了,然而,由自定义标签很容易造成重复定义和非标准的实现.鉴于此,出现了 JSTL ( JSP Sta ...
随机推荐
- 4.(基础)tornado应用安全与认证
这一节我们介绍应用安全与认证,其实中间省略了一个数据库.对于tornado来说,读取数据库的数据,性能的瓶颈还是在数据库上面.关于数据库,我在<>中介绍了sqlalchemy,这是一个工业 ...
- 关于Linux系统下基于Tomcat部署和升级war包的详细过程
1.首先Linux先安装java,Tomcat 中间件规范要求: 1) 软件必须下载到/services/download_soft_v --------(用xftp上传 ...
- ASP.NET c# 实验日记(1)
第一次写有一些紧张,以前学过html,c语言,vb,c#等语言.也自己翻过有关javascript的书,现在的目的是怎么把学习经验写的更具结构化和条理化,大佬勿喷. 在一个集成开发平台里第一步就是新建 ...
- php保留两位小数并且四舍五入 保留两位小数并且不四舍五入
php保留两位小数并且四舍五入 $num = 5566.56831; echo sprintf("%.2f", $num); php保留两位小数并且不四舍五入 $num = 556 ...
- JS 深拷贝/合并
var mix = function(r, s, ov) { if (!s || !r) return r; if (ov === undefined) ov = true; for (var p i ...
- 19.8.8 flutter 学习之创建第一个可变的Widget
创建一个很简单的可变的Widget 效果就是点击字的时候会变化 完整代码: class CarPage extends StatefulWidget { @override _CarState cre ...
- Class.forName()方法抛出异常
在测试static块时间,想要调用Class.forName()来加载类,需要注意此方法要求必须要抛出异常,否则报错. 但在之后却一直抛出java.lang.ClassNotFoundExceptio ...
- 《Python 3标准库》
在本书中,你会看到用来处理文本.数据类型.算法.数学计算.文件系统.网络通信.Internet.XML.Email.加密.并发性.运行时和语言服务等各个方面的实用代码和解决方案.在内容安排上,每一节都 ...
- C#写入文件内容时提示:文件正被另一个人或程序使用
创建文件后未将文件关闭 string sTransLogFile = sTransLogPath + "\\" + DateTime.Now.ToString("yyyy ...
- css之页面透明
能使元素变的透明的方法有: 1.Opacity 2.RGBA opacity会使后代元素都透明,而RGBA不会!