专栏首页爱撒谎的男孩JSP总结三(JSTL核心标签库的使用)

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

文章目录

  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()方法来绑定属性

  • 定义一个普通的变量:
<%--x的值为10,这句话相当于String x="10" --%>
<c:set var="x" value="10"></c:set>

  • 定义session范围的变量(当然还可以定义其他存活范围的变量,这里就不一一讲了)
<%--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对象的值:
<%--获取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>

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

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

输出标签

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

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

  • 直接使用字符串输出一个值
<c:out value="我是陈加兵"></c:out>

  • 输出html语句
<%--设置escapeXml为false--%>
<c:out value="<h1>我是陈加兵</h1>" escapeXml="false"></c:out>

  • 指定输出的默认的内容
<%--如果${param.username}为空,那么就输出0--%>
<c:out value="${param.username}" default="0"></c:out>

流程处理标签

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

if判断语句

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

   <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>

   <%--  判断题必须在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>设置传入的参数

   <%-- 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应用程序中的网页

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

重定向标签

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

<c:redirect url="demo1.jsp"></c:rediect>

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

<c:redirect url="demo1.jsp">
    <c:param name="username" value="陈加兵"/>
</c:rediect>

错误处理标签

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

   <%--捕捉异常,如果有了异常,那么保存在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

实例

      <!-- 循环输出[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

实例

<%
	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>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JDK1.9-注解

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    cwl_java
  • JDK1.9-Filter过滤器

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    cwl_java
  • 快速学习MyBatis-MyBatis框架概述

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    cwl_java
  • Web编程-Cookie&Session

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    cwl_java
  • 走进Java接口测试之使用JavaMailSender发送邮件

    一般我们在做接口自动化时,都会通过钉钉或者邮件的方式通知测试结果信息。而且基本上邮件的内容都是测试报告。所以,今天就来讲讲如何利用 pring提供的 JavaM...

    小老鼠
  • JDK1.9-Listener监听器

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    cwl_java
  • 快速学习Maven-Maven的常用命令

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    cwl_java
  • Android 亮度自动调节

    下拉状态栏有个亮度的进度条,如果开启了亮度自动调节开关,会随着周围光线变化,这个进度条也会随着变化,接下来就是看看这个功能是如何实现的。

    吴小龙同學
  • Apache Axis 1.4远程命令执行诡异探索之路

    axis 全称Apache EXtensible Interaction System 即Apache可扩展交互系统。axis 为创建服务器端、客户端和网关SO...

    FB客服
  • JDK1.9-反射

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    cwl_java

扫码关注云+社区

领取腾讯云代金券