EL表达式
语法规范:
${标识符}
1,得到request域中的数据
<%-- JSP表达式 --%>
<%=((Student)request.getAttribute("s")).getName() %><br>
EL表达式:
${s }
2,从域对象中拿数据
<%--
pageContext.findAttribute()在当前页面中找出域对象里面对应的属性名
pageContext -> request -> session -> application
--%>
<%
request.setAttribute("name", "lily");
pageContext.setAttribute("name", "Tom");
%>
${name }
<br>
<%-- 就是想要从指定的域对象里面拿出我想要的数据
requestScope
sessionScope
applicationScope
pageScope
--%>
${requestScope.name }
3,修改属性值
<%-- 这里是通过setter和getter方法来修改域对象里面保存数据的内容 --%>
${s.getName() } <br>
${s.setName("Rose") }<br>
${s }
更加简单的方式:
${s.name = "David" } <br>
${s } <br>
${requestScope.name = "233333" }
4,可以获得集合的数据
<%
List<String> list = new ArrayList<String>();
list.add("周日");
list.add("周一");
request.setAttribute("list", list);
Map<String, String> map = new HashMap<String, String>();
map.put("name", "123");
map.put("age", "10");
request.setAttribute("map", map);
%>
${list } <br>
${list[0] } <br>
${map["name"] } <br>
${map.name } <br>
5,可以获取请求参数
第一步请求数据写好:
<form action="04EL.jsp" method="POST">
id:<input type="text" name="id"> <br>name:<input type="text" name="name"> <br>
<input type="submit" value="submit">
</form>
第二步获得请求数据:
${param["id"] } <br>
${param.name }<br><%--
XXX/04EL.jsp?id=12&name=匿名君&hobby[]=篮球&hobby[]=足球
--%>
${paramValues["hobby[]"][0] }<br>
${paramValues["hobby[]"][1] }<br>
${cookie["JSESSIONID"] }<br>
${cookie["JSESSIONID"].name }<br>
${cookie["JSESSIONID"].value }<br>
${cookie.JSESSIONID.value }<br>
${pageContext.request.contextPath }<br>
获得路径:
<form action="<%=request.getContextPath() %>/01EL.jsp"></form><form action="${pageContext.request.contextPath }/01EL.jsp"></form>
JSTL
设置:
<%--
定义一个变量,并且把它放到域对象中
var 相对于变量名
value 变量的值
scope 指定域
--%>
<c:set var="name" value="Tom"></c:set>
<c:set var="age" value="10" scope="request"></c:set>
<c:set var="age" value="20" scope="session"></c:set>
<%-- 设置null值 --%>
<c:set var="name" value="${null }"></c:set>
${name } <br>
${requestScope.age } <br>
<%
Student stu = new Student();
request.setAttribute("s", stu);
%>
<%--
target: 需要设置的对象 ${s }用EL表达式把对象拿出来
property: 要设置的属性名
value: 设置的数值
--%>
<c:set target="${s }" property="name" value="Jack"></c:set>
${s.name } <br>
2,输出:
<%--
value 要输出的值
default 如果值不存在,对应的展示效果
escapeXml 是否让HTML标签起作用,false是起作用,true是不起作用
--%>
<c:out value="${NDY }" default="<h3>真的没有啊~~~</h3>" escapeXml="false"></c:out>
JSTL条件判断:checked默认选择项
<%--
这里是一个条件判断
test 中给出条件 这里用到了EL表达式
--%>
<c:if test="${10 > 5 }">
<h2>YES</h2>
</c:if>
<c:set var="sex" value="女"></c:set>
<c:if test="${sex == '男' }">
<input type="radio" checked="checked"> 男
<input type="radio"> 女
</c:if>
<c:if test="${sex == '女' }">
<input type="radio"> 男
<input type="radio" checked="checked"> 女
</c:if>
<%--
遍历
items 表示要遍历的对象
var 表示遍历出来的每一个对象的临时名字,这个相当于在pageContaxt域对象中,创建了一个
s变量
begin / end 从哪里开始到哪里结束
varStatus:
遍历的状态:
count:表示遍历出来的数据个数
index: 表示遍历出来的数据对应的下标号
begin:从哪个数据开始
end: 结束下标是哪一个
first:是否是开始
last:是否是结尾
--%>
<c:forEach items="${requestScope.list }" var="s" varStatus="vs"
begin="2" end="8" step="2">
${s } ${vs.count } ${vs.index }
${vs.first } ${vs.last } <br />
</c:forEach>
<%--
重定向
--%>
<%-- <c:redirect url="http://www.baidu.com"></c:redirect>--%>
<%--
设置URL
*****/04EL.jsp?id=20&name=Tom
--%>
<c:url value="/04EL.jsp" var="url">
<c:param name="id" value="20"></c:param>
<c:param name="name" value="Tom"></c:param>
</c:url>
<a href="${url }">04EL.jsp</a>