JavaWeb —— JSP 總結

來源:互聯網
上載者:User

標籤:定位   即時   頭資訊   關閉   系統資訊   標籤   utf-8   元素   https   

                                         JSP總結

靜態網頁
  在網站設計中,純粹HTML(標準通用標記語言 (SGML)下的一個應用)格式的網頁通常被稱為“靜態網頁”,靜態網頁是標準的HTML檔案,它的副檔名是.htm、.html  。靜態網頁是網站建設的基礎,早期的網站一般都是由靜態網頁製作的。靜態網頁是相對於動態網頁而言,是指沒有後台資料庫、不含程式和不可互動的網頁。

動態網頁
  網頁檔案裡包含了程式碼,通過後台資料庫與WEB伺服器的資訊互動,由後台資料庫提供即時資料更新和資料查詢服務。動態網站體現在網頁一般是以asp,jsp,php,aspx等結束。

兩者區別
  網頁製作使用的製作語言:靜態網頁使用語言:超文字標記語言 (HTML)(標準通用標記語言 (SGML)的一個應用); 動態網頁使用語言:超文字標記語言 (HTML)+ASP或超文字標記語言 (HTML)+PHP或超文字標記語言 (HTML)+JSP等。
  程式是否在伺服器端運行,是重要標誌。在伺服器端啟動並執行程式、網頁、組件,屬於動態網頁,它們會隨不同客戶、不同時間,返回不同的網頁, ASP、PHP、JSP、ASPnet、CGI等。運行於用戶端的程式、網頁、外掛程式、組件,屬於靜態網頁,例如 html 頁、Flash、JavaScript、VBScript等等,它們是永遠不變的。

常用的動態網頁技術
  ASP(Active Server Page)
  ASP技術是基於.NET平台的一種動態網頁技術。它有非常強大的幕後處理能力,但卻有一些安全性、穩定性、跨平台性的問題。ASP只支援Windows平台,對Linux、Unix不支援。

  PHP(Hypertext Preprocessor)
  PHP原始為Personal Home Page的縮寫,已經正式更名為(外文名:PHP: Hypertext Preprocessor,中文名:“超文本前置處理器”)是一種通用開源指令碼語言。文法吸收了C語言、Java的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP是HTML內嵌式的語言,這一點類似於ASP,並且PHP可以跨平台。但PHP的資料庫介面不規範。但是對每種資料庫介面的開發都不同極大地加重了開發人員的負擔,並且缺少企業級應用的支援。

  JSP/Servlet(Java Server Page)
  JSP技術在基於java的平台上廣泛地使用,是進行Java web開發的一種核心組件。JSP頁面由HTML代碼和嵌入在其中的Java指令碼組成。JSP可以一次編寫,到處運行。這一點JSP比PHP技術更有優勢,在不同的系統平台上運行,代碼不用做任何修改。

什麼是JSP
  JSP (Java Server Pages) 是java服務頁面,可以在HTML中嵌入Java指令碼代碼。
  JSP頁面元素:
  靜態內容:HTML靜態文本
  指 令:以"<%@" 開始,以"%>" 結束
  小指令碼:<%Java代碼%>
  運算式:<%=Java運算式%>
  聲明:<%! 方法%>
  注釋 :<!-- 用戶端可以查看到-->,<%-- 用戶端不能查看到--%>

JSP(一) 三大指令
  ① page 指令 
    通過設定內部的多個屬性定義整個頁面的屬性
    文法:
    <%@ page 屬性1="屬性值" 屬性2="屬性值1,屬性值2"… 屬性n="屬性值n"%>

  ② include 指令(靜態包含)
    將一些共性的內容寫入一個單獨的檔案中,然後通過include指令引用該檔案
    include(靜態包含):這種會將兩個頁面編譯成一個class,裡面的資源可以共用。(先包含再編譯)

  ③ taglib 指令
    在JSP頁面中匯入JSTL標籤庫,替換JSP中的Java程式碼片段
    文法:
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="別名"%>

JavaBean
  JavaBean的優勢
    解決代碼重複編寫,減少代碼冗餘
    功能區分明確
    提高了代碼的維護性
  JavaBean 分為: 資料Bean 和 業務Bean 
    資料Bean : 私人的屬性,預設的空構造,set、get方法  就是Java中的屬性類
    業務Bean : 使用資料Bean。

JSP(二)七大動作
  jsp動作(action)是指在運行期間的命令,常見的有:
  jsp:useBean
    jsp:setProperty
    jsp:getProperty
  jsp:include
  jsp:forward
    jsp:param
    jsp:plugin
  ① include
    include 動態包含(分別編譯):用jsp:include動作實現,它總是會檢查所含檔案中的變化,適合用於包含動態網頁面,並且可以帶參數。flush屬性: 用true ,表示頁面可重新整理。預設為false;在使用include命令時除非該命令被執行到,否則它是不會被Tomcat等JSP Engine編譯。
    文法: <jsp: include page="頁面路徑" flush="true" />

  jsp:include(動態包含):這種會編譯成兩個獨立的class,裡面的資源無法共用。(先編譯再包含)
  include(靜態包含):這種會將兩個頁面編譯成一個class,裡面的資源可以共用。(先包含再編譯)
  靜態include和動態include的區別?
    相同點:都會將頁面引入到另一個頁面中。
    不同點:
      靜態include會將引用的jsp檔案和當前的jsp檔案產生為一個class檔案,所以jsp中的變數是可以互相訪問,兩個頁面中應盡量避免命名衝突。
      動態include會產生兩個完全不同的class檔案,所以jsp中的變數不可以互相訪問。
      靜態包含不能傳參
    適用場合:
      靜態include不會檢查所含檔案的變化,適用於包含靜態頁面,直接將內容先包含後處理。
      動態include總是會檢查所含檔案中的變化,適合用於包含動態網頁面,並且可以帶參數,先編譯之後再進行處理。

  ② useBean
    useBean動作(jsp頁面使用javaBean的第二種方式),範圍預設為page(本頁面有效)
    文法: <jsp:useBean id="對象名" class="包名.類名" scope="作用範圍(page/request/application/session)"/>
    scope屬性用於指定JavaBean執行個體對象所儲存的域範圍,其取值只能是page、request、session和application四個值中的一個,其預設值是page。

  ③ getProperty
    getProperty動作(name為useBean動作中的id).從對象中取出屬性值:
    文法: <jsp:getProperty name="javaBean對象" property="javaBean對象屬性名稱" />

  ④ setProperty
    setProperty動作(name為useBean動作中的id):
    為對象設定屬性值:
    文法: <jsp:setProperty name="javaBean對象" property="javaBean對象屬性名稱" value="值"/>

  ⑤ param
    param動作:傳遞參數,到達跳轉頁面可以通過 request.getParameter("參數名")方式取出參數值
    文法: <jsp:include page="轉向頁面的url" >
          <jsp:param name="參數名1" value="參數值1"></jsp:param>
          <jsp:param name="參數名2" value="參數值2"></jsp:param>
      </jsp:include>
    或者: 
      <jsp:forward page="轉向頁面的url">
          <jsp:param name="參數名1" value="參數值1"></jsp:param>
          <jsp:param name="參數名2" value="參數值2"></jsp:param>
      </jsp:forward>

   ⑥ forward 動作:轉寄頁面
    文法: <jsp:forward page="login.jsp" />  相當於 request.getRequestDispatcher("轉寄頁面").forward(request,response);

   ⑦ plugin
    plugin動作:<jsp:plugin>:用於指定在用戶端啟動並執行外掛程式,不常用

JSP(三)九大內建對象
   JSP內建對象是 Web容器建立的一組對象
   JSP內建對象的名稱是JSP的保留字,JSP內建對象是可以直接在JSP頁面使用的對象,無需使用“new”,直接使用。
   JSP中一共預先定義了9個這樣的對象,分別為:request、response、session、application、out、pagecontext、config、page、exception。
  ①  request 對象 (範圍: 一次請求)
    request 對象是 javax.servlet.httpServletRequest 類型的對象。 該對象代表了用戶端的請求資訊,主要用於接受通過HTTP協議傳送到伺服器的資料。(包括頭資訊、系統資訊、請求方式以及請求參數等)。request對象的範圍為一次請求。
   常用方法:  
    String getParameter(String name)根據表單組件名稱擷取提交資料
    String[] getParameterValues(String name)擷取表單組件對應多個值時的請求資料
    void setCharacterEncoding(String charset)指定每個請求的編碼
    RequestDispatcher getRequestDispatcher(String path)返回一個RequestDispatcher對象,該對象的forward( )方法用於轉寄請求
    void setAttribute(String key,Object value)設定鍵對應屬性值
    Object getAttribute(String key)擷取鍵對應屬性值

  ②  response 對象
    response 對象是 javax.servlet.http.httpServletResponse 類型的對象。response 代表的是對用戶端的響應,主要是將JSP容器處理過的對象傳回到用戶端。response對象也具有範圍,它只在JSP頁面內有效。
    常用方法: 
      void sendRedirect (String location)將請求重新置放到一個不同的URL,即頁面重新導向

  頁面的轉寄
  轉寄的作用:在多個頁面互動過程中實現請求資料的共用
  轉寄的實現:RequestDispatcher對象.forward()方法

  重新導向與轉寄的區別
  區別一:
    重新導向時瀏覽器上的網址改變
    轉寄是瀏覽器上的網址不變
  區別二:
    重新導向實際上產生了兩次請求
    轉寄只一次請求
    重新導向:發送請求 -->伺服器運行-->響應請求,返回給瀏覽器一個新的地址與響應碼-->瀏覽器根據響應碼,判定該響應為重新導向,自動發送一個新的請求給伺服器,請求地址為之前返回的地址-->伺服器運行-->響應請求給瀏覽器
    轉寄:發送請求 -->伺服器運行-->進行請求的重新設定,例如通過request.setAttribute(name,value)-->根據轉寄的地址,擷取該地址的網頁-->響應請求給瀏覽器
  區別三:
  重新導向時的網址可以是任何網址

  轉寄的網址必須是本網站的網址

  轉寄
    轉寄是在伺服器端發揮作用,通過forward()將提交資訊在多個頁面間進行傳遞
    用戶端瀏覽器的地址欄不會顯示出轉向後的地址
    轉寄可以傳遞參數
    文法: request.getRequestDispatcher("轉寄網址").forward(request,response);
  重新導向
    重新導向是在用戶端發揮作用,通過請求新的地址實現頁面轉向
    在地址欄中可以顯示轉向後的地址
    重新導向不能進行參數傳遞
    文法: response.sendRedirect("重新導向網址");

  ③ session 對象(範圍: 一次會話)
    session 對象是 javax.servlet.http.HttpSession 類型的對象。session 對象是由伺服器自動建立的與使用者請求相關的對象。伺服器為每個使用者都產生一個session對象,用於儲存該使用者的資訊,跟蹤使用者的操作狀態。session對象內部使用Map類來儲存資料,因此儲存資料的格式為 “Key/value”。 session對象的value可以使複雜的物件類型,而不僅僅局限於字串類型。
    常用方法:
      void setAttribute(String key,Object value)以key/value的形式儲存對象值
      Object getAttribute(String key)通過key擷取對象值
      void invalidate()設定session對象失效
      String getId()擷取sessionid
      void setMaxInactiveInterval(int interval)設定session的非啟用時間
      int getMaxInactiveInterval()擷取session的有效非啟用時間(以秒為單位)
       void removeAttribute(String key)從session中刪除指定名稱(key)所對應的對象

  ④ application 對象(範圍: 一次服務)
    application 對象是 javax.servlet.ServletContext 類型的對象。application 對象可將資訊儲存在伺服器中,直到伺服器關閉,否則application對象中儲存的資訊會在整個應用中都有效。與session對象相比,application對象生命週期更長,類似於系統的“全域變數”。
    常用方法: 
      void setAttribute(String key,Object value)以key/value的形式儲存對象值
      Object getAttribute(String key)通過key擷取對象值
      void removeAttribute(String name)根據屬性名稱刪除對應的屬性
      String getRealPath(String path)返回相對路徑的真實路徑
      Enumeration getAttributeNames()擷取所的屬性名稱
      String getContextPath()擷取當前Web應用程式的根目錄
      String getInitParameter(String name)根據初始化參數名稱,擷取初始化參數值

  ⑤ out 對象
    out 對象是 javax.servlet.jsp.JspWriter 類型的對象。out 對象用於在Web瀏覽器內輸出資訊,並且管理應用伺服器上的輸出緩衝區。在使用 out 對象輸出資料時,可以對資料緩衝區進行操作,及時清除緩衝區中的殘餘資料,為其他的輸出讓出緩衝空間。待資料輸出完畢後,要及時關閉輸出資料流。

  ⑥ pageContext 對象
    pageContext 對象是 javax.servlet.jsp.PageContext 類型的對象。pageContext 對象的作用是取得任何範圍的參數,通過它可以擷取 JSP頁面的out、request、reponse、session、application 等對象。pageContext對象的建立和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。
    常用方法: 
      void setAttribute(String key,Object value)設定屬性值
      Object getAttribute(String key)擷取屬性值
      void removeAttribute(String key)移除指定屬性
      pageContext 本身也是一個域對象,可以操作其他三個域對象(request,response,application)的資料
    操作其他域對象的方法:
      void setAttribute(String key,Object value,int Scope)
      Object getAttribute(String key,int Scope)
      void removeAttribute(String key,int Scope)
      Scope:
        PageContext.PAGE_SCOPE;
        PageContext.REQUEST_SCOPE;
        PageContext.SESSION_SCOPE;
        PageContext.APPLICATION_SCOPE;


  ⑦ config 對象
    config 對象是 javax.servlet.ServletConfig 類型的對象。config 對象的主要作用是取得伺服器的配置資訊。通過 pageConext對象的 getServletConfig() 方法可以擷取一個config對象。當一個Servlet 初始化時,容器把某些資訊通過 config對象傳遞給這個 Servlet。 開發人員可以在web.xml 檔案中為應用程式環境中的Servlet程式和JSP頁面提供初始化參數。
  

  ⑧ page 對象(範圍: 一個頁面)
    page 對象是 java.lang.Object 類型的對象。page 對象代表JSP本身,只有在JSP頁面內才是合法的。 page隱含對象本質上包含當前 Servlet介面引用的變數,類似於Java編程中的 thi  ⑨ exception 對象

    exception 對象是 java.lang.Throwable 類型的對象。exception 對象的作用是顯示異常資訊,只有在包含 isErrorPage="true" 的頁面中才可以被使用,在一般的JSP頁面中使用該對象將無法編譯JSP檔案。
    常用方法: 
      String getMessage()返回描述異常的訊息
      String toString()返回關於異常的簡短描述訊息
      void printStackTrace()顯示異常及其棧軌跡
      Throwable FillInStackTrace()重寫異常的執行棧軌跡

  在版面設定支援中文字元的字元集
    亂碼處理方式一(以GET方式提交資料時)
      <%
          //讀取使用者名稱和密碼
          String name = request.getParameter("name");
          //對請求資料進行字元編碼
          name = new String(name.getBytes("ISO-8859-1"), "utf-8");
            %>

    亂碼處理方式二(以POST方式提交資料時)
      <%    
          //設定讀取請求資訊的字元編碼為UTF-8
          request.setCharacterEncoding("utf-8");  
          //讀取使用者名稱和密碼
          String name = request.getParameter("name");
          String pwd = request.getParameter("pwd");
         %>

    亂碼處理方式三(以GET方式提交資料時)
      <!--在Tomcat目錄結構\conf\server.xml中設定字元集-->
        <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>

cookie的簡介

  cookie是Web伺服器儲存在用戶端的一系列文本資訊
  cookie的作用
    對特定對象的追蹤
    統計網頁瀏覽次數
    簡化登入
  安全效能:容易資訊泄露
  在JSP中使用cookie
    建立cookie對象
      Cookie newCookie = new Cookie(String key,Object value);
    寫入cookie
      response.addCookie(newCookie);
    讀取cookie
      Cookie[] cookies = request.getCookies();
    常用方法:
      void setMaxAge(int expiry)設定cookie的有效期間,以秒為單位
      void setValue(String value)在cookie建立後,對cookie進行賦值
      String getName()擷取cookie的名稱
      String getValue()擷取cookie的值
      String getMaxAge()擷取cookie的有效時間,以秒為單位

  Session和cookie的區別與聯絡
     cookie是把使用者的資料寫在使用者本地瀏覽器上, 其他網站也可以掃描使用你的cookie,容易泄露自己網站使用者的隱私,而且一般瀏覽器對單個網站網站有cookie數量與大小的限制。
     Session是把使用者的資料寫在使用者的獨佔session上,儲存在伺服器上,一般只將session的id儲存在cookie中。但將資料存放區在伺服器對伺服器的成本會高。
     session是由伺服器建立的,開發人員可以在伺服器上通過request對象的getsession方法得到session
     一般情況,登入資訊等重要訊息儲存在session中,其他資訊儲存在cookie中

session的實現原理

    伺服器會為每一個訪問伺服器的使用者建立一個session對象,並且把session對象的id儲存在本地cookie上,只要使用者再次訪問伺服器時,帶著session的id,伺服器就會匹配使用者在伺服器上的session,根據session中的資料,還原使用者上次的瀏覽狀態或提供其他人性化服務。

cookie與session的對比
  session
    儲存在伺服器端使用者資訊
    session中儲存的是Object類型
    隨會話的結束而將其儲存的資料銷毀
    儲存重要的資訊
  cookie
    在用戶端儲存使用者資訊
    cookie儲存的是 String類型
    cookie可以長期儲存在用戶端
    儲存不重要的使用者資訊


---------------------------------------------------------------JSP完結-----------------------------------------------------------

JavaWeb —— JSP 總結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.