Day 35 EL 和 JSTL

EL:表达式语言

等价于<%= %>,只负责输出,不做任何数据处理,如果没有找到输出的值,则输出""
jsp2.0提供了el和jstl

1. EL语法

输出常量
${"admin"}<br>
在pageContext,request,session,application中寻找user变量<br>
找到立即输出,不向后继续寻找<br>
<% 
request.setAttribute("user","admin");
session.setAttribute("user","admin11");
%>
${user}<br>

<%
	String array[]={"hello","student"};
	pageContext.setAttribute("array",array);
%>
array[0]=${array[0]}<br>

<%
	List<Student> list=new ArrayList<Student>();
	list.add(new Student("admin","beijing",20));
	session.setAttribute("list",list);
%>
list[0]=${list[0]}<br>

<%
	Map<String,String> map=new HashMap<String,String>();
	map.put("name", "admin");
	map.put("age", "20");
	application.setAttribute("map",map);
%>
age=${map.email}<br>
email=${map["email"]}<br>
.[]的区别:.后的名称必须是符合java合法标识符规范的名称,如果不规范,那么必须使用[]

2. 运算符

加减乘除
${2+3}
${"2"+"3"}
${4 div 2}
${5 mod 3}

比较运算符
${2>3},${2 gt 3 }
${2<3},${2 lt 3 }
${2==3},${2 eq 3}
${2!=3},${2 ne 3}
${2>=3},${2 ge 3}
${2<=3},${2 le 3}

逻辑运算符
${2>3&&true},${2>3 and true }
${2>3||true},${2>3 or true }
${!false},${not false }

三目运算符
${true?1:3}

empty:判断是否为null
${empty user123},${user123==null}

3. 内置对象(11个)

和范围相关的
pageScope、requestScope、SessionScope、applicationScope
<%
	List<String> list=new ArrayList<String>();
	list.add("abc");
	list.add("hello");
	request.setAttribute("list1",list);
	session.setAttribute("list",list);
%>
不会向下寻找
${requestScope.list[0]}
等价于<%
	List<String> list1=(List<String>)request.getAttribute("list1");
	String str=list1.get(0);
	out.print(str);
%>

和页面相关的
param,paramValues
param==>request.getParameter();
paramValues==>request.getParameterValues()
${param.name}等价于<%out.print(request.getParameter("name")); %>
${paramValues.like[0]}等价于<%String[] likes=request.getParameterValues("like");
							for(String s:likes){out.print(s);}%>
							
和请求头相关
header,headerValues
header==>request.getHeader(key);
headerValues==>request.getHeaderValues(key);
${header.Accept}
${headerValues.Accept[0]}

cookie
cookie==>cookie.getValue()
${cookie.JSESSIONID.value}

initParam需要配置xml
<context-param>
  	<param-name>pwd</param-name>
  	<param-value>123</param-value>
  </context-param>
initParam==>application.getInitParameter();
${initParam.pwd}

pageContext
${pageContext.request.contextPath}
${pageContext.session.id}

JSTL:JAVA标准标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
set:在某个域中设置属性
scope范围:page、request、session、application
<c:set var="str" value="hello" scope="request">
等价于<%request.setAttribute("str", "hello"); %>
</c:set>

out:输出属性值
<c:out value="${requestScope.str}"></c:out>

remove:删除属性值,如果多个域中定义相同的属性,不指定范围,删除全部,删除之后变为空的字符串,什么都不显示
<c:remove var="str" scope="request"/>

catch:捕获异常
<c:catch var="e">
<%
	String name=null;
	int n=name.length();
%>
</c:catch>

<c:set var="age" value="20" scope="request"></c:set>
<c:if test="${requestScope.age==20}">
</c:if>

<c:choose>
	<c:when test="${age<20 }">
	小于20
	</c:when>
	<c:when test="${age>20 }">
	大于20
	<c:otherwise>
	等于20
	</c:otherwise>
	</c:when>
</c:choose>

<c:forEach var="i" begin="1" end="10" step="2">
	${i}
</c:forEach>

<%
	List<String> list =new ArrayList<>();
	for(int i=1;i<=10;i++){
		list.add(""+i);
	}
	request.setAttribute("list", list);
%>
<c:forEach var="str" items="${requestScope.list}" varStatus="status">
	${str},
</c:forEach>

分割输出
<c:forTokens items="a:b:c:d" delims=":" var="str">
${str}
</c:forTokens>

包含页面
<c:import url="a.jsp">
	<c:param name="name" value="admin">传到包含的页面用${param.name}获取</c:param>
</c:import>

重定向
<c:redirect url="a.jsp"></c:redirect>

定义url,如果cookie被禁用,实现url重写,没禁用,正常处理
<c:url var="myurl" value="a.jsp" scope="">
<a href="${myurl}"></a>
</c:url>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值