JSP技術(筆記)

JSP技術: jsp概述、 jsp基本語法、jsp的隱式對象、jsp指令、 jsp動做元素、經過jsp作兩個頁面

  1. JSP概述:
    1.1什麼是jsp:它的英文全稱java server pages ,java服務端 頁面,它是創建在servlet規範基礎上的動態網頁開發技術。html

    • java服務端頁面:在jsp上能夠寫java代碼, 也能夠寫html標記, 它運行在服務器端。
    • jsp = java + html + jsp自身的一一些東西。
      爲何會產生jsp技術:
      由於在早期沒有jsp時,須要servlet向頁面寫數據,比較麻煩,因此就產生了jsp技術,
      jsp最大的特色:能夠很是簡單的書寫頁面。
      jsp其實它的本質是serv1et.

    1.2編寫第一個jsp文件: jsp生 成java文件,編譯成class文件,存在tomcat服務 器的work目錄。
    注意:修改jsp的默認編碼格式: wind-------->perferee-----> 搜索jsp ---->選中編碼進行修改java

    1.3 JSP運行原理:
    1.經過瀏覽器首次訪問jsp時
    2.JSP容器會生成對應的Servlet文件,也就是.java文件
    3.JSP容器,會把java文件編譯對應的class文件
    4.JSP容器,會生成對應的servlet對象
    5.經過生成的servlet對象,去處理瀏覽器發送的請求,響應數據給瀏覽器。瀏覽器

  2. JSP基本語法
    1.1 JSP腳本元素
    在jsp頁面書寫java的三種形式:
    1.能夠聲明語句和方法
    2.能夠書寫java代碼段
    3.能夠書寫表達式tomcat

    1. JSP Scriptlets: 對應的位置生成在_jspService方 法內部。
      在jsp頁面裏能夠書寫java代碼片斷,基本語法: <% java代碼片斷 %>
    2. JSP聲明語句:對應的位置生成在了成員位置。
      在jsp裏面能夠書寫變量和方法:基本語法:
      <%!
      定義變量或者方法
      %>
    3. JSP表達式:對應的位置生成在_jspService方法內部。
      在jsp頁面,能夠輸入一個結果,基本語法: <%=表達式 %>,其實就等同於out.print();
      注意:表達式後面不能書寫分號

    1.2 JSP註釋:
    在jsp裏面,能夠書寫htm1,能夠書寫java,能夠書寫jsp自身的一些內容。
    在jsp裏面寫註釋三種形式:服務器

    1. html註釋: <!-- html註釋-->:在任何地方都存在了。
      2.java註釋:單行,多行,文檔註釋:它存在jsp頁面,也存在java文件 裏面,對應生成的html就消失了
    2. jsp註釋: <%-- jsp註釋-->:只存在jsp頁面,在生成對應的java文件時,它就消失了。

3.JSP 指令: page指令、include指令、taglib指令
1.1 page指令
page指令的用途是設置與jsp頁面相關的信息,好比說設置jsp頁面的編碼,jsp頁 面的默認語言等
基本語法格式: <@ page屬性-"屬性值"屬性-"屬住值"屬性-"屬性值" %>
好比:
<%@ page language="java" contentType=" text/html; charset-UTF-8" pageEncoding="UTF-8"%>
經常使用屬性:
language:默認語言java,也就是隻有java-種語言。
pageEncoding:設置jsp的編碼格式。_ 般狀況下能夠省略contentType這個屬性。
session屬性:值得類型是boolean,若是對應的值是true,在jsp頁面可使用session對象,反之就不能使用。
import屬性:到包,和在java裏面使用同樣,若是想使用某個類,前提導入某個類的包名。
。。。。。。session

1.2 include指令:| I
    在jsp頁面一般會須要顯示其它頁面的信息,因此能夠經過這個include指令把其它頁面包含過來。
    基本語法: <%@ include file="被包含文件的url" %>
    建立兩個jsp頁面: date. jsp頁面,include. jsp頁面.
    使用jsp的include指令實現的包含,又稱爲靜態包含,靜態包含的特色:
        1.把多個頁面的內容,合併輸出,好比把date.jsp 和include.jsp內容合併輸出。
        2.多個頁面對應生成一個java文件,編譯後,對應一個class文件。
  1. JSP隱式對象
    1.1 什麼是隱式對象:在jsp頁面裏面,jsp提供了一-些對象,不用我們本身建立,能夠直接使用的對象。
    jsp常見的九大隱式對象:
    request: HttpServletRequest, 請求對象,它同時也是域對象,做用範圍一次請求
    response :HttpServletResponse,響應對象
    session: HttpSession , 會話對象,它同時也是域對象,做用範圍一次會話
    application:ServletContext,上下文對象,它同時也是域對象,做用範圍整個項目
    config:ServletConfig,配置對象
    out: JspWriter ,其實和PrintWriter做用差很少。
    page:0bject , 表明當前jsp的頁面對象
    pageContext:PageContext , jsp容器
    exception: Throwable,異常對象,用來捕獲異常信息。
    只有當前jsp頁面有isErrorPage="true"這個屬性時,才能使用exception對象。app

    1.2 out對象
    out對象在輸出內容到網頁上面去,最終是經過reponse緩衝區給輸出。jsp

    1.3 pageContext對象
    第一個功能:獲取其它八個隱式對象ide

    1.獲取請求對象: getRequest();
    2.獲取響應對象: getResponse();ui

    1. 獲取輸出對象: getout();

      第二個功能:操做其它三個域對象: request. session. application.
      pageContext也是一個域對象: 做用範圍在當前jsp頁面. .
      操做其它三個域對象的方法:
      1.存值: setAttribute(String key,0bject obj,int scope);
      APPLICATION SCOPE : 對應的是application
      REQUEST
      SCOPE:對應的是request
      SESSION SCOPE: 對應的是session
      PAGE
      SCOPE: 對應的是本身pageContext
      2.取值: getAttr ibute(String key,int scope);

    結論:在pageContext域對 象使用findAttribute方法獲取值,進行了全域查找,
        查找的範圍: pageContext --->request----->session----->applicat ion
        首先找域做用範圍小的對象,若是有值,獲取到,若是域做用範圍小的對象,不存在對應的值,就繼續向下尋找。

    1.4 exception對象I
    它是用來捕獲異常信息的。
    會用到兩個屬性:

    errorPage:屬性對應的值,處理異常信息的頁面,就是說在當前頁面發生了異常,跳轉處處理異常信息的頁面
    好比:
    <%@ page language=" java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="error.jsp"%>
    <!DOCTYPE html PUBLIC " -//M3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/htm14/loose.dtd">;
    <html>
    <head>
    <meta http- equiv="Content-Type" content="text/html; charset=UTF-8" >
    <title>Insert title here</title>
    </head>
    <body>
    <%
    int a=3;
    int b=0;
    %>
    輸出: <%=(a/b) %>
    isErrorPage: 屬性對應的值是true或者false,若是爲true,在當前頁面可使用exception對象

    好比: 
            <%@ page language-"java" contentType -"text/html; charset=UTF -8"
            pageEncoding="UTF -8」isErrorPage="true"%>
            <!DOCTYPE html PUBLIC " -//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/htm14/1oose.dtd">
            <html>
            <head>
            <meta http- equiv="Content- Type" content=" text/html; charset=UTF-8">
            <title>Insert title here</title>
            </head>
            <body>
                輸出異常信息: <%=exception.getMessage()>
            </body>
            </html>

5.JSP動做元素
1.1 <jsp: include>動做元素:動態包含
動態包含:把其它資源頁面的內容,合併到當前要包含的頁面,最後- -塊輸出。
基本語法格式: <jsp: include page="被包含頁面的url" flush="true或者 false" ><jsp: include>
動態包含特色:多個頁面的內容合併輸出,多個jsp頁面生成多個java文件,編譯成多個class文件
靜態包含特色:多個頁面的內容合併輸出,多個jsp頁面最終生成一個java文件, 編譯一個class文件。

1.2 <jsp: forward>動做元素:請求轉發。
    它的做用實現請求轉發,效果等同於RequestDispathcer對象的forward方法。
    基本語法格式: <jsp: forward page="轉發頁面的ur1地址"></jsp: forward>
    轉發頁面的ur1地址:不須要攜帶項目名稱,由於轉發動做是服務器內部行爲。

6.階段案例:傳智書城JSP頁面1.實現首頁面注意事項:1.在html網頁不能書寫與jsp相關的內容。2.${pageContext . request. contextPath}:做用就是獲取項目名稱的路徑,好比: /chapter06設計首頁面步驟:1.建立一個index. jsp頁面,在這裏實現跳轉到首頁面的效果<jsp: forward page=" 」></jsp:forward>2.修改client目錄下面的全部html文件,修改爲jsp,爲了 就是jsp知識點。3.把client目錄下面的首頁面分離出來幾個jsp文件,分離的jsp文件比較通用性,在其它頁面也能用到,分離的目的:提升代碼的複用性。分離index. jsp頁面:第一部分:導航菜單,對應head.jsp第二部分:搜索欄,對應menu_ search.jsp第三部分:底部信息,對應foot.jsp在index. jsp頁面引入分離的文件: <%@ include file="" %>

相關文章
相關標籤/搜索