九、JSP&JSTL

九、JSP&JSTL

JSP基本语法

概述:JSP是一种动态网页编程技术,可以书写Java代码

<%-- 书写Java代码--%>
<%Java代码%>
静态调用&动态调用

1、静态调用

<%@include file="文件名"%>

特点:

  • 将内容直接替换掉
  • 只会生成一个源码文件
  • 不可以出现同名变量

2、动态调用

<JSP:include page="文件名"%></jsp:include>

特点:

  • ​ 相当于方法调用
  • 会生成多个源文件
  • 允许出现同名变量
  • 提高执行效率,降低耦合度

注意:动态调用时如果没有参数,中间不可以有任何内容(空格也不行)。如果需要传递参数则需要使用标签<jsp:param name="变量名" value="值"/>可以看成是表单向后台提交参数,POST请求。

四大作用域
  • page:在当前页面中有效
  • request:在一次请求中有效
  • session:在一次会话中有效
  • application:在整个服务器中有效

操作域变量的方法:

  • setAttribute(String name,Object value)
  • getAttribute(String name)
  • removeAttribute(String name)

四大作用域的对应对象:

/*
	page      		pageContext
	request			request
    seesion 		session
    application		application
*/
EL表达式

目的:是为了简化JSP的编写

基本格式:${expression}

注:EL表达式只适合于操作域变量,相当于request.getAttribute(String expression)

特点:

  • 只适合操作域变量,不可以操作其他变量
  • 如果没有指出域范围,默认式寻找小范围域的变量

EL表达式的使用:

/*
		基本域变量:${变量名}
		List集合:
			${集合名}:集合的地址
			${集合名.size()}:集合的大小
			${list[index]}:集合中的元素
		Map集合:
			${Map}:集合的地址
			${Map.key}/${Map["key"]}:集合中的具体元素
		JavaBean对象(实体类中必须含有设置器与访问器):
			${JavaBean}:对象地址
			${JavaBean.属性}/${JavaBean.get属性()}:获取对象的具体属性
*/
Empty

作用:用于判断域变量是否为空,为空则为true,不为空则为false

基本形式:${empty 域变量}

/*
	对于不同的域变量的判断:
		基本字符串变量:
			null:true
			空串:true
		List集合:
			null:true
			空List:true
		Map集合:
			null:true
			空Map:true
		JavaBean:
			null:true
			空对象:true
*/
基本运算

等值比较:==/eq

基本运算:+-*/

比较运算:>、<、>=、<=

运用形式:${运算符+域变量}

JSTL基本使用

JSTL是JSP标准标签库,用于解决一些常见的问题,迭代之类的问题

本文只讨论迭代标签和格式化数字日期集合。

前期准备:

​ 导入两个Jar包jstl.jar以及standard.jar[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NwIT77Of-1682603970327)(JSP&JSTL.assets/image-20230427205436046.png)]

然后就是在文件中导入:

//格式化数字日期库
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
//迭代操作标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

特别注意:高版本的Tomcat使用JSTL时需要在其安装目录的lib中加入两个Jar包。taglibs-standard-spec-1.2.5.jar

taglibs-standard-jstlel-1.2.5.jar

官网上下载:下载地址

在这里插入图片描述
在这里插入图片描述

迭代标签
if标签

作用:用于做分支判断

属性:test指判断条件

基本形式:

 <c:if test="${1==1}">
 	执行语句       
 </c:if>

JSP中不存在else语句,所以要实现else的效果必须要构造另一个if标签给予完全相反的条件,实例如下

 <c:if test="${!(1==1)}">
 	执行语句       
 </c:if>
choose-when-otherwise标签

相当于Java中的switch-case语句,基本形式如下:

<c:choose>
        <c:when test="${1==1}"></c:when>
        
        <c:otherwise></c:otherwise>
    </c:choose>

特点:

  • 一个choose标签中只可以含有when,otherwise标签
  • 只有when标签含有属性test
  • choose标签中必须含有至少一个when标签
  • when,otherwise标签中可以含有其他标签
  • otherwise标签是在上面的条件都不满足的前提下才使用
迭代循环foreach

一般形式:

/*
	<jsp:foreach
		item:循环数
		begin:开始位置
		end:结束位置
		var:限域变量用于接受循环值
		scope:规定变量的范围
*/

迭代:

<!--相当于
	for(int i=0;i<max;i++){
		操作
	}
-->
<c:forEach begin="1" end="10" var="item">
        ${item}
    </c:forEach>

循环:

<!--
	相当于:
		for(String str:list){
			System.out.print(str);
		}
-->
<!--list为一个集合-->
<c:forEach items="list" var="lt">
        ${lt}
    </c:forEach>

额外属性:varStatus

  • index:循环元素的索引

  • count:循环次数

  • first:是否为第一次循环

  • last:是否为最后一次循环

    <c:forEach items="list" var="lt" varStatus="status">
            ${status.index}
            ${status.count}
            ${status.first}
            ${status.last}
        </c:forEach>
    
格式化标签

格式化标签分为

  • formatNumber:格式化数字,货币,百分数

    <!--
    	基本形式:
    		<jsp:formatNumber
    				value:格式化数据
    				type:格式化类型,number(数字),currency(货币),percent(百分比)
    				var:限域变量接收格式化的值
    				scope:规定变量的范围
    -->
     <fmt:formatNumber value="10" type="number" var="num"></fmt:formatNumber>
        ${num}<br>
    
    
  • formatDate:格式化日期

    <!--
    	基本使用:
    		value:被格式化数据
    		type:格式类型,date(年月日),time(时分秒),both(完整形式)
    		var:限域变量
    		scope:变量范围
    		pattern:自定义形式
    -->
     <fmt:formatDate value="${date}" type="date" var="dt"></fmt:formatDate>
        ${dt}<br>
        <fmt:formatDate value="${date}" type="date" var="dt1" pattern="yyyy-MM-dd"></fmt:formatDate>
        ${dt1}<br>
    
  • parseNumber:解析数字货币百分数

    <h3>数字解析:</h3>
        <c:set var="balance" value="348.374" />
    
        <fmt:parseNumber var="i" type="number" value="${balance}" />
        <p>数字解析 (1) : <c:out value="${i}" /></p>
        <fmt:parseNumber var="i" integerOnly="true"
                         type="number" value="${balance}" />
        <p>数字解析 (2) : <c:out value="${i}" /></p>
    
    
  • parseDate:解析日期

    <!--
    	基本使用:
    		<jsp:parseDate
    				value:被解析值
    				type:类型
    				pattern:定义形式
    				var:限域变量
    				scope:规定变量作用域范围
    -->
     <c:set var="now" value="20-10-2015"/>
        <fmt:parseDate var="dt" type="date" value="${now}" pattern="dd-MM-yyyy"></fmt:parseDate>
        <fmt:formatDate value="${dt}" type="date" var="th"></fmt:formatDate>
        ${th}
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值