EL表達(dá)式&過濾器&監(jiān)聽器-創(chuàng)新互聯(lián)

這里寫目錄標(biāo)題
  • 1 EL 表達(dá)式
    • 1.1 EL 表達(dá)式介紹
    • 1.2 EL 表達(dá)式快速入門
    • 1.3 EL 表達(dá)式獲取數(shù)據(jù)
    • 1.4 EL 表達(dá)式注意事項
    • 1.5 EL表達(dá)式運(yùn)算符
    • 1.6 EL 表達(dá)式使用細(xì)節(jié)
    • 1.7 EL 表達(dá)式隱式對象
  • 2 JSTL
    • 2.1 JSTL 介紹
    • 2.2 JSTL 核心標(biāo)簽庫
    • 2.3 JSTL基本使用
  • 3 Filter
    • 3.1 過濾器介紹
    • 3.2 Filter 介紹
    • 3.3 FilterChain 介紹
    • 3.4 過濾器的使用
    • 3.5 過濾器使用細(xì)節(jié)
    • 3.6 過濾器生命周期
    • 3.7 FilterConfig
    • 3.8 過濾器的五種攔截行為
  • 4 Listener
    • 4.1 監(jiān)聽器介紹
    • 4.2 監(jiān)聽對象的監(jiān)聽器
    • 4.3 監(jiān)聽域?qū)ο髮傩宰兓谋O(jiān)聽器
    • 4.4 監(jiān)聽會話相關(guān)的感知性監(jiān)聽器
    • 4.5 監(jiān)聽器的使用

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比奇臺網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式奇臺網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋奇臺地區(qū)。費(fèi)用合理售后完善,10年實體公司更值得信賴。1 EL 表達(dá)式 1.1 EL 表達(dá)式介紹
  • EL(Expression Language):表達(dá)式語言
  • 在 JSP 2.0 規(guī)范中加入的內(nèi)容,也是 Servlet 規(guī)范的一部分
  • 作用:在 JSP 頁面中獲取數(shù)據(jù)。讓我們的 JSP 脫離 Java 代碼塊 和 JSP 表達(dá)式
  • 語法:${表達(dá)式內(nèi)容}
1.2 EL 表達(dá)式快速入門
  • 代碼演示
<%@ page contentType="text/html;charset=UTF-8" language="java" %>EL表達(dá)式快速入門<%--    設(shè)置共享數(shù)據(jù)--%><% request.setAttribute("username","zhangsan"); %>java 代碼塊:<%out.println("username");%>
java 表達(dá)式:<%=request.getAttribute("username")%>
EL 表達(dá)式:${username}
1.3 EL 表達(dá)式獲取數(shù)據(jù)
<%@ page import="com.txt.bean.Student" %><%@ page import="java.util.ArrayList" %><%@ page import="java.util.HashMap" %><%@ page contentType="text/html;charset=UTF-8" language="java" %>EL表達(dá)式獲取不同類型數(shù)據(jù)<%--    1. 獲取基本數(shù)據(jù)類型--%><% pageContext.setAttribute("num",10); %>基本數(shù)據(jù)類型:${num}
<%-- 2. 獲取自定義數(shù)據(jù)類型--%><% Student stu = new Student("張三",23); pageContext.setAttribute("stu",stu); %>自定義數(shù)據(jù)類型:${stu}
學(xué)生姓名:${stu.name}
學(xué)生年齡:${stu.age}<%-- 3. 獲取數(shù)組類型--%><% String[] arr = {"hello","world"}; pageContext.setAttribute("arr",arr); %>數(shù)組:${arr}
0索引元素:${arr[0]}
1索引元素:${arr[1]}
<%-- 4. 獲取List集合--%><% ArrayListlist = new ArrayList<>(); list.add("aaa"); list.add("bbb"); pageContext.setAttribute("list",list); %>List集合:${list}
0索引元素:${list[0]}
<%-- 5. 獲取Map集合--%><% HashMapmap = new HashMap<>(); map.put("stu01",new Student("張三",23)); map.put("stu02",new Student("李四",24)); pageContext.setAttribute("map",map); %>Map集合:${map}
第一個學(xué)生對象:${map.stu01}
第一個學(xué)生對象的姓名:${map.stu01.name}
1.4 EL 表達(dá)式注意事項
  • EL 表達(dá)式?jīng)]有空指針異常
  • EL 表達(dá)式?jīng)]有索引越界異常
  • EL 表達(dá)式?jīng)]有字符串的拼接異常
1.5 EL表達(dá)式運(yùn)算符
  • 關(guān)系運(yùn)算符
    在這里插入圖片描述
  • 邏輯運(yùn)算符
    在這里插入圖片描述
  • 其他運(yùn)算符
    在這里插入圖片描述
  • 代碼演示
<%@ page contentType="text/html;charset=UTF-8" language="java" %>EL表達(dá)式運(yùn)算符<%--    empty--%><%
        String str1 = null;
        String str2 = "";
        int[] arr = {};
    %>${empty str1}
${empty str2}
${empty arr}
<%-- 三元表達(dá)式--%><% pageContext.setAttribute("gender","women"); %>gender == "men" ? "checked":""} />男gender == "women" ? "checked":""} />女
1.6 EL 表達(dá)式使用細(xì)節(jié)
  • EL 表達(dá)式能夠獲取四大域?qū)ο蟮臄?shù)據(jù),根據(jù)從小到大在域?qū)ο笾胁檎?/li>
  • 還有可以獲取 JSP 其他八個隱式對象,并調(diào)用其方法
  • 代碼演示
<%@ page contentType="text/html;charset=UTF-8" language="java" %>EL使用細(xì)節(jié)<%
//      pageContext.setAttribute("username","張三");
      request.setAttribute("username","張三");
//      session.setAttribute("username","張三");
//      application.setAttribute("username","張三");
    %>${username}
<%--獲取 JSP 其他八個隱式對象,并調(diào)用其方法--%>${pageContext.request.contextPath}
1.7 EL 表達(dá)式隱式對象

在這里插入圖片描述

  • 代碼演示
<%@ page contentType="text/html;charset=UTF-8" language="java" %>EL表達(dá)式11個隱式對象<%--pageContext對象 可以獲取其他三個域?qū)ο蠛蚃SP中八個隱式對象--%>${pageContext.request.contextPath}
<%--applicationScope sessionScope requestScope pageScope 操作四大域?qū)ο笾械臄?shù)據(jù)--%><% request.setAttribute("username","zhangsan"); %>${username}
${requestScope.username}
<%--header headerValues 獲取請求頭數(shù)據(jù)--%>${header["connection"]}
${headerValues["connection"][0]}
<%--param paramValues 獲取請求參數(shù)數(shù)據(jù)--%>${param.username}
${paramValues.hobby[0]}
${paramValues.hobby[1]}
<%--initParam 獲取全局配置參數(shù)--%>${initParam["pname"]}
<%--cookie 獲取cookie信息--%>${cookie}
<%--獲取Map集合--%>${cookie.JSESSIONID}
<%--獲取map集合中第二個元素--%>${cookie.JSESSIONID.name}
<%--獲取cookie對象的名稱--%>${cookie.JSESSIONID.value}<%--獲取cookie對象的值--%>
2 JSTL 2.1 JSTL 介紹
  • JSTL:JSP 標(biāo)準(zhǔn)標(biāo)簽庫
  • 主要提供給開發(fā)人員一個標(biāo)準(zhǔn)通用的標(biāo)簽庫
  • 開發(fā)人員可以利用這些標(biāo)簽取代 JSP 頁面上的 Java代碼,從而提高程序的可讀性,降低程序的維護(hù)難度
    在這里插入圖片描述
2.2 JSTL 核心標(biāo)簽庫

在這里插入圖片描述

2.3 JSTL基本使用
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>流程控制<%--    向域?qū)ο笾刑砑訑?shù)據(jù)--%>${pageContext.setAttribute("score","T")}
<%--    對成績進(jìn)行判斷--%>  優(yōu)秀<%--    對成績進(jìn)行多條件判斷--%>優(yōu)秀良好及格較差成績非法
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>循環(huán)<%
        ArrayListlist = new ArrayList<>();
        list.add("aa");
        list.add("bb");
        list.add("cc");
        list.add("dd");
        pageContext.setAttribute("list",list);
    %>${str}
3 Filter 3.1 過濾器介紹
  • 過濾器——Filter,它是JavaWeb三大組件之一。另外兩個是Servlet和Listener。
  • 它是在2000年發(fā)布的Servlet2.3規(guī)范中加入的一個接口。是Servlet規(guī)范中非常實用的技術(shù)。
  • 它可以對web應(yīng)用中的所有資源進(jìn)行攔截,并且在攔截之后進(jìn)行一些特殊的操作。
  • 常見應(yīng)用場景:URL級別的權(quán)限控制;過濾敏感詞匯;中文亂碼問題等等。
  • 過濾器一般用于完成通用操作,例如:登錄驗證、統(tǒng)一編碼處理、敏感字符過濾等等…
3.2 Filter 介紹
  • Filter 是一個借口。如果想實現(xiàn)過濾器的功能,必須實現(xiàn)該接口!
  • 核心方法
    在這里插入圖片描述
  • 配置方式
    注解方式
    配置文件
3.3 FilterChain 介紹
  • FilterChain 是一個接口,代表過濾器鏈對象,由 Servlet 容器提供實現(xiàn)類對象,直接使用即可
  • 過濾器可以定義多個,就會組成過濾器鏈
    在這里插入圖片描述

    如果有多個過濾器,在第一個過濾器中調(diào)用下一個過濾器,依次類推。直到到達(dá)最終訪問資源
    如果只有一個過濾器,放行時,就會直接到達(dá)最終訪問資源
3.4 過濾器的使用
  • 需求說明
    通過 Filter 過濾器解決多個資源寫出中文亂碼的問題
  • 最終目的
    通過本需求,最終掌握 Filter 過濾器的作用
  • 代碼演示
@WebServlet("/servletDemo01")
public class ServletDemo01 extends HttpServlet {@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("ServletDemo01執(zhí)行了...");

        resp.getWriter().write("ServletDemo01執(zhí)行了...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);
    }
}
@WebServlet("/servletDemo02")
public class ServletDemo02 extends HttpServlet {@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("ServletDemo02執(zhí)行了...");

        resp.getWriter().write("ServletDemo02執(zhí)行了...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);
    }
}
@WebFilter("/*")
public class FilterDemo01 implements Filter {@Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("filterDemo01執(zhí)行了...");

        servletResponse.setContentType("text/html;charset=UTF-8");

        filterChain.doFilter(servletRequest,servletResponse);
    }
}
3.5 過濾器使用細(xì)節(jié)
  • 配置方式
    注解方式@WebFilter(攔截路徑)
    配置文件方式
    在這里插入圖片描述
  • 多個過濾器使用順序
    如果有多喝過濾器,取決于過濾器映射的順序
3.6 過濾器生命周期
  • 創(chuàng)建
    當(dāng)應(yīng)用加載時實例化對象并執(zhí)行 init 初始化方法
  • 服務(wù)
    對象提供服務(wù)的過程,執(zhí)行 doFilter 方法
  • 銷毀
    當(dāng)應(yīng)用卸載時或服務(wù)器停止時對象銷毀,執(zhí)行 destroy 方法
3.7 FilterConfig

在這里插入圖片描述

  • FilterConfig 是一個接口??梢约虞d一些初始化參數(shù)
  • 核心方法
    在這里插入圖片描述
  • 代碼演示
public class FilterDemo03 implements Filter {@Override
    public void init(FilterConfig filterConfig) throws ServletException {System.out.println("對象創(chuàng)建了...");

        String filterName = filterConfig.getFilterName();
        System.out.println(filterName);

        String username = filterConfig.getInitParameter("username");
        System.out.println(username);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("filterDemo01執(zhí)行了...");

        servletResponse.setContentType("text/html;charset=UTF-8");

        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {System.out.println("對象銷毀了...");
    }
}
  • 配置文件
filterDemo03com.txt.filter.FilterDemo03usernamezhangsanfilterDemo03/*
3.8 過濾器的五種攔截行為
  • Filter 過濾器默認(rèn)攔截的是請求,但在實際開發(fā)中,我們還有請求轉(zhuǎn)發(fā)和請求包含,以及由服務(wù)器觸發(fā)調(diào)用的全局錯誤頁面,默認(rèn)情況下過濾器是不參與過濾的,想要使用,就需要我們配置
    在這里插入圖片描述
4 Listener 4.1 監(jiān)聽器介紹
  • 觀察者設(shè)計模式,所有監(jiān)聽器都是基于觀察者設(shè)計模式的
  • 三個組成部分
    事件源:觸發(fā)事件的對象
    事件:觸發(fā)的動作,封裝了事件源
    監(jiān)聽器:當(dāng)事件源觸發(fā)事件后,可以完成的功能
  • 在程序當(dāng)中,我們可以對:對象的創(chuàng)建銷毀、域?qū)ο笾袑傩缘淖兓?、會話相關(guān)內(nèi)容進(jìn)行監(jiān)聽
4.2 監(jiān)聽對象的監(jiān)聽器
  • ServletContextListener:用于監(jiān)聽 ServletContext 對象的創(chuàng)建和銷毀
    在這里插入圖片描述
  • HttpSessionListener:用于監(jiān)聽 HttpSession 對象的創(chuàng)建和銷毀
  • 核心方法
    在這里插入圖片描述
  • ServletRequestListener:用于監(jiān)聽 ServletRequest 對象的創(chuàng)建和銷毀
  • 核心方法
    在這里插入圖片描述
4.3 監(jiān)聽域?qū)ο髮傩宰兓谋O(jiān)聽器
  • ServletContextAttributeListener:用于監(jiān)聽 ServletContext 應(yīng)用域中屬性的變化
  • 核心方法
    在這里插入圖片描述
  • HttpSessionAttributeListener:用于監(jiān)聽 HttpSession 會話域中屬性的變化
  • 核心方法
  • ServletRequestAttributeListener:用于監(jiān)聽 ServletRequest 請求域中屬性的變化
  • 核心方法
    在這里插入圖片描述
4.4 監(jiān)聽會話相關(guān)的感知性監(jiān)聽器
  • HttpSessionBindingListener:用于感知對象和會話域綁定的監(jiān)聽器
  • 核心方法
    在這里插入圖片描述
  • HttpSessionActivationListener:用于感知會話域中對象鈍化和活化的監(jiān)聽器
  • 核心方法
    在這里插入圖片描述
4.5 監(jiān)聽器的使用
  • 代碼演示
@WebListener
public class ServletContextListenerDemo implements ServletContextListener {@Override
    public void contextInitialized(ServletContextEvent sce) {System.out.println("監(jiān)聽到了對象的創(chuàng)建...");

        ServletContext servletContext = sce.getServletContext();
        System.out.println(servletContext);
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {System.out.println("監(jiān)聽到了對象的銷毀...");
    }
}
  • ServletContextAttributeListener 代碼演示
@WebListener
public class ServletContextAttributeListenerDemo implements ServletContextAttributeListener {@Override
    public void attributeAdded(ServletContextAttributeEvent scae) {System.out.println("監(jiān)聽到了屬性的添加...");

        ServletContext servletContext = scae.getServletContext();
        Object username = servletContext.getAttribute("username");
        System.out.println(username);
    }

    @Override
    public void attributeRemoved(ServletContextAttributeEvent scae) {System.out.println("監(jiān)聽到了屬性的移除...");

        ServletContext servletContext = scae.getServletContext();
        Object username = servletContext.getAttribute("username");
        System.out.println(username);
    }

    @Override
    public void attributeReplaced(ServletContextAttributeEvent scae) {System.out.println("監(jiān)聽到了屬性的修改...");

        ServletContext servletContext = scae.getServletContext();
        Object username = servletContext.getAttribute("username");
        System.out.println(username);
    }
}
@WebListener
public class ServletContextListenerDemo implements ServletContextListener {@Override
    public void contextInitialized(ServletContextEvent sce) {System.out.println("監(jiān)聽到了對象的創(chuàng)建...");

        ServletContext servletContext = sce.getServletContext();
        servletContext.setAttribute("username","zhangsan");

        servletContext.setAttribute("username","lisi");

        servletContext.removeAttribute("username");
//        System.out.println(servletContext);
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {System.out.println("監(jiān)聽到了對象的銷毀...");
    }
}

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

分享文章:EL表達(dá)式&過濾器&監(jiān)聽器-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://www.muchs.cn/article30/pceso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)手機(jī)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、電子商務(wù)、網(wǎng)頁設(shè)計公司ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)