java web相關(guān)知識(shí)點(diǎn)總結(jié)——關(guān)乎jsp、JavaScript、EL、JSTL、Filter 、Listener(包含思維導(dǎo)圖))

JSP

概念

JSP全稱(chēng)Java Server Page(Java服務(wù)端頁(yè)面),通俗上來(lái)講就是可以編寫(xiě)Java代碼的HTML頁(yè)面。在最早期是沒(méi)有JSP的,那么后端開(kāi)發(fā)人員想要展示一個(gè)網(wǎng)頁(yè),就是在Servlet中 拼接html. 于是就有了JSP, 但是JSP不是一門(mén)新的技術(shù),他的本質(zhì)上還是Servlet, 意思是服務(wù)器還是會(huì)將 JSP 轉(zhuǎn)成Java代碼,在Java代碼中,還是去拼接的頁(yè)面。

編譯指令

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

contentType:內(nèi)容類(lèi)型;
language: 頁(yè)面的語(yǔ)言
import: java.lang.? 、javax.servlet.?、javax.servlet.jsp.?、javax.servlet.http.*四個(gè)包不需要顯式的導(dǎo)入。

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

用法是在file中書(shū)寫(xiě)另外一個(gè)jsp頁(yè)面,該指令是一個(gè)編譯期的行為。

  • 標(biāo)簽庫(kù)指令
  <%@ taglib %>

標(biāo)簽庫(kù)指令是講到j(luò)stl的時(shí)候會(huì)用到。

  • JSP聲明

腳本語(yǔ)法

  • 注釋

    html注釋

  <!-- -->

隱藏注釋

  <%-- --%>
  • 腳本段
  <%-- --%>
  • jsp聲明與表達(dá)式

    聲明:<%! int a = 3 %>
    表達(dá)式:<%=a%>

動(dòng)作指令或者標(biāo)準(zhǔn)動(dòng)作

- jsp:include
  <jsp:include page=""></jsp:include>
include的動(dòng)作指令與編譯指令,最大的區(qū)別在于動(dòng)作指令是一個(gè)運(yùn)行期的行為,就在在代碼的運(yùn)行階段才會(huì)將頁(yè)面拼接到一起,而include的編譯指令是一個(gè)編譯期的行為,即頁(yè)面是在編譯階段就已經(jīng)合并到一起了。
  • jsp:forward與jsp:param
  <jsp:forward page="forwarded.jsp">
     <jsp:param name="username" value="zhangsan"/>
  </jsp:forward>
jsp:forward指令的意思是直接跳轉(zhuǎn)到page對(duì)應(yīng)的頁(yè)面,可以通過(guò) jsp:param攜帶參數(shù)。而到被跳轉(zhuǎn)的
頁(yè)面可以直接通過(guò) request(jsp內(nèi)置對(duì)象) 來(lái)獲取參數(shù)的值,獲取的方式如下:
  <%
    String name = request.getParameter("username");
  %>
  <%=name %>
- jsp:useBean、jsp:setProperty、jsp:getProperty
  <%-- 相當(dāng)于實(shí)例化了一個(gè)對(duì)象:User user = new User() --%>
  <jsp:useBean id="user" class="com.qf.domain.User"/>
  <%-- 相當(dāng)于 user.setUsername("張三") --%>
  <jsp:setProperty name="user" property="username" value="張三"></jsp:setProperty>
  <%-- 相當(dāng)于 user.getUsername() --%>
  <jsp:getProperty name="user" property="username"/>

jsp九大內(nèi)置對(duì)象

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

最常用的有四個(gè):request,response,session,application

EL

  • 概念

    • El(Expression Language),全稱(chēng)表達(dá)式語(yǔ)言,目的是盡量的消除JSP頁(yè)面中的java代碼
  • 使用樣例

  ${param.username}       # 相當(dāng)于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}         # 會(huì)按照request -> session -> application的順序查找
  {empty requestScope.gender}  #判斷一個(gè)數(shù)據(jù)是否為null, 或者一個(gè)字符串為空或""
  ${empty requestScope.gender ? "默認(rèn)值" : requestScope.gender}

JSTL

  • 概念

    • JSTL(jsp standard tag library)全稱(chēng)為"標(biāo)準(zhǔn)標(biāo)簽庫(kù)",使用一套標(biāo)準(zhǔn)的標(biāo)簽庫(kù),來(lái)極大的簡(jiǎn)化代碼的編寫(xiě),必須要配置EL來(lái)使用
  • 使用樣例

  1) 引入javax.servlet.jsp.jstl.jar和jstl-impl.jar兩個(gè)jar包
          2) 在jsp頁(yè)面的頭頂加上標(biāo)準(zhǔn)標(biāo)簽庫(kù)指令:
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  

if語(yǔ)法

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

多個(gè)條件

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

Filter 、Listener

Filter(過(guò)濾器)

分析請(qǐng)求,將請(qǐng)求發(fā)送給指定的資源或自己創(chuàng)建一個(gè)響應(yīng)返回。
在請(qǐng)求到達(dá)服務(wù)器前處理請(qǐng)求,設(shè)置頭請(qǐng)求信息,將請(qǐng)求封裝成符合規(guī)則的對(duì)象。
在響應(yīng)到達(dá)客戶(hù)端處理響應(yīng),將響應(yīng)封裝成符合規(guī)則的對(duì)象。
過(guò)濾器的用途:
認(rèn)證過(guò)濾
令牌過(guò)濾
登錄和審核過(guò)濾
圖像裝換過(guò)濾
數(shù)據(jù)壓縮過(guò)濾
編碼步驟:
編碼,實(shí)現(xiàn)Filter接口
部署,在web.xml配置
運(yùn)行測(cè)試

  • 過(guò)濾器是一個(gè)用于攔截在數(shù)據(jù)源和數(shù)據(jù)目的地之間消息的一個(gè)對(duì)象。

    • Filter接口中的方法

    • init();

    • doFailter();

    • destroy();

Listener(監(jiān)聽(tīng)器)

  • 當(dāng)服務(wù)器發(fā)生了某個(gè)事件(Event)時(shí),調(diào)用事件處理程序。

  • servletContext
    - 實(shí)現(xiàn)的接口:servletContextListener

    • ServletRequest

      • 實(shí)現(xiàn)的接口:ServletRequestListener
    • HttpSession

      • 實(shí)現(xiàn)的接口:HttpSessionListener
  • 常用用途

    統(tǒng)計(jì)在線人數(shù):HttpSessionListener
    加載初始化信息:servletContextListener
    統(tǒng)計(jì)在線人數(shù)
    實(shí)現(xiàn)訪問(wèn)監(jiān)控

Cookie 、Session

Cookie

使用步驟:
1. 創(chuàng)建Cookie對(duì)象,綁定數(shù)據(jù)

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

    • 特點(diǎn)

      1. cookie存儲(chǔ)數(shù)據(jù)在客戶(hù)端瀏覽器
      2. 瀏覽器對(duì)于單個(gè)cookie 的大小有限制(4kb) 以及 對(duì)同一個(gè)域名下的總cookie數(shù)量也有限制(20個(gè))
    • 作用

      作用:
      1. cookie一般用于存出少量的不太敏感的數(shù)據(jù)
      2. 在不登錄的情況下,完成服務(wù)器對(duì)客戶(hù)端的身份識(shí)別

Session

  • 概念::服務(wù)器端會(huì)話(huà)技術(shù),在一次會(huì)話(huà)的多次請(qǐng)求間共享數(shù)據(jù),將數(shù)據(jù)保存在服務(wù)器端的對(duì)象中。HttpSession

  • 原理: Session的實(shí)現(xiàn)是依賴(lài)于Cookie的。

  • 特點(diǎn):

    1. session用于存儲(chǔ)一次會(huì)話(huà)的多次請(qǐng)求的數(shù)據(jù),存在服務(wù)器端
      1. session可以存儲(chǔ)任意類(lèi)型,任意大小的數(shù)據(jù)

Session與cookie的區(qū)別

  1. session存儲(chǔ)數(shù)據(jù)在服務(wù)器端,Cookie在客戶(hù)端
    2. session沒(méi)有數(shù)據(jù)大小限制,Cookie有
    3. session數(shù)據(jù)安全,Cookie相對(duì)于不安全
javaWeb知識(shí)點(diǎn).png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Servlet Java Servlet 是運(yùn)行在 Web 服務(wù)器或應(yīng)用服務(wù)器上的程序,它是作為來(lái)自 Web ...
    千淘萬(wàn)漉閱讀 13,373評(píng)論 1 9
  • 這部分主要是與Java Web和Web Service相關(guān)的面試題。 96、闡述Servlet和CGI的區(qū)別? 答...
    雜貨鋪老板閱讀 1,503評(píng)論 0 10
  • IOC 控制反轉(zhuǎn)容器控制程序?qū)ο笾g的關(guān)系,而不是傳統(tǒng)實(shí)現(xiàn)中,有程序代碼之間控制,又名依賴(lài)注入。All 類(lèi)的創(chuàng)建,...
    irckwk1閱讀 1,097評(píng)論 0 0
  • 1.Servlet和jsp頁(yè)面過(guò)濾器Filter的作用及配置 【參考答案】 過(guò)濾器是一個(gè)駐留在服務(wù)器端的Web組件...
    碼記閱讀 525評(píng)論 0 0
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,012評(píng)論 0 11

友情鏈接更多精彩內(nèi)容