欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSP——JSTL核心标签(1)

程序员文章站 2022-03-23 19:46:56
1.jstl介绍 standard tag libaray,即jsp标准标签库。 jstl是由apache的jakarta小组开发的,属于开放源代码的标签库,jstl至少要运行在支持jsp1.2和...

1.jstl介绍

standard tag libaray,即jsp标准标签库。
jstl是由apache的jakarta小组开发的,属于开放源代码的标签库,jstl至少要运行在支持jsp1.2和servlet2.3规范的容器上。

我们为什么需要jstl标签呢?

  • (1)在应用程序服务器之间提供统一的接口,从而提供了web应用在不同服务器的移植
  • (2)简化jsp与web应用程序的开发
  • (3)减少jsp中java片段的代码,可以达到在jsp页面中没有任何java代码,代码更加简洁
  • (4)提高jsp开发速度,缩短开发周期

在这里要知道的是,使用jstl标签,必须先在项目中引入它的标签库,在myeclipse中新建项目时它默认会直接引入jstl标签库,如下图,我引入的是jstl 1.2.1版本。

JSP——JSTL核心标签(1)

2.核心标签

jstl的核心标签,也就是c标签,它是最常用的jstl标签。在jsp文件中使用核心标签,需要在文件开头使用tablib指令引入核心标签库,语法如下:

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

之后就可以使用c标签了。

2.1一般用途的标签

在jstl中,最常用的核心标签有:

2.1.1 标签

用于把计算的结果输出到jspwriter对象。
(1)简单地输出一个’hello,world!’.


这句话就相当于在jsp写如下java片段:

<%
    out.println("hello,world!");
%>

(2)输出request域对象中的值
假设我们在request域对象中放入下述属性:

<%
    request.setattribute("abc","request");
%>

这时我们可以这样输出:


其实这里用到了jsp的el表达式。关于这个知识点,后续再说。

(3)request,session,application,pagecontext域对象的优先顺序
假如,我们在request,session,application,pagecontext域对象中都放入了key=abc的属性,那么输出是怎么样的,比如,我们这么写:

<%
request.setattribute("abc", "request");
session.setattribute("abc", "session");
application.setattribute("abc", "application");
pagecontext.setattribute("abc", "pagecontext");
%>

这时候我们再使用标签输出,会输出什么呢?


答案是输出pagecontext,它查找的优先顺序是:pagecontext > request > session > application

(4)c:out标签的其他属性

request中放如下属性:

<%
request.setattribute("url","baidu");
%>

jsp页面做如下输出:


它会在页面输出一个超链接,而不是一串文本。
这里default属性用于指定域对象中没有值时的默认值。
escapexml属性用于指定是否按照html样式输出,默认是true,代表以文本形式输出。

(5)输出javabean的属性

比如,我们的request域对象中放入了一个user对象,如下:

<%
user user = new user();
user.setname("gavin");
user.setage(12);
request.setattribute("u", user);    
%>

现在我们要输出u的name和age属性:
写法如下:

 
  

再一次用到了el表达式这里可以使用u.name和u.age属性是因为user类中有getname和getage方法

2.1.2 标签

这个标签用于在某个范围(page,request,session,application等)中设置某个值
用法如下:


scope属性指定将该值放在哪个域对象中。

这句话等价于:

 request.setattribute("abc","china,北京");

然后我们将这个属性值输出:


2.1.3 标签

这个标签用于删除某个变量或者属性,比如我们要删除request对象中名字为’a’的属性:


2.1.4 标签

这个标签用于捕获嵌套在它内部的标签抛出的异常


    <%
        int i=8/0;
     %>

2.2 条件标签

2.2.1 标签

该标签用于进行条件判断,如果它的test属性为true,那么就去处理它的body。
(1)判断一个字符串
request域对象中放入:

request.setattribute("a", "hello");

判断如果a为’hello’则输出’ok!’,否则就输出’no!’,如下:


    ok!
 
 
    no!
 

要注意的是,这里没有if-else多分支语句,所以只能使用两个if语句去判断。

(2)判断一个javabean对象的属性

request域对象中放如下user对象:

<%          
user user = new user();
user.setage(28);
request.setattribute("u", user);
%>

判断u的年龄:


    user的年龄大于27
 

2.2.2 标签

【1】用于条件的选择,它和一起使用。
【2】它代表了的一个条件分支,使用它的限制条件:

(1)必须以作为它的父标签 (2)必须在之前出现

【3】代表了的最后一个分支,使用它的限制条件:

(1)必须以作为它的父标签 (2)必须是的最后分支出现

其实它类似于javase中的switch-case-default语句,看下述例子:

<% user user = new user(); user.setname("gavin"); user.setage(22); request.setattribute("u",user); %>
 用户的年龄小于10岁 用户的年龄不小于10岁,但小于20岁 用户的年龄大于20岁