前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JSP总结三(JSTL核心标签库的使用)

JSP总结三(JSTL核心标签库的使用)

作者头像
爱撒谎的男孩
发布2019-12-31 14:45:42
1.2K0
发布2019-12-31 14:45:42
举报
文章被收录于专栏:码猿技术专栏码猿技术专栏

文章目录

  1. 1. JSP总结三(JSTL核心标签库的使用)
    1. 1.1. 简介
    2. 1.2. 属性处理与输出标签
      1. 1.2.1. 属性处理标签
      2. 1.2.2. 输出标签
    3. 1.3. 流程处理标签
      1. 1.3.1. if判断语句
      2. 1.3.2. 高级判断
    4. 1.4. 网页导入和重定向标签
      1. 1.4.1. 网页导入标签
      2. 1.4.2. 重定向标签
    5. 1.5. 错误处理标签
    6. 1.6. 迭代标签
      1. 1.6.1. forEach
        1. 1.6.1.1. 属性
        2. 1.6.1.2. 实例
      2. 1.6.2. forTokens
        1. 1.6.2.1. 属性
        2. 1.6.2.2. 实例

JSP总结三(JSTL核心标签库的使用)

简介

其实在我们编写JSP网页的时候是不希望在JSP页面中出现Java代码的,这里我们就要使用JSTL的核心标签库来实现。 想要使用JSTL,一定要填上这句话:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

属性处理与输出标签

属性处理标签

在定义变量的时候,我们难免会用到Java代码,但是这里我们介绍<c:set>标签,这个能够实现变量的定义 <c:set>标签中的属性有 var(定义的变量)、value(变量的值)、target(为JavaBean对象赋值的时候使用)、scope(设置变量的存活范围,有request,session,application,page)、property(JavaBean的变量) 使用set标签相当于调用存活范围内的setAttribute()方法来绑定属性

  • 定义一个普通的变量:
代码语言:javascript
复制

<%--x的值为10,这句话相当于String x="10" --%>
<c:set var="x" value="10"></c:set>

  • 定义session范围的变量(当然还可以定义其他存活范围的变量,这里就不一一讲了)
代码语言:javascript
复制

<%--seesion范围的变量代表整个会话期间都是可以共享这个变量的,相当于下面这句话:
        session.setAttribute("x",100);
        在另外一个JSP文件中可以使用下面的语句得到其中的值:
        
        session.getAttribute("x");
        <c:out value="${sessionScope.x}"></c:out>
--%>
<c:set var="x" value="100" scope="session"></c:set>

  • 设置JavaBean对象的值:
代码语言:javascript
复制
<%--获取JavaBean的对象person,如果没有那么就是直接创建一个对象,范围为session,下面可以用到 --%>
<jsp:useBean id="person" class="com.Person" scope="session"></jsp:useBean>

<%-- target是对象的person,这里使用EL表达式,得到session范围内的Person对象 --%>
<c:set target="${sessionScope.person }" property="username" value="陈加兵"></c:set>

<%-- 输出变量的username的值,这里使用的EL表达式  相当于  session.getAttribute("person").getUsername() --%>
<c:out value="${sessionScope.person.username }"></c:out>

  • 如果设置的值太冗长了,那么可以在标签体的中间设置
代码语言:javascript
复制
<c:set scope="request">陈加兵</c:set>

  • 移除变量 使用的是<c:remove>(一定要指定存活范围)
代码语言:javascript
复制
<%--移除session范围内的变量x  相当于  session.removeAttribute("x")  
    这里一定要指定范围
--%>
<c:remove var="x" scope="session"/>

输出标签

<c:out>相当于out.println()方法,是一个用来向网页中输出内容的 其中的属性有value (输出的内容,其中可以是JEL的${}或者一个字符串) ,escapeXml(这个使用来控制是否将输出的内容中有html标签的是否用替代字符替换,默认为true表示用替代字符替换),default(如果输出的内容为null或者为空的时候那么就直接不显示任何内容,但是我们可以定义default的值来默认显示的值)

  • 使用EL表达式输出
代码语言:javascript
复制

<%--输出request范围内的属性x   相当于 out.println(request.getAttribute("x"))--%>
<c:out value="${requestScope.x}"></c:out>

  • 直接使用字符串输出一个值
代码语言:javascript
复制

<c:out value="我是陈加兵"></c:out>

  • 输出html语句
代码语言:javascript
复制

<%--设置escapeXml为false--%>
<c:out value="<h1>我是陈加兵</h1>" escapeXml="false"></c:out>

  • 指定输出的默认的内容
代码语言:javascript
复制

<%--如果${param.username}为空,那么就输出0--%>
<c:out value="${param.username}" default="0"></c:out>

流程处理标签

流程处理就是判断,循环语句

if判断语句

<c:if>可以判断语句是否正确,如果正确即可执行,但是这个标签没有else语句,只能处理判断为正确的结果 其中的属性有test,这个是设置判断条件的,如果为true即可执行,反之不执行,var是保留判断结果的 test中的判断条件既可以是EL表达式也可以是<%=%>

代码语言:javascript
复制
   <c:set var="salary" value="${3000 }"></c:set>

<%-- test中写的是判断条件,如果为true那么才执行,这里写的是EL表达式,当然也是可以用<%=%> --%>
   
<c:if test="${salary>2000 }">
	<c:out value="这个员工的工资大于2000"></c:out>
</c:if>

高级判断

前面的说过的<c:if>仅仅当判断为真时才执行,但是我们想要当不为真时也执行语句,这时我们要使用<c:choose>,<c:when>,<c:otherwise>

代码语言:javascript
复制
   <%--  判断题必须在choose中 --%>
<c:choose>
	<%-- 如果提交的username和password都对的话,那么就登录成功  相当于if --%>
	<c:when test='${param.username=="陈加兵" && param.password=="123456"}'>
		<h1>
			<c:out value="${param.username }"></c:out>
			登录成功
		</h1>
	</c:when>

	<%--	相当于else --%>
	<c:otherwise>
		<h1>
			<c:out value="${param.username }"></c:out>
			登录失败
		</h1>
	</c:otherwise>
</c:choose>

网页导入和重定向标签

网页导入标签

之前学过JSP中的网页导入,一个是静态导入,一个是动态导入,详情请看上篇文章。 在JSTL中也有一个标签(<c:import>),用于动态导入网页,并且还可以使用<c:param>设置传入的参数

代码语言:javascript
复制
   <%-- url就是要导入的网页,name是设置初始值的变量,value是设置的值。在demo1.jsp中可以使用        request.getParameter(String name)取得参数 --%>
<c:import url="demo1.jsp">
	<c:param name="username" value="陈加兵"></c:param>
	<c:param name="password" value="123456"></c:param>
</c:import>

除了导入web应用程序中的网页,我们还可以导入非目前web应用程序中的网页

代码语言:javascript
复制
<%--导入百度的首页,并且设置字符集为utf-8,注意这里一定要设置网页的字符集格式和当前的jsp格式一样,否则会出现乱码--%>
<c:import url="http://www.baidu.com"></c:import charEncoding="utf-8">

重定向标签

之前的重定向必须使用HttpServletResponsesendRedirect()方法 现在我们可以使用JSTL标签<c:redirect url>

代码语言:javascript
复制
<c:redirect url="demo1.jsp"></c:rediect>

当然我们也是可以传入参数的,使用<c:param name="" value="">

代码语言:javascript
复制
<c:redirect url="demo1.jsp">
    <c:param name="username" value="陈加兵"/>
</c:rediect>

错误处理标签

在之前的JSP文件中,必须定义errorPage属性才能跳转到指定的页面或者处理错误 现在我们使用JSTL标签<c:catch>,可以捕捉异常,如果有异常就会将异常对象保存下来

代码语言:javascript
复制
   <%--捕捉异常,如果有了异常,那么保存在error变量中 --%>
<c:catch var="error">
	${10/0 }
</c:catch>

<%-- 如果捕捉到了异常,那么error就不是null --%>
<c:if test="${error!=null }">
	<h1>
		<c:out value="${error.message }"></c:out>
	</h1>
</c:if>

迭代标签

迭代标签用于数组,集合,列表的输出。

forEach

forEach既可以循环也可以迭代

属性

  • var 变量,用于输出
  • items 将要迭代的对象
  • valueStatus 迭代的状态
  • begin 如果指定了bengin,就在items下标为begin的位置进行迭代
  • end 如果指定了end,那么就在items下表为end的位置结束迭代
  • step 指定迭代的步长,默认的是1
实例
代码语言:javascript
复制
      <!-- 循环输出[0,8]之中的所有的整数 -->
		<c:forEach var="item" begin="0" end="8">
			<c:out value="${item}"></c:out>
		</c:forEach>
		<br>
		
		<!-- 循环输出[0,8]之中的所有的整数 ,指定步长为2-->
		<c:forEach var="item" begin="0" end="8" step="2">
			<c:out value="${item}"></c:out>
		</c:forEach>





<%
	List list=new ArrayList();
 	for(int i=0;i<3;i++){
 		list.add(i);
 	}
	request.setAttribute("items", list);

%>

<!-- item是创建的变量用来存储迭代中的值,items是迭代的对象,其中的值使用EL表达式给出 -->
<c:forEach var="item" items="${requestScope.items }">
	<c:out value="${item }"></c:out>
</c:forEach>

forTokens

用于将一个字符串按照定义的符号分隔出来。

属性

  • var 变量,用于输出
  • items 将要迭代的string对象
  • delims 指定分隔字符串的分隔符,可以定义多个分隔符
  • varStatus 迭代的状态
  • begin
  • end
  • step
实例
代码语言:javascript
复制
<%
	String str="c,v,d,s,a|v,d";
	request.setAttribute("str",str);
%>

<c:forTokens var="item" items="${requestScope.str }" delims=",|">
	<c:out value="${item }"></c:out>
</c:forTokens>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JSP总结三(JSTL核心标签库的使用)
    • 简介
      • 属性处理与输出标签
        • 属性处理标签
        • 输出标签
      • 流程处理标签
        • if判断语句
        • 高级判断
      • 网页导入和重定向标签
        • 网页导入标签
        • 重定向标签
      • 错误处理标签
        • 迭代标签
          • forEach
          • forTokens
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档