java将xml中的标签名称转为小写_深入学习Java Web(七): JSTL标签库

本文转自与博客园一杯凉茶的博客.

在之前我们学过在JSP页面上为了不使用脚本,所以我们有了JSP内置的行为、行为只能提供一小部分的功能,大多数的时候还是会用java脚本,接着就使用了EL表达式,基本上EL表达式看似能满足我们的要求,它能够获取各种对象,各种值,并且还不会抛出NullPointerException之类的错误,但是EL表达式功能还是有限,例如不能遍历集合等,因此为了完善JSP,让其完全不使用java代码,就有了jstl标签库,使用jstl和EL的配合使用,基本上可以实现所有的功能,显示数据,遍历数据等。

一、为什么使用标签?

JSP是用来显示数据的,前面我们在JSP中的HTML中嵌入java代码,与等混在一起,可读性和可维护性都很差,而且使用java脚本不便于代码重用,要实现比较复杂的显示功能,也不方便,而JSP标签和HTML代码很类似,使用JSP标签显得JSP整洁而干净,可读性好,标签能够重复使用,所以就像我们上面说的,我们慢慢意识到不足,就自然在一步步改进,从使用JSP行为,使用EL,在使用标签,都是为了一个目的,让JSP更加完全,方便,只显示数据,而不嵌入逻辑代码。这个涉及到了分层思想,后面说讲解到。

二、JSTL标签库

JSTL标签库中包括很多种类的标签core、fmt、fn方法库、sql标签库,使用JSTL标签库,需要用taglib指令导入JSTL标签库

core标签库

讲解、、、、、、 、、 、、

标签

out :将指定内容输出到浏览器,默认支持el表达式,

value:输出的值,可以为EL表达式

default:如果value属性的值不存在,会输出default属性值

excapeXml:如果为true,则会为value中的特殊字符进行转义,默认为true

2f21311cf57b9d50befaadc1a30f0cb1.png
a81a9948327eef92d3e96236c91f3fd9.png

和标签

3865182d1a5c81f44bc0191a7a21f38b.png

图中只介绍set标签的一种用法,其中var不能接受EL表达式,只能是字符,

target:跟var类似,但是它能够接受EL表达式,可以是一个对象,一个map等,和var进行互补

property:对象中的属性名

value:属性赋值

762478af8981cb1a81629fe04bc2ab81.png

使用哪种set标签,就看自己的需求了。

标签

if条件语句

28a0dc7b52e382548e734535049ce845.png

标签

8343186395a5aa4a5a9a13cda21fcd62.png

标签

将自定义字符串,按照指定字符进行分割,并遍历输出

items:自定义字符串

delims:指定字符

var:遍历的变量名。

d4ede809d2593a573011cb04011bfb8d.png

标签

相当于try catch

609d1db53fb2e003e2e9f6e52709bf03.png
67dbf3dc00e1f77bac311b10d83b2f76.png

var:捕捉后的异常对象

标签

增强的for循环,

格式:

items:需要遍历的对象

var:用于存放遍历的每一项内容,存放在page作用域,只能在循环体中使用

1、items为字符串或字符串数组

为字符串,直接输出,为字符串数组,遍历输出

bac3df69cb584ea9a5493c8864a82a85.png
f59545ce8ebe8dc080e26444921b2f11.png

2、items为list集合

aa70607d2d562b57fc9af543c0f2375f.png

3、items为map集合

dbf37e30542d2752a4070ee77e3bc49e.png

4、普通for循环

720dc70d494add06326813976b3c0516.png

begin:从1开始

end:到10结束

step:每次加2

var:循环的变量,

标签

记得讲session的时候,如果cookie禁用了,那么只能将url进行重写才能让session继续生效,而使用的api是response.encodeURL();就是将SESSIONID当作参数带过来,而url标签的作用就是实现类似功能

就讲解三个属性

value:要进行重写的url

var:如果写了该变量,那么就会将其重写后的url存入page作用域中,如果scope没有的话,默认就是page,否则以scope属性值为准,在作用域范围内就可以直接拿着这个变量使用了,如下面所展示的。

scope:作用域范围,默认是page,

49dc9bb5a959269883b87f4684bdf550.png

访问后点击超链接

没有关闭cookie,所以不会将SESSIONID写入url中 。

a0416bbca992de1e1441ad8c3a2619fd.png

标签

0a8a90d6c3c017bbc75706b3da44f01e.png

标签

类似于JSP的include行为和include指令,JSTL也提供了include功能的标签,不过import标签功能更强大,甚至可以把Internet上的网页包含进来。

9a70907ae78a19cc1ebd3fdba6c18d44.png
ea678fdf34c2df8727f85a82a7756596.png

fmt标签库

是一些辅助性功能标签,就讲解一个把,用的不多,等用到的时候在去详细学

标签只有一个属性,value

设置编码,

相当于Java中的request.setCharacterEncoding("");

post提交中文参数,使用来设置编码,就不会出现中文乱码了。

get提交中文参数,该标签就会失效,除非到TOMCAT的server.xml中,将URLEncoding设置为UTF-8(默认为ISO-8859-1)。

显示所有地区的数据格式等等

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标签库,其实也就是一些控制流程的标签,没什么思想,只要会用就行了,以后忘记了就回过头来查查看,最重要的是思想,这些死东西记录一下就行了。

上一篇:深入学习Java Web(六) :EL表达式详解

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

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

相关文章

python中*args和**args的不同

上一段代码,大家感受一下 def test_param(*args): print(args) def test_param2(**args): print(args) test_param(test1,test2) >>>(test1,test2) test_param2(p1test1,p2test2) >>>{p1:test1, p2:test2} python提供了两种特别的方法来定义函数的…

halcon模板匹配学习(二) 准备模板

如下,我们将介绍匹配的第一个操作:准备模板 初始时刻,我们准备好参考图像,并对其做一定的处理,然后我们需要从参考图像中导出模板,也就是将参考图像裁剪成所谓的模板图像。获取模板图像可以通过设置ROI来完…

揭秘继承技术之虚函数

虚函数 调用虚函数时函数行为将根据对象所属类的不同而变化。 父类指针或引用指向子类对象时&#xff0c;可访问子类重写方法&#xff08; virtual函数&#xff09;但无法访问在父类中没有定义的子类方法和数据成员。 #include <iostream>using namespace std;class Supe…

java中GET方式提交和POST方式提交

java中GET方式提交的示例&#xff1a; /*** 获取关注列表;* return*/SuppressWarnings("unchecked")public static ArrayList<String> getUserList() {StringBuffer bufferRes new StringBuffer();ArrayList<String> users null;try {URL realUrl new…

基于HALCON的模板匹配方法总结

很早就想总结一下前段时间学习HALCON的心得&#xff0c;但由于其他的事情总是抽不出时间。去年有过一段时间的集中学习&#xff0c;做了许多的练习和实验&#xff0c;并对基于HDevelop的形状匹配算法的参数优化进行了研究&#xff0c;写了一篇《基于HDevelop的形状匹配算法参数…

js 数组移除_2020前端面试--常见的js面试题

&#xff08;答案持续更新...&#xff09; 1.简述同步和异步的区别js是一门单线程语言&#xff0c;所谓"单线程"&#xff0c;就是指一次只能完成一件任务。如果有多个任务&#xff0c;就必须排队&#xff0c;前面一个任务完成&#xff0c;再执行后面一个任务&#xf…

spring-自动加载配置文件\使用属性文件注入

在上一篇jsf环境搭建的基础上 , 加入spring框架 , 先看下目录结构 src/main/resources 这个source folder 放置web项目所需的主要配置,打包时,会自动打包到WEB-INF下 首先看下pom.xml,需要引入一些依赖项: 1 <project xmlns"http://maven.apache.org/POM/4.0.0" x…

pygame碰撞检测

最近在学Pygame,花一段时间做了一个异常简陋版的"打砖块". 这次重点说一下困扰我比较长时间的碰撞检测(个人太菜..). 按照网上教程比较普遍的方法(也可能是我没看见别的),碰撞检测依次计算移动物体与被碰撞物体各个边之间坐标是否相交.例如下列代码,检测小球与窗口的…

2017-5-4 进程

进程&#xff1a;一个应用程序就是一个进程开启某个进程Process.Start("文件缩写名");通过绝对路径开启某个进程Process p new Process();p.StartInfo new ProcessStartInfo("要打开的程序绝对路径");p.Start(); 获取全部开启的进程&#xff1a;Process.…

很有用的cv牛人的网址和主要贡献

CV人物1&#xff1a;Jianbo Shi史建波毕业于UC Berkeley&#xff0c;导师是Jitendra Malik。其最有影响力的研究成果&#xff1a;图像分割。其于2000年在PAMI上多人合作发表"Noramlized cuts and image segmentation"。这是图像分割领域内最经典的算法。主页&#xf…

c++分治法求最大最小值实现_程序员:算法导论,分治法、归并排序,伪代码和Java实现...

分治法我们首先先介绍分治法。分治法的思想&#xff1a;将原问题分解为几个规模较小但类似于原问题的子问题&#xff0c;递归地求解这些子问题&#xff0c;然后在合并这些子问题的解来解决原问题的解。还是拿扑克牌举例子&#xff0c;假设桌上有两堆牌面朝上的牌(牌面朝上&…

菜根谭#82

风来疏竹&#xff0c;风过而竹不留声&#xff1b;雁度寒潭&#xff0c;雁去而潭不留影&#xff1b;故君子事来而心始现&#xff0c;事去而心随空。 转载于:https://www.cnblogs.com/star4knight/p/3604403.html

解读ASP.NET 5 MVC6系列(9):日志框架

解读ASP.NET 5 & MVC6系列&#xff08;9&#xff09;&#xff1a;日志框架 原文:解读ASP.NET 5 & MVC6系列&#xff08;9&#xff09;&#xff1a;日志框架框架介绍 在之前的.NET中&#xff0c;微软还没有提供过像样的日志框架&#xff0c;目前能用的一些框架比如Log4N…

2017第18周四

继续加班中&#xff0c;很多事不如预期。时间花费很多但效果不成比例。越忙落下的事越多&#xff0c;有时候还需要让自己静下来想想&#xff0c;到底有什么是重要的。集中精力放在重要的哪些事&#xff0c;尽自己最大努力即可&#xff0c;尽最大努力即使没有达到也可以没有遗憾…

halcon相关的链接

论坛、培训 halcon学习网&#xff1a;http://www.ihalcon.com/鸟叔机器视觉&#xff1a;http://bbs.szvbt.com/forum.php 博客 韩兆新的博客园majunfuLife and Codingzhaojun的博客風韻無聲骑蚂蚁上高速的博客小马_xiaoLV2小新识图程序园-程序员的世界章柯渊的博客 注&…

[转]Java8-本地缓存

这里我将会给大家演示用ConcurrentHashMap类和lambda表达式实现一个本地缓存。因为Map有一个新的方法可以在key为Null的时候自动计算一个新的value值。非常完美的实现cache。来看下代码&#xff1a; public static void main(String[] args) {for (int i 0; i < 10; i)Syst…

python opencv图像处理程序_Python-OpenCV学习(四):基本图像处理

转载请注明出处&#xff1a;danscarlett的博客园 参考资料&#xff1a; 目录&#xff1a; 读取 imread 显示 imshow 存储 imwrite 缩放 resize 加边框 copyMakeBorder 裁剪 img[x_start:x_end,y_start:y_end] 1.图像读取&#xff1a; cv2.imread(fileName,flagsNone) 函数功能&…

Java进程占用CPU资源过多分析

问题描述&#xff1a; 生产环境下的某台tomcat7服务器&#xff0c;在刚发布时的时候一切都很正常&#xff0c;在运行一段时间后就出现CPU占用很高的问题&#xff0c;基本上是负载一天比一天高。 问题分析&#xff1a; 1&#xff0c;程序属于CPU密集型&#xff0c;和开发沟通过&…

分针网——怎么轻松学习JavaScript

js给初学者的印象总是那么的“杂而乱”&#xff0c;相信很多初学者都在找轻松学习js的途径。我试着总结自己学习多年js的经验&#xff0c;希望能给后来的学习者探索出一条“轻松学习js之路”。js给人那种感觉的原因多半是因为它如下的特点&#xff1a;A&#xff1a;本身知识很抽…

MATLAB中floor、round、ceil、fix区别

Matlab取整函数有: fix, floor, ceil, round.具体应用方法如下&#xff1a;fix朝零方向取整&#xff0c;如fix(-1.3)-1; fix(1.3)1;floor&#xff0c;顾名思义&#xff0c;就是地板&#xff0c;所以是取比它小的整数&#xff0c;即朝负无穷方向取整&#xff0c;如floor(-1.3)-2…