javaWeb知識點總結—— 關乎JSP、JSTL、Filter、Listener的知識(含詳細思維導圖)

javaWeb知識點

JSP

概念

JSP全稱Java Server Page(Java服務端頁面),通俗上來講就是可以編寫Java代碼的HTML頁面。在最早期是沒有JSP的,那麼後端開發人員想要展示一個網頁,就是在Servlet中 拼接html. 於是就有了JSP, 但是JSP不是一門新的技術,他的本質上還是Servlet, 意思是服務器還是會將 JSP 轉成Java代碼,在Java代碼中,還是去拼接的頁面。

編譯指令

  • 頁指令
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" %>

contentType:內容類型;
language: 頁面的語言
import: java.lang.❄ 、javax.servlet.❄、javax.servlet.jsp.❄、javax.servlet.http.*四個包不需要顯式的導入。

  • 包含指令
  <%@ include file=”” %>

用法是在file中書寫另外一個jsp頁面,該指令是一個編譯期的行爲。

  • 標籤庫指令
  <%@ taglib %>

標籤庫指令是講到jstl的時候會用到。

  • JSP聲明

腳本語法

  • 註釋

    html註釋

  <!-- -->

隱藏註釋

  <%-- --%>
  • 腳本段
  <%-- --%>
  • jsp聲明與表達式

    聲明:<%! int a = 3 %>
    表達式:<%=a%>

動作指令或者標準動作

- jsp:include
  <jsp:include page=""></jsp:include>
include的動作指令與編譯指令,最大的區別在於動作指令是一個運行期的行爲,就在在代碼的運行階段纔會將頁面拼接到一起,而include的編譯指令是一個編譯期的行爲,即頁面是在編譯階段就已經合併到一起了。
  • jsp:forward與jsp:param
  <jsp:forward page="forwarded.jsp">
     <jsp:param name="username" value="zhangsan"/>
  </jsp:forward>
jsp:forward指令的意思是直接跳轉到page對應的頁面,可以通過 jsp:param攜帶參數。而到被跳轉的
頁面可以直接通過 request(jsp內置對象) 來獲取參數的值,獲取的方式如下:
  <%
    String name = request.getParameter("username");
  %>
  <%=name %>
- jsp:useBean、jsp:setProperty、jsp:getProperty
  <%-- 相當於實例化了一個對象:User user = new User() --%>
  <jsp:useBean id="user" class="com.qf.domain.User"/>
  <%-- 相當於 user.setUsername("張三") --%>
  <jsp:setProperty name="user" property="username" value="張三"></jsp:setProperty>
  <%-- 相當於 user.getUsername() --%>
  <jsp:getProperty name="user" property="username"/>

jsp九大內置對象

request 、response、pageContext、session、application、out、congif、
page、exception

最常用的有四個:request,response,session,application

EL

  • 概念

    • El(Expression Language),全稱表達式語言,目的是儘量的消除JSP頁面中的java代碼
  • 使用樣例

  ${param.username}       # 相當於request.getParameter(“”)
  ${sessionScope.name}      # session.getAttribute(“name”)
  ${applicationScope.name}    # application.getAttribute(“name”);
  ${requestScope.name}      # request.getAttribute(“name”)
  ${3 + 4}  
  ${7 * 8}  
  ${8 / 7}
  ${sessionScope.user.name}   # 獲取session中user的name屬性
  ${user.name}         # 會按照request -> session -> application的順序查找
  {empty requestScope.gender}  #判斷一個數據是否爲null, 或者一個字符串爲空或""
  ${empty requestScope.gender ? "默認值" : requestScope.gender}

JSTL

  • 概念

    • JSTL(jsp standard tag library)全稱爲"標準標籤庫",使用一套標準的標籤庫,來極大的簡化代碼的編寫,必須要配置EL來使用
  • 使用樣例

  1) 引入javax.servlet.jsp.jstl.jar和jstl-impl.jar兩個jar包
          2) 在jsp頁面的頭頂加上標準標籤庫指令:
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  

if語法

  <c:if test="${requestScope.age gt 18}">

多個條件

  <c:if test="${empty requestScope.gender && requestScope.age gt 18}">
  性別爲空,並且是成年人.
  </c:if>
- **多個條件**

Filter 、Listener

Filter(過濾器)

分析請求,將請求發送給指定的資源或自己創建一個響應返回。
在請求到達服務器前處理請求,設置頭請求信息,將請求封裝成符合規則的對象。
在響應到達客戶端處理響應,將響應封裝成符合規則的對象。
過濾器的用途:
認證過濾
令牌過濾
登錄和審覈過濾
圖像裝換過濾
數據壓縮過濾
編碼步驟:
編碼,實現Filter接口
部署,在web.xml配置
運行測試

  • 過濾器是一個用於攔截在數據源和數據目的地之間消息的一個對象。

    • Filter接口中的方法

    • init();

    • doFailter();

    • destroy();

Listener(監聽器)

  • 當服務器發生了某個事件(Event)時,調用事件處理程序。

  • servletContext
    - 實現的接口:servletContextListener

    • ServletRequest

      • 實現的接口:ServletRequestListener
    • HttpSession

      • 實現的接口:HttpSessionListener
  • 常用用途

    統計在線人數:HttpSessionListener
    加載初始化信息:servletContextListener
    統計在線人數
    實現訪問監控

Cookie 、Session

Cookie

使用步驟:
1. 創建Cookie對象,綁定數據

* new Cookie(String name, String value) 
	2. 發送Cookie對象
* response.addCookie(Cookie cookie) 
	3. 獲取Cookie,拿到數據
  • Cookie[] request.getCookies()
  • 概念:客戶端會話技術,將數據保存到客戶端

    • 特點

      1. cookie存儲數據在客戶端瀏覽器
      2. 瀏覽器對於單個cookie 的大小有限制(4kb) 以及 對同一個域名下的總cookie數量也有限制(20個)
    • 作用

      作用:
      1. cookie一般用於存出少量的不太敏感的數據
      2. 在不登錄的情況下,完成服務器對客戶端的身份識別

Session

  • 概念::服務器端會話技術,在一次會話的多次請求間共享數據,將數據保存在服務器端的對象中。HttpSession

  • 原理: Session的實現是依賴於Cookie的。

  • 特點:

    1. session用於存儲一次會話的多次請求的數據,存在服務器端
      1. session可以存儲任意類型,任意大小的數據

Session與cookie的區別

  1. session存儲數據在服務器端,Cookie在客戶端
    2. session沒有數據大小限制,Cookie有
    3. session數據安全,Cookie相對於不安全

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章