Servlet-jsp进阶之EL与JSTL

本文详细介绍了Servlet-JSP中EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)的使用。EL简化了数据获取,JSTL提供了便利的界面渲染功能。通过MVC分层结构,降低了项目的耦合度。文章涵盖了base标签的作用与用法,EL的取值顺序和集合对象数据的获取,以及JSTL的条件渲染、循环渲染和数据格式化的实例。
摘要由CSDN通过智能技术生成

Servlet-jsp进阶之EL与JSTL

1 base标签

1.1 作用

给url加上统一的前缀,不用每次都重复写前缀

主要用于相对路径

1.2 用法

<%
String baseUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath()+"/";
%>
<base href="<%=baseUrl%>" />
<a href="stu">跳转</a>

2 MVC分层结构

2.1 概述

将一个Web应用分为三层

M : model(模型层),和数据库进行交互

V : view(视图层),用户所看到的界面

C : controller(控制层),根据不同的请求进行不同的响应

2.2 作用

降低了耦合度,更易于维护项目

3 EL表达式

3.1 作用

方便我们在jsp中获取在域里的数据

3.2 jsp文件位置的影响

jsp文件直接放在webApp下,是可以直接访问到的
jsp文件放在WEB-INF下,就代表这是一个被保护的资源,需要通过servlet转发过去

当jsp需要编写一些业务逻辑的时候,或者获取一些数据的时候,也会通过servlet进行转发,其目的是将业务逻辑和视图分开

3.3 语法

${}可以直接取得放在域里的数据

注意: 在{}中是可以进行四则运算,逻辑运算的

3.4 取值的顺序

按照域的范围从小到大取

pageContext -> pageScope
request -> requestScope
session -> sessionScope
application ->applicationScope

3.5 EL获取集合和对象的数据

对象: ${变量名.属性名}

集合: ${变量名[索引]}

注意: 可以通过${pageScope.request.contextPath}获取域名后的项目文件名

4 JSTL

4.1 作用

方便进行界面渲染,可以让不用写java代码即可以实现条件渲染和循环渲染和数据格式化
提供了一些函数方便进行操作

4.2 流程

4.2.1 在Maven中引入依赖
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
4.2.2 页面头部加上相关标签
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"  %>条件渲染和循环渲染需引入
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>数据格式化需引入
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>使用函数需引入

4.3 条件渲染

C:if

<c:if test="${isLogin}">
    <div>这是这个用户的昵称</div>
</c:if>
<c:if test="${!isLogin}">
    <button>登录按钮</button>
</c:if>

c:choose

<c:choose>
    <c:when test="${age < 18}">未成年</c:when>
    <c:when test="${age < 30}">青年</c:when>
    <c:when test="${age < 50}">中年</c:when>
    <c:otherwise>老年</c:otherwise>
</c:choose>

4.4 循环渲染

c:forEach

items	渲染的列表
var 	没一项的变量名
begin	开始循环渲染的索引
end		结束循环渲染的索引
step	每次跳过的个数
varStatus	当前的循环的状态,通过这个属性可以获取当前这一项的索引
<ul>
<c:forEach items="${list}" var="item" begin="0" end="2" step="2" varStatus="status">
    <li>${item.name}----${item.age}---${status.index}</li>
</c:forEach>
</ul>

4.5 数据格式化

<div>
   <fmt:formatNumber value="${num}" pattern="###,###.##" />
</div>
<div>
   <fmt:formatNumber value="${num}" pattern="###,###.00" />
</div>
<div>
   <fmt:formatNumber value="${per}" type="percent" minFractionDigits="2" maxFractionDigits="2" />
</div>

4.6 相关函数

${fn:length(变量)}
${fn:contains(变量,被包含的字符串)}
${fn:startsWith(变量,被包含的字符串)}
${fn:endsWith(变量,被包含的字符串)}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值