首頁>技術>

1 課程回顧會話管理

1)會話管理: 管理瀏覽器和伺服器之間的會話過程中產生的會話資料

2)Cookie技術: 會話資料儲存在瀏覽器客戶端。

Cookie核心的API:

2.1 在伺服器端建立Cookie物件

Cookeie cookie = new Cookie("name","value");

2.2 把cookie傳送給瀏覽器端(透過響應頭:set-cookie)

response.addCookie(cookie);

2.3 瀏覽器帶著cookie資訊訪問伺服器(透過請求頭:cookie),伺服器得到cookie資訊

Cookie[] cookies = request.getCookies();

侷限:

1)只能儲存字串型別,不能儲存中文

2)一個cookie不能超過4kb

3)Session技術:會話資料儲存在伺服器端。(記憶體)

Session核心的API:

3.1 建立或得到session物件

HttpSession session = request.getSession(); //建立或得到session物件

request.getSession(false); //得到session物件

3.2 會話資料儲存session物件中,和得到會話資料

session.setAttribute("name",Object); 儲存資料

session.getAttribute("name") 得到資料

注意:

1)session.setIntactiveInterval(時間); 設定session過期時間

2)session.invalidate() 手動銷燬session物件

2 Session案例

使用者登入場景

3 程式設計實戰

通訊錄程式

軟體的生命週期

3.1 需求分析(需求分析師)

功能分析:

1)新增聯絡人

2)修改聯絡人

4)查詢所有聯絡人

功能流轉

美工設計: 設計軟體的靜態原型

3.2 需求設計(系統分析師/架構師/資深開發人員)

1)設計實體(抽象實體)

聯絡人實體:

class Contact{    private String id;    private String name;    private String gender;    private int age;    private String phone;    private String email;    private String qq;}

2)設計"資料庫",(xml代替"資料庫")

contact.xml<contactList><contact id="1"><name>張三</name><gender>男</gender><age>20</age><phone>13433334444</phone><email>[email protected]</email><qq>43222222<qq></contact></contactList>

3)設計涉及的介面

DAO介面(資料訪問物件):實體物件的CRUD方法。

專案原則: 通常一個實體物件就會對應一個DAO介面和一個DAO實現類

interface ContactDao{    public void addContact(Contact contact);//新增聯絡人    public void updateContact(Contact contact);//修改聯絡人    public void deleteContact(String id);//刪除聯絡人    public List<Contact> findAll(); //查詢所有聯絡人    public Contact findById(String id);//根據編號查詢聯絡人}

4)設計專案的目錄結構

專案名稱: contactSys_web

目錄結構:

|- contactSys_web    |-src        |-gz.itcast.contactSys_web.entity : 存放實體物件        |-gz.itcast.contactSys_web.dao : 存放dao的介面        |-gz.itcast.contactSys_web.dao.impl: 存放dao的實現類        |-gz.itcast.contactSys_web.servlet: 存放servlet的類        |-gz.itcast.contactSys_web.test: 存放單元測試類        |-gz.itcast.contactSys_web.util: 存放工具類        |-gz.itcast.contactSys_web.exception: 存放自定義異常類    |-WebRoot        |-html檔案        |-images:目錄。存放圖片資源        |-css:目錄。存放css資源        |-js:目錄。存放js資源
3.3 編碼實現(軟體開發工程師/攻城獅)

開發順序:

設計資料庫-> 實體 -> DAO介面,DAO實現-> Servlet+html頁面

3.4 功能測試(測試攻城獅)3.5 效能測試(測試攻城獅)3.6 部署上線(實施攻城獅)3.7 維護階段(實施攻城獅)4 Jsp基礎4.1 Jsp引入

Servlet的作用: 用java語言開發動態資源的技術!!!

Jsp的作用:用java語言(+html語言)開發動態資源的技術!!!

Jsp就是servlet!!!

4.2 Jsp的特點

1)jsp的執行必須交給tomcat伺服器!!!!

tomcat的work目錄: tomcat伺服器存放jsp執行時的臨時檔案

2)jsp頁面既可以寫html程式碼,也可以寫java程式碼。

(html頁面不能寫java程式碼 。而jsp頁面可以寫java程式碼)

4.3 體驗jsp頁面作用

需求:顯示當前時間到瀏覽器上

可以把jsp頁面當做html頁面在tomcat中訪問!!!

4.4 Jsp的執行過程

問題: 訪問http://localhost:8080/day12/01.hello.jsp 如何顯示效果?

1)訪問到01.hello.jsp頁面,tomcat掃描到jsp檔案,在%tomcat%/work把jsp檔案翻譯成java原始檔

(01.hello.jsp -> _01_hello_jsp.java) (翻譯)

2)tomcat伺服器把java原始檔編譯成class位元組碼檔案 (編譯)

(_01_hello_jsp.java -> _01_hello_jsp.class)

3)tomcat伺服器構造_01_hello_jsp類物件

4)tomcat伺服器呼叫_01_hello_jsp類裡面方法,返回內容顯示到瀏覽器。

第一次訪問jsp:

走(1)(2)(3)(4)

第n次訪問jsp:

走(4)

注意:

4.5 疑問

問題: 為什麼Jsp就是servlet!!!

jsp翻譯的java檔案:

public final class _01_hello_jsp extends org.apache.jasper.runtime.HttpJspBaseimplements org.apache.jasper.runtime.JspSourceDependent {

HttpJspBase類:

public abstract class org.apache.jasper.runtime.HttpJspBase extends javax.servlet.http.HttpServlet implements javax.servlet.jsp.HttpJspPage {

結論: Jsp就是一個servlet程式!!!

servlet的技術可以用在jsp程式中

jsp的技術並不是全部適用於servlet程式!

Servlet的生命週期:

1)構造方法(第1次訪問)

2)init方法(第1次訪問)

3)service方法

4)destroy方法

Jsp的生命週期

1)翻譯: jsp->java檔案

2)編譯: java檔案->class檔案(servlet程式)

3)構造方法(第1次訪問)

4)init方法(第1次訪問):_jspInit()

5)service方法:_jspService()

6)destroy方法:_jspDestroy()

5 Jsp語法5.1 Jsp模板

jsp頁面中的html程式碼就是jsp的模板

5.2 Jsp表示式

語法:<%=變數或表示式%>

作用: 向瀏覽器輸出變數的值或表示式計算的結果

注意:

1)表示式的原理就是翻譯成out.print("變數" );透過該方法向瀏覽器寫出內容

2)表示式後面不需要帶分號結束。

5.3 Jsp的指令碼

語法:<%java程式碼 %>

作用: 執行java程式碼

注意:

1)原理把指令碼中java程式碼原封不動複製到_jspService方法中執行。

5.4 Jsp的宣告

語法:<%! 變數或方法 %>

作用: 宣告jsp的變數或方法

注意:

1)變數翻譯成成員變數,方法翻譯成成員方法。

注意;

1)html的註釋會被翻譯和執行。而jsp的註釋不能被翻譯和執行。

6 Jsp的三大指令6.1 include指令

作用: 在當前頁面用於包含其他頁面

語法: <%@include file="common/header.jsp"%>

注意:

1)原理是把被包含的頁面(header.jsp)的內容翻譯到包含頁面(index.jsp)中,合併成翻譯成一個java原始檔,再編譯執行!!,這種包含叫靜態包含(原始碼包含)

2)如果使用靜態包含,被包含頁面中不需要出現全域性的html標籤了!!!(如html、head、body)

6.2 page指令

作用: 告訴tomcat伺服器如何翻譯jsp檔案

<%@ pagelanguage="java" --告訴伺服器使用什麼動態語言來翻譯jsp檔案import="java.util.*" --告訴伺服器java檔案使用什麼包匯入包,多個包之間用逗號分割pageEncoding="utf-8" --告訴伺服器使用什麼編碼翻譯jsp檔案(成java檔案)contentType="text/html; charset=utf-8" 伺服器傳送瀏覽器的資料型別和內容編碼注意:在開發工具中,以後只需要設定pageEncoding即可解決中文亂碼問題errorPage="error.jsp"isErrorPage="false"buffer="8kb"session="true"isELIgnored="false"%>
6.3 taglib指令總結:

1)編碼實戰:

1.1 servlet應用

1.2 初步瞭解軟體開發流程

2)Jsp基礎

2.1 Jsp的執行原理(翻譯-》編譯-》servlet的生命週期)

2.2 語法(jsp表示式,jsp指令碼)

2.3 指令

include指令

page指令

7
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Linuxmint系統,Thunderbird除錯企業郵件