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指令