EL表达式
作用:
- 获取JSP4个范围中的保存数据(page request session application)
- 支持运算,包括逻辑运算和数字运算
- EL 表达式内置的11个对象
- 通过EL表达式可以调用JAVA方法。
EL表达式可以代替jsp上的JAVA代码,使他简化并且方便修改
request.getSession().setAttritube("name",name);
在JSP中使用EL表达式就可以方便获取到request中的参数并输出
${requestScope.name}
${requestScope["name"]}
<!--两种方法都可以获得name-->
类似于这样子,
**此外** 也可以用来获取JAVAbean的对象
``` JAVA
public class person{
private String name;
private int age;
public void setName(void name){this.name=name;}
.....
}
然后在servlet中把对象放入session
request.getSession().setAttritube("person",person);
<div class="se-preview-section-delimiter"></div>
${requestScope.person.name}
这相当于一个点调用一个get方法
也可以用&{requestScope["person"]["name"]}
注释:[]和丶的差别在于[]可以调用一些比较特殊的字符
request.getSession().setAttritube("1",person);
此时,如果你调用
JSTL函数库
首先要在jsp中引入
<%@ taglib uri="http:java.sun.com/jsp/jstl/core" prefix="c" %">
1.用于将内容输出到页面,包括EL表达式
2.可以设置默认值
3.可以将html代码进行转义输出
< c:out >
1.用于将内容输出到页面,包括EL表达式
2.可以设置默认值
3.可以将html代码进行转义输出
1.设置已存在的对象的属性
2.可以将数据保存到jsp的四种变量类型中
< c:set >
1.设置已存在的对象的属性
2.可以将数据保存到jsp的四种变量类型中
将对象中设置的属性移除
<%
people s=new people();
s.setName("王五");
request.setAttritube("people",s);
%>
<c:remove var="name" scope="request"/></c:remove>
等价于 <% request.removeAttritube("people"); %>
代替普通java中的try catch 代码
< c:catch >
代替普通java中的try catch 代码
< !-- 异常被捕获,捕获后将异常保存到page范围的e2中-->
<c:catch var="e2">
<%
int a=1/0;
%>
</c:catch>
<!--可以在此处打印出捕获到的错误-->
${e2.message}
上面的代码就类似于
try{
int a=1/0;
}catch(Exception e){
System.out.println("捕获到异常");
}
< c:if >
用来代替java的if判断
<c:set var="n" value="10" scope="page"/></c:set>
<!-- 将判断的结果保存到pageContext范围内的result中-->
<c:if text="${n>8}" var="result" scope="page">
n的值大于8
</c:if>
${result} < !--结果是 true-->
<c:if text="${not (n>8)}">
n的值小于8
</c:if>
注意,没有< c:else >这个方法
< c:choose > < c:when > < c:otherwise >
可以构成java中的if、else if、switch的语法结构
jsp
<c:set var="n" value="3" scope="page"/></c:Set>
<c:choose>
<c:when text="${pageScope.n==3}">
Hello
</c:when>
<c:when text="${pageScope.n==7}">
World
</c:when>
<c:otherwise>
Hello world!
</c:otherwise>
</c:choose>
< c:forEach>
可以遍历数组,List和Map等
jsp
<% request.setAttertube("Num",new int[]{1,2,3,4,5});%>
<c:forEach item="${Num}" var="i">
<!-- item代表每次遍历的元素 ,并将它保存到page范围的i中-->
${i}
</c:forEach>
List和数组的遍历方式相同,Map遍历也大概一致,只是输出内容时要声明输出键还是值,,如下
jsp
${ i.key} ${ i.value}
< c:forEach begin="1" end="100" step="2" var="i" varStatus="status" >
${status.index} <!--通过status得到当前循环到第几-->
< /c:forEach>
对于EL和JSTL表达式,这里只是简单的介绍了一些,后续应该还会再完善。第一次写博客,不好的望各位大牛指出!!