首页 > 编程语言 >Java for Web学习笔记(二六):JSTL(2)Core Tag(上)

Java for Web学习笔记(二六):JSTL(2)Core Tag(上)

时间:2023-04-09 13:07:06浏览次数:37  
标签:lang Web Java Core value Sample scoped var 链接


可以在JSP中替代Java代码的几乎所有功能,包括条件编程,循环,迭代和内容输出。taglib的directive如下:



<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>



<c:out>

Attributes

Name

Required

Request-time

Type

Description

value

true

true

java.lang.String

Expression to be evaluated.

default

false

true

java.lang.String

Default value if the resulting value is null.

escapeXml

false

true

java.lang.String

Determines whether characters <,>,&,'," in the resulting string should be converted to their corresponding character entity codes. Default value is true.

上表是从文档http://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/中摘出,对接口有详细的描述。c:out中的value通常是EL表达式,注意到escapeXML的缺省值为true,也就是<c:out value="${someVariable}"/>相当于${fn:escapeXml(someVariable)}。

value和default值经常采用EL方式表达。对于default值,另一种书写方式如下。



<c:out value="${someVariable}">default value</c:out>



我们也可以采用较为复杂的HTML tag,JavaScript,以及jsp的语句进行描述。如果我们不给出value值(null),那么显示的就是这里面的default value。

一般来讲value给的是String,如果给的是java.io.Reader,将从Reader中读取并给出。

<c:url>

Attributes

Name

Required

Request-time

Type

Description

var

false

false

java.lang.String

Name of the exported scoped variable for the processed url. The type of the scoped variable is String.

scope

false

false

java.lang.String

Scope for var.

value

false

true

java.lang.String

URL to be processed.

context

false

true

java.lang.String

Name of the context when specifying a relative URL resource that belongs to a foreign context.

下面是几个例子:

Sample 1:静态链接



<c:url value="http://www.example.net/content/news/today.html" />



Sample 2: Sample1是个静态的链接,没有实际意义,但是对于动态链接,确是非常好用。



<c:url value="http://www.example.net/content/news/today.jsp">
    <c:param name="story" value="${storyId}" />
    <c:param name="seo" value="${seoString}" />
</c:url>



Sample 3:对于参数story,在生成链接的时候自动进行转换,转换为story=STORY+BOOK,这就相当方便了。



<a href="<c:url value="/test.jsp">
    <c:param name="story"value="STORY BOOK"/>
    <c:param name="content"value="${content}"/>
</c:url>">Hello,world</a>

       Sample 4:一般而言,web app在本app中流转,但是有时链接要指向执行其他的web app(即其他的上下文),可以通过context参数。


<a href="<c:url value="/item.jsp?itemId=15" context="/store"/>">Hello,world</a>



链接为:http://localhost:8080/store/item.jsp?itemId=15。

Sample 5:参数var



<c:url value="/test.jsp?action=home" var="homepageUrl" />
<a href="${homepageUrl}">Home</a>



如果一个link多次使用,不需要每次进行构造,可以存放在var中,缺省是pagescope,即作为Attribute存放在pageContext中,如果要存放在request,session或者appliction,通过scope参数,例如



<c:url value="/index.jsp" var="homepageUrl" scope="request"/>



有一点需要提醒,在测试中,如果使用var的c:url要封装在<a href=“”>中,否则会失效,避免这样做。

<c:if>

Attributes

Name

Required

Request-time

Type

Description

test

true

true

boolean

The test condition that determines whether or not the body content should be processed.

var

false

false

java.lang.String

Name of the exported scoped variable for the resulting value of the test condition. The type of the scoped variable is Boolean.

scope

false

false

java.lang.String

Scope for var.

这是条件控制,例子如下:



<c:if test="${something == somethingElse}">
    execute only if test is true
</c:if>



var和scope参数和<c:url>中一样,可以存放test的值,用于以后的处理。最常用的情况是很多地方都要进行相同的判断,可以先将判断的值存在var中,例子如下。



<c:if test="${someComplexExpressionIsTrue}" var="itWasTrue" />
...

<c:if test="${itWasTrue}">
    do something
</c:if>
...

<c:if test="${itWasTrue}">
    do something else
</c:if>





标签:lang,Web,Java,Core,value,Sample,scoped,var,链接
From: https://blog.51cto.com/u_9877302/6178764

相关文章

  • Java for Web学习笔记(三):Servlet(1)Maven
    什么是Maven在http://maven.apache.org/中对Mavent进行介绍,可以:一、发布project信息二、管理Jar包三、提供uniformbuildsystem,使用POM(projectobjectmodel)如果我们使用Eclipse是最新的Mars版本,Maven已经集成进来,所以不需要进行额外的配置,当然,如果我们需要自行安装一个特定位......
  • java-信息安全(二十)国密算法 SM1,SM2,SM3,SM4
    一、概述国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。目前主要使用公开的SM2、SM3、SM4三类算法,分别是非对称算法、哈希算法和对称算法。SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进......
  • java基础-序列化和拷贝
    1.序列化1.1.定义如果我们需要持久化Java对象,或者在⽹络传输Java对象,这些场景都需要⽤到序列化,简单来说序列化就是将数据结构或对象转换成⼆进制字节流的过程,反序列化就是将在序列化过程中所⽣成的⼆进制字节流转换成数据结构或者对象的过程对于Java这种⾯向对象编程语⾔来说,......
  • Java生成PDF几种方式
    ##1、itextPDF直接填充<!--PDF工具类--><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency>......
  • java基础-代理
    1.代理简介2.静态代理3.动态代理3.1.jdk使用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理,JDK创建代理对象效率较高,但是执行效率较低使用流程:实现InvocationHandler接口,重写invoke(),使用Proxy.newProxyInstance()产生代理对象,被代理的对象......
  • VisionMobile:移动平台生态系统冲突报告(十四)Chapter C:WebOS
    Palm在2009年1月的国际消费电子展宣布WebOS智能手机操作系统。第一款设备PalmPre在2009年6月由Sprint运营商在美国推出。Palm在开发移动和便携设备方面有很长的历史,最早在1996年推出基于PalmOs的经典PalmPilotPDA。随后,公司在Treo品牌下推出一系列成功的PalmOS智能手机。随着......
  • 剑指offer05(Java)-替换空格(简单)
    题目:请实现一个函数,把字符串s中的每个空格替换成"%20"。 示例1:输入:s="Wearehappy."输出:"We%20are%20happy." 限制:0<=s的长度<=10000来源:力扣(LeetCode)链接:https://leetcode.cn/problems/ti-huan-kong-ge-lcof著作权归领扣网络所有。商业转载请联系官方授权,......
  • java基础-反射
    1.反射定义反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法,并且对于任意一个对象,都能够调用它的任意一个方法,这种动态获取信息以及动态调用对象方法的功能称为Java反射机制动态语言定义:动态语言是指程序在运行时可以改变其结构,新的函数可以引进,已有的......
  • java基础知识合集-io
    1.IO简介2.IO分类2.1.流分类按照流的流向分,可以分为输入流和输出流按照操作单元划分,可以划分为字节流和字符流按照流的角色划分为节点流和处理流JavalO流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在紧密的联系,JavalO流的40多个类都是从如下4个抽......
  • 开源.NetCore通用工具库Xmtool使用连载 - 加密解密篇
    【Github源码】《上一篇》详细介绍了Xmtool工具库中的正则表达式类库,今天我们继续为大家介绍其中的加密解密类库。在开发过程中我们经常会遇到需要对数据进行加密和解密的需求,例如密码的加密、接口传输数据的加密等;当前类库中只封装了Base64、AES两种加密解密方法,因为C#提供了几......