EL和JSTL表达式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38095094/article/details/74935391

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--> 

类似于这样子, pageScope {sessionScope} ${applicationScope} 分别用来输出依次类型的参数。

  **此外** 也可以用来获取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);

此时,如果你调用 requestScope.1 {requestScope[“1”]}来获取


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表达式,这里只是简单的介绍了一些,后续应该还会再完善。第一次写博客,不好的望各位大牛指出!!

猜你喜欢

转载自blog.csdn.net/qq_38095094/article/details/74935391