JavaWeb知识:EL和JSTL

EL和JSTL

EL(Expression Language)是一种表达式语言

主要用于查找作用域中的数据,然后对它们执行一些简单的操作,用于对jsp标签的属性赋值。

它不是编程语言。

JSTL( JSP Standard Tag Library)是JSP标准 标签库,由apache实现

因为在jsp中出现大量Java代码不利于维护,sun公司就制定了一个类似于html标签一下的jsp标签技术,也有开始于结束标记。

我们可以引用标签来调用标签库中的Java代码片段来实现一下操作。

使用jsp标准标签库有利于程序的可读性,提高了代码的复用性与编程效率。

其目的就是为了jsp中不出现Java代码片段。这两者关系,JSTL通常会结合EL一起使用。

也有理解为EL是JSTL的一部分。EL也可以单独使用

转载地址

EL的使用

EL表达式的基本格式由$与{}组成,例如:${user.name}  即其意思就是查询得到user对象中的name属性的值。

可以进行一些简单的运算

1 算数运行 + - * / % 注:+只能做算数运算,不能做求和运算
算术运算:${1+"1" } 其结果为2  它会自动将“1”转化为数字进行运算


2 关系运算 == >= <= != 
关系运算:${5=="5"}其结果为true


3 逻辑运算 & | ! && ||

逻辑运算:${a>b&&4<5}其结果为false

在JSP页面中可以通过以下方式使用EL语句

<%
List list=new ArrayList();
list.add(1);
request.setAttribute("list", list);
request.setAttribute("a", "");
request.setAttribute("b", null);
%>

JSTL的使用

引入jstl.jar以及 standard.jar两个架包注:在javaEE5.0以上的版本不需要引入这两个架包

因为在javaEE5.0以上的版本已经包含了这两个架包。

将jstl.jar和standard.jar两个包考到现有工程  WebRoot / WEB-INF / lib 目录下

下面用一个案例来了解如何使用JSTL:

首先准备一个实体类User:

public class User{
    
    private String userId;
    private String userName;
    private String pwd;

    public User(String userId,String userName,String pwd){
    
        this.userId = userId;
        this.userName= userName;
        this.pwd= pwd;
    }

}

然后建立一个Servlet,传入一个User 的list到前端:



import com.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.ArrayList;

@WebServlet(name = "DemoServlet" ,urlPatterns = "/demoServlet")
public class Demo05Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        HttpSession session = request.getSession();
        ArrayList<User> userList = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            userList.add( new User("100"+i,"zs","123456") );
        }
        session.setAttribute( "userList",userList );
        request.setAttribute( "loginUser",new User());
        request.getRequestDispatcher( "jsps/demo06.jsp" ).forward( request,response );
    }
}

前端JSP页面代码,通过下面的方法就可以显示出Servlet中传入的数据:

<%@ page import="com.User" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>
<head>
    <title>Title</title>
</head>
<body>

    <c:if test="${empty loginUser}">
        <h1>请登入</h1>
    </c:if>
    <c:if test="${!empty loginUser}">
        <h1>欢迎!${loginUser.userName}</h1>
    </c:if>

    <table>
        <tr>
            <th>用户ID</th>
            <th>用户名</th>
            <th>密码</th>
        </tr>
        <%--for(User user:userList)--%>
        <c:forEach items="${userList}" var="user">
            <tr>
                <th>${user.userId}</th>
                <th>${user.userName}</th>
                <th>${user.pwd}</th>
            </tr>
        </c:forEach>
    </table>



</body>
</html>

猜你喜欢

转载自blog.csdn.net/h1025372645/article/details/89764345