jstl初识之旅:Core标签中的一般用途标签
来源:互联网 发布:淘宝学生春秋外套 编辑:程序博客网 时间:2024/04/30 07:52
Core标签中的一般用途标签及其作用:
<c:out> 网页中输出变量,表达式的值
<c:set> 设置命名变量值,如果命名变量为JavaBean 还能设定JavaBean的属性值;如果命名变量为Map,还能设定Map中key值对应
的value
<c:remove> 命名变量移除
<c:catch> 捕获异常,并把异常对象放在指定的命名变量中
<c:out>标签:
<c:out>标签能够把一个表达式的结果打印到网页上,这个表达式可以为基于"<%= 和%>"形式的传统Java表达式,也可以是EL表达式。<c:out>标签的基本语法如下:
- <c:out value="表达式" />
<c:out>标签的value属性设定表达式。例如:
- <c:out value="${param.username}" />
以上代码打印username请求参数,如果username参数的值为null,就打印空字符串。以上代码的作用与单纯的EL表达式${param.username}等价。
<c:out>标签还可以采用以下两种方式设定默认值,如果表达式的值为null,<c:out>标签就打印默认值:
- <%--方式一:用default属性设定默认值--%>
- <c:out value="表达式" default="默认值" />
- <%--方式二:用标签主体设定默认值--%>
- <c:out value="表达式" >
- 默认值
- </c:out>
例如例程15-1的out.jsp中的两个<c:out>标签的作用是等价的,它们的作用都是打印username请求参数,如果username参数的值为null,就打印"Unknown"。
例程15-1 out.jsp
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
- <%--第1个out标签--%>
- <c:out value="${param.username}" default="unknown" />
-
- <%--第2个out标签--%>
- <c:out value="${param.username}">
- unknown
- </c:out>
通过浏览器访问http://localhost:8080/helloapp/out.jsp,打印结果为"unknown unknown"。如果通过浏览器访问http://localhost:8080/helloapp/out.jsp?username=Tom,那么打印结果为"Tom Tom"。
<c:set>标签
<c:set>标签具有以下作用:
为String类型的命名变量设定值。
如果命名变量为JavaBean,那么为这个JavaBean对象的特定属性设定值。
如果命名变量为Map类型,那么为这Map对象中的特定Key设定值。
(1)为String类型的命名变量设定值
<c:set>标签在为特定范围内的String类型的命名变量设定值时,采用以下语法:
- <c:set var="命名变量的名字" value="表达式" scope="{page|request|session|
- application}" />
以上scope属性指定范围的名字,可选值包括page、request、session和application, scope属性的默认值为page(页面范围)。
例如以下代码在会话范围内设置了一个user命名变量,它的值为"Tom",表达式${sessionScope.user}的打印结果为"Tom":
- <c:set var="user" value="Tom" scope="session" />
- ${sessionScope.user}
以上代码中的<c:set>标签与以下Java程序片段的作用是等价的:
- <%
- pageContext.setAttribute("user","Tom",PageContext.SESSION_SCOPE);
- %>
再例如以下代码在页面范围内设置了一个user属性,它的值为username请求参数的值:
- <c:set var="user" value="${param.username}" />
<c:set>标签的value属性用于设定命名变量的值,此外,也可以用标签主体来设定值。例如以下两段代码是等价的,它们都在会话范围内设置了一个user命名变量,该变量的值为"Tom":
- <%--代码1--%>
- <c:set var="user" value="Tom" scope="session" />
- <%--代码2--%>
- <c:set var="user" scope="session" >
- Tom
- </c:set>
(2)为特定范围内的JavaBean对象的属性设定属性值
<c:set>标签在为特定范围内的JavaBean对象的属性设定属性值时,采用以下语法:
- <c:set target="代表JavaBean的命名变量" property=
"JavaBean的属性名" value="表达式" />
例如以下代码先通过<jsp:useBean>标签定义了一个Web应用范围内的counterBean命名变量,接下来通过<c:set>标签把这个counterBean命名变量的count属性设为2,${counterBean.count}的打印结果为2:
- <%@ page import="mypack.CounterBean" %>
- <jsp:useBean id="counterBean" scope="application"
class="mypack.CounterBean" />- <c:set target="${counterBean}" property="count" value="2" />
- ${counterBean.count}
以上代码中的<c:set>标签与以下Java程序片段的作用是等价的:
- <%
- CounterBean counterBean=(CounterBean)pageContext.findAttribute("counterBean");
- counterBean.setCount(2);
- %>
(3)为特定范围内的Map对象的Key设定值
<c:set>标签在为特定范围内的Map对象的Key设定值时,采用以下语法:
- <c:set target="代表Map对象的命名变量" property="key的名字" value="表达式" />
例如以下代码先通过<jsp:useBean>标签定义了一个请求范围内的HashMap类型的weeks命名变量,再通过两个<c:set>标签向这个weeks命名变量中加入两个元素:
- <%@ page import="java.util.HashMap" %>
- <jsp:useBean id="weeks" scope="request" class="java.util.HashMap" />
- <c:set target="${weeks}" property="1" value="Monday" />
- <c:set target="${weeks}" property="2" value="Tuesday" />
- 以上代码中的第一个<c:set>标签与以下Java程序片段的作用是等价的:
- <%
- Map weeks=(Map)pageContext.findAttribute("weeks");
- weeks.put("1","Monday");
%> <c:remove>标签
<c:remove>标签用于删除特定范围内的命名变量,它的语法为:
- <c:remove var="命名变量的名字" scope="{page|request|session|application}" />
以上scope属性指定范围,可选值包括page、request、session和application。如果没有设定scope属性,那么会从所有范围内删除var指定的命名变量。
例如以下代码会删除会话范围内的user命名变量:
- <c:remove var="user" scope="session" />
以上代码中的<c:remove>标签与以下Java程序片段的作用是等价的:
- <%
- pageContext.removeAttribute("user",PageContext.SESSION_SCOPE);
- %>
以下<c:remove>标签没有设置scope属性,因此会删除所有范围内的user命名变量:
- <c:remove var="user" />
<c:catch>标签<c:catch>标签用于捕获标签主体中可能出现的异常,并且它把异常对象作为命名变量保存在页面范围内。<c:catch>标签的语法为:
- <c:catch var="代表异常对象的命名变量的名字" />
例如以下代码中的<c:catch>标签的主体内容为Java程序片段:
- <c:catch var="ex">
- <%
- int a=11;
- int b=0;
- int c=a/b; //抛出异常
- %>
- </c:catch>
- <c:out value="${ex.message}" default="No exception" />
以上<c:catch>标签等价于以下Java程序片段:
- <%
- try{
- int a=11;
- int b=0;
- int c=a/b;
- }catch(Exception e){
- //把异常对象存放在页面范围内
- pageContext.setAttribute("ex", e, PageContext.PAGE_SCOPE);
- }
- %>
条件标签条件标签能够实现Java语言中的if语句及if-else语句的功能,它包括以下几种。
<c:if>:用于实现Java语言中的if语句的功能。
<c:choose>、<c:when>和<c:otherwise>:用于实现Java语言中的if-else语句的功能。
15.4.1 <c:if>标签
<c:if>标签用于实现Java语言中的if语句的功能,它的语法为:
- <c:if test="逻辑表达式"
- var="代表逻辑表达式的值的命名变量的名字"
- scope="{page|request|session|application}" / >
<c:if>标签会把逻辑表达式的值存放在var属性指定的命名变量中,scope属性则指定命名变量的范围,scope属性的默认值是page(页面范围)。
例如以下<c:if>标签先判断username请求参数的值是否为Tom,然后把判断结果作为result命名变量存放在请求范围内:
- <c:if test="${param.username=='Tom'}" var="result" scope="request" />
- ${result}
以上<c:if>标签等价于以下Java程序片段:
- <%
- String username=request.getParameter("username");
- if(username!=null && username.equals("Tom"))
- request.setAttribute("result",true);
- else
- request.setAttribute("result",false);
- %>
<c:if>标签还可以包含标签主体,只有当逻辑表达式的值为true时,才会执行标签主体。例如:
- <c:if test="${param.save=='user'}" >
- Saving user
- <c:set var="user" value="Tom" />
- </c:if>
以上<c:if>标签等价于以下Java程序片段:
- <%
- String save=request.getParameter("save");
- if(save!=null && save.equals("user")){
- //对应<c:if>标签的主体
- out.print("Saving user")
- pageContext.setAttribute("user","Tom");
- }
- %>
<c:choose>、<c:when>和<c:otherwise>标签<c:choose>、<c:when>和<c:otherwise>在一起连用,可以实现Java语言中的if-else语句的功能。例如以下代码根据username请求参数的值来打印不同的结果:
- <c:choose>
- <c:when test="${empty param.username}">
- Nnknown user.
- </c:when>
- <c:when test="${param.username=='Tom'}">
- ${param.username} is manager.
- </c:when>
- <c:otherwise>
- ${param.username} is employee.
- </c:otherwise>
- </c:choose>
以上标签等价于以下Java程序片段:
- <%
- String username=request.getParameter("username");
- if(username==null){
- //对应第一个<c:when>标签的主体
- out.print("Nnknown user.");
- }else if(username.equals("Tom")){
- //对应第二个<c:when>标签的主体
- out.print(username+" is manager.");
- }else{
- //对应<c:otherwise>标签的主体
- out.print(username+" is employee.");
- }
- %>
<c:choose>、<c:when>和<c:otherwise>标签的使用必须符合以下语法规则:
<c:when>和<c:otherwise>不能单独使用,它们必须位于<c:choose>父标签中。
在<c:choose>标签中可以包含一个或多个<c:when>标签。
在<c:choose>标签中可以不包含<c:otherwise>标签。
在<c:choose>标签中如果同时包含<c:when>和<c:otherwise>标签,那么<c:otherwise>必须位于<c:when>标签之后。
- jstl初识之旅:Core标签中的一般用途标签
- JSTL标签库之Core
- JSTL标签库之core标签库
- JSTL标签库中常用标签之Core标签
- JSTL中的Core标签库总结(一)
- JSP/Servlet-----JSTL之core标签库
- JSTL-Core标签库
- JSTL-Core标签库
- jstl core标签
- JSTL---core标签库
- JSTL core标签库
- JSTL -- core标签库
- 初识JSTL标签
- 初识JSTL标签
- JSTL之 Core标签库之通用标签
- jstl标签的url标签的用途:
- jstl标签的一般应用
- JSTL简介 ---Core标签库
- PHP 与SQL语句的转换
- 窗口的子类化与超类化
- Prn.txt Con.txt(文件命名的问题)
- 按回车键自动跳到下一个控件
- 数组实现约瑟夫环
- jstl初识之旅:Core标签中的一般用途标签
- 全球软件开发语言排行榜 2010年6月 (Lua强劲上升,C#首次进入第4名逼近C++)
- 爱情的尽头还是爱情
- PHP连接MySQL报错:Fatal error: Call to undefined function mysql_connect()之解决方法
- (转)基本光照模型公式
- 科创之股票数据挖掘(6)
- 如何解决List集合类数据源变更UI不能自动刷新的问题
- CSDN 这网站感觉还行
- __declspec(dllexport)/__declspec(dllimport)