EL&JSTL学习

EL(Expression Language)
EL内置11个对象

四大域对象 : pageContext requestScope sessionScope applicationScope

param//等同于 request.getParamter();

paramValues//等同于 request.getParamterValues();

header//request.getHeader();

headerValues//等同于 request.getHeaders();

initParamrequest.getHeaders(name)// this.getServletContext().getInitParameter();

cookie//等同于 request.getCookies();

pageContext// pageContext获得其他八大对象
//主要用作取值 简化jsp页面java代码
request.getAttribute("test"); 等同于 ${requestScope.test}

//同理${} 也可以取出其他域数据
${pageContextScope.test}--取出pageContext域名为test的值

${sessionScope.test}--取出session域名为test的值

${application.test}--取出application域名为test的值

//简写方式 依次从pageContext session application找值 找到后停止向后寻找
${test}
//request.setAttribute("text","value");
${requestScope.test}--value

/*
* User user = new User();
* user.setName = "lilei";
* session.setAttribute("text",user);
*/
${sessionScope.user.name}--lilei

/*
* List<User> list = new List<User>();
* User user_1 = new User();
* User user_2 = new User();
* user_2.setName = "lilei";
* application.setAttribute("text",list);
*/
${application.list[1].name}--lilei 下标从0开始
${header["host"]} 等同于 ${header.host}

而对象的参数有
	'}'  '.'  '['  '>'  'gt'  '<'  'lt'  '>='  'ge'  '<='  'le'  '=='  'eq'
	'!='  'ne'  '&&'  'and'  '||'  'or'  '*'  '+'  '-'  '/'  'div'  '%'  'mod'
时必须使用[]取值
${header["User-Agent"]}

常用

${pageContext.request.contextPath} 等同于 request.getContextPath();

//getRequest();获取的是ServletRequest 而不是HttpServletRequest 不能直接获取ContextPath
<%=pageContext.getRequest().getContext()%>//不能实现

${1+1}--页面显示2
${1==1?true:false}--页面显示true
//判断对象是否为null 为null返回true
${empth ""}--空字符串不为null 但是EL表达式识别为null 除此之外全都与java对应

EL没有处理业务逻辑能力 只能作显示数据使用 so ?

JSTL(JavaServer Pages Standard Tag Library) 一套库的集合 共有五套

标签库标签库的URI前缀
Corehttp://java.sun.com/jsp/jstl/corec
I18Nhttp://java.sun.com/jsp/jstl/fmtfmt
SQLhttp://java.sun.com/jsp/jstl/sqlsql
XMLhttp://java.sun.com/jsp/jstl/xmlx
Functionshttp://java.sun.com/jsp/jstl/functionsfn
使用jstl处理业务逻辑 除Core外已经废弃 项目需要导入jstl.jar和standard.jar
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

<!-- https://mvnrepository.com/artifact/taglibs/standard -->
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>
使用jsp的taglib指令 引入jstl
	<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

jstl常用标签

<!-- 判断标签 -->
<c:if test=""></c:if>--test属性值为 boolean值 为true时进入标签体

<!-- 循环标签 -->
传统写法及其于java代码的对应关系
/*
* for(int i=0;i<=5;i++){System.out.println(i);}
*/begin--起始数值 end--结束数值 var--begin至end 每次循环会赋值给var(相当于i++)
<c:forEach begin="0" end="5" var="i"></c:forEach><!--注意注意此时是<=5-->

常用写法及其于java代码的对应关系
/*
* for(User user:users){System.out.println(i);}
*/items--集合或数组 var--items中的每一项赋值给var(放在pageContext域) varStatus--循环的状态和次数
<c:forEach items="${users}" var="user" varStatus="vs">--不用做非空判断 不会有空指针问题
	${vs.count}<!--此时代表循环的次数 作页面序号作用-->+${user.username}
</c:forEach>

转载于:https://www.cnblogs.com/setlilei/p/10629479.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值