JSP标签技术之EL表达式及JSTL标签库

1.JSP标签技术

在jsp页面中写入大量的java代码会导致html和java代码混杂在一起,造成页面的混乱,难于维护

sun公司提出了jsp标签技术,推荐使用jsp标签技术代替java代码,并推荐在jsp页面中不要出现任何一行java代码

1.1.EL表达式

EL表达式用来代替jsp表达式

EL表达式用来获取数据,结构:${ 表达式 }

获取数据:

根据属性的key获取value

在获取属性时,如果该属性不存在,则不会显示任何东西

注意:EL表达式获取数据时,只能从四大域中获取

获取顺序为:pageContext->request->session->ServletContext

运算:

empty:判断属性是否为空,返回值为boolean

EL表达式内置了11个对象,可以拿来直接使用   

内置对象说明
pageContext可以获取其他八大隐式对象
pageScope获取pageContext域属性,相当于pageContext.getAttribute("xxx")
header对应请求头,它是一个Map,其中key表示头名称,value是单个头值,适用于单值的请求头,相当于request.getHeader("xxx")
headerValues对应请求头,它是一个Map,其中key表示头名称,value是多个头值,适用于多值的请求头,相当于request.getHeaders("xxx")
requestScope获取request域属性,相当于request.getAttribute("xxx")
sessionScope获取session域属性,相当于session.getAttribute("xxx")
applicationScope获取application域属性,相当于application.getAttribute("xxx")
initParam获取web.xml中<context-param>内的参数,${ initParam.xxx},xxx就是<param-name>标签内的值,进而得到<param-value>中的值
paramValues对应参数,她是一个Map,其中key是参数,value是多个参数值,适用于多值的参数,相当于request.getParameterValues("xxx")
param所有的请求参数组成的map:获取请求参数:${param.username}
cookie所有请求中的cookie组成的map,key为cookie的name,value为cookie对象本身

如:${cookie.time.value}

//示例一:jsp中的代码示例,定义了字符串str,str2
String str1 = "域属性1";
String str2 = "域属性2";

//2.存入域对象
session.setAttribute("str",str1);
//key 重复,按照优先级取值
request.setAttribute("str",str2);

//如果,设置值时,设置的名称相同,则
//应该按照四大域的优先级获取,如下代码优先获取request的str2

${str}

//输出信息是:域属性2

//

//示例二
  <%--指定域获取数据,不会再按照优先级去取了,如下已经指定是在session 中取--%>
  ${sessionScope.str}

//输出的信息是:域属性1

 

1.2.JSTL标签库 

JSTL标签库是用来代替jsp脚本片段

JSTL标签库有很多字库:

  • 核心标签
  • 格式化标签
  • SQL 标签
  • XML 标签
  • JSTL 函数

导入核心标签库步骤:

导入jar包:将jstl相关jar包拷贝到web/WEB-INF/lib目录下,然后add as library…

添加taglib指令

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

常用标签:

<c:set>:向指定域中存入数据

<c:if>:条件标签

<c:forEach>:遍历

  ${param.username}
  <%--JSTL 标签库--%>
  <c:set var="phone" value="13325654587" scope="request"></c:set>
  ${phone}
  <c:if test="${3>2}">大于</c:if>
  <c:if test="${!(3>2)}">小于</c:if>
  <c:if test="${empty user}"> 请登陆 </c:if>
  <c:if test="${!(empty user)}"> 欢迎${user.username}回来 </c:if>

  <c:forEach items="${strs}" var="name">
    ${name}<br/>
  </c:forEach>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值