jsp与servlet 03

在JSP开发中,建议少写或者不写Java代码

需要替换JSP中Java代码

01 EL表达式

用于替代JSP的表达式 <%= %>,用于向页面输出域对象中的值或者表达式的结果(EL表达式能够从域对象中获取值)

语法:${变量名、表达式}

<%=request.getAttribute("name") %>
替换为:
${name}  从(哪个)域对象中取值? 类似于pageContext.findAttribute(name)
从四个域对象中取值 pageContext request session application(由小到大依次取值,只要获取到了 就显示)

从指定域对象中取值?
需要添加取值的范围:pageScope  requestScope sessionScope applicationScope
如果一旦指定了范围 那么,只会从指定的域范围中进行查找,找不到则返回空

基本数据类型

<hr>
基本类型取值:
String:${name } <br>
Int:${age } <br>
Boolean:${isGirl }<br>

对象

对象显示:
${user }  <%-- 默认调用toString方法 --%>
<br>
ID:${user.id } <br> <%-- 访问对象中属性 对象.属性名 就能直接访问,但是前提(必须存在get方法) --%>
Name:${user.name } <br>
Age:${user.age } <br>
Address:${user.address } <br>

集合

List Map

<br>
List: ${foods }<br>
- ${foods[0] }  <%--通过下标获取集合中当前索引元素 --%>
- ${foods[1] }
- ${foods[2] }
<br>
Map: ${map } <br>
A:${map.A }  <%-- map取值 map.key --%>
B:${map.B }

表达式

${1+1} ${empty list} 判断集合中元素是否为空 ${a>b?a:b}

02 JSTL标签库(Java Standard tag lib)

替代之前的JSP的脚本(选择结构、循环结构等)<% %> ,类似于之前我们所使用的第三方的jar包(之前的jar包给java代码调用的,标签库是给jsp所使用的)

1.下载jstl的jar包

2.在需要使用JSTL的JSP中使用taglib指令引入标签

3.JSTL主要分为5个标签库

  • 核心标签【重要】
  • 格式化标签【日期转换】
  • SQL 标签
  • XML 标签
  • JSTL 函数

<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>

1.核心标签

[外链图片转存失败(img-LQ53qtnz-1563869485407)(D:\淮北短训\day09\课件\jstl.PNG)]

<%-- 1.页面输出 --%>
<%-- 向页面输出内容  --%>
<c:out value="hello world"></c:out>

<hr>

<%-- 2.域对象相关 --%>
<%-- <%
	request.setAttribute("name", "张三");
%> --%>
<%-- 2.1向域对象中设值
var:字段名
value:字段值
scope:需要将数据保存在哪个域中 page request session application
 --%>
<c:set var="name" value="张三" scope="application"></c:set>

${name }

<!-- 2.2从域对象中移除值
var:需要移除的属性
scope="" 从哪个域中移除值
 -->
<c:remove var="name" />
移除值之后:${name }

<hr>
<%-- 3.分支结构(重要) --%>
<%-- 3.1单条件 --%>
<c:set var="age" value="12" scope="page"></c:set>
<%-- test:判断条件 --%>
<c:if test="${age>=18 }">成年</c:if>
<br>
<%-- 3.2多条件  <8000 温饱水平 8000-15000 小康生活 15000-20000 还行吧  20000-还不错  --%>
<c:set var="salary" value="36000" scope="page"></c:set>
<%--
if(){

}else if(){

}else if(){

}else{
}
 --%>
<c:choose>
	<c:when test="${salary<8000 }">温饱水平</c:when>
	<c:when test="${salary<15000 }">小康生活</c:when>
	<c:when test="${salary<20000 }">还行吧</c:when>
	<c:otherwise>还不错</c:otherwise>
</c:choose>

<hr>

<%-- 4.循环结构(重要)
for(User user[var] : users[items])

items:当前遍历的集合【重要】
var:当前遍历到的对象 【重要】
begin: 从第几个索引开始遍历,默认从0开始
end: 遍历到第几个结束,默认是集合最后一个
step:遍历的步长  默认为1
varStatus : 当前遍历到的元素的状态  ${st.index } 当前的索引
 --%>
<%-- ${users[0] } <br>
${users[1] } <br>
${users[2] } <br>
${users[3] } <br> --%>
<c:forEach items="${users }" var="u">
	${u.id }--${u.name }--${u.age }--${u.address } <br>
</c:forEach>

<hr>

<%--   
c:forTokens 将字符串按照分隔符分割后遍历
delims:分隔符
begin="" end="" step=""  varStatus="" 参考c:forEach --%>
<ul>
	<c:forTokens delims="," items="${subs }" var="sub">
		<li>${sub }</li>
	</c:forTokens>
</ul>
${subs }

<%-- 重定向标签 --%>
<c:redirect url="https://www.baidu.com"></c:redirect>

格式化标签

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%-- 格式转化库 --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
当前时间:
<%--value:需要格式化的数据  pattern:需要格式化的格式 --%>
<fmt:formatDate value="${date }" pattern="yyyy-MM-dd HH:mm:ss"/>

</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值