標籤:java web servlet
一、有兩種應用程式
1、傳統型應用程式:需要下載,安裝,更新等。如QQ,office等
2、web應用程式:就是我們開發的web項目,這不需要使用者下載,只需要使用者用戶端連網,訪問相應的互連網資源。
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:500px;float:none;height:auto;" src="http://img9.ph.126.net/dC1MBIh0onBBIVqS-uiIhg==/6597816335051501009.jpg" />
二、Http協議
HTTP是一個屬於應用程式層的物件導向的超文字傳輸通訊協定 (HTTP),基於TCP/IP協議,由於其簡捷、快速的方式,適用於分布式超媒體資訊系統。HTTP特點:
(1)無串連:分為4個階段:建立串連、發送請求、等待響應、關閉串連
優點:快速、簡單、不佔用網路伺服器資源
缺點:速度由網路來決定,每次傳輸資料量不能太大
(2)無狀態:HTTP 協議只負責傳輸資料,不負責保管所傳遞的資料
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:auto;float:none;height:auto;" src="http://img4.ph.126.net/Gw0SZ9cbJdHgqdWaPUYCng==/6597340246518050054.jpg" />
Http訪問伺服器資源的方式
1、URL:(Uniform/Universal Resource Locator)統一資源定位器,請求的是伺服器上的資源。資源是一個抽象的概念,指存放在伺服器上的能夠被用戶端訪問到的所有類型的檔案(比如:文本、圖片、音頻、視頻等)。
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:500px;float:none;height:auto;" src="http://img9.ph.126.net/D8wx0Wq2y6Jz8EBfm4W6rQ==/6597197310006448239.jpg" />
2、表單提交
get和post方法的區別
⑴get方法通過URL傳遞參數,使用者在用戶端地址欄可見,如果是傳遞密碼的話,不安全;post方法通過請求的body傳遞參數,使用者在用戶端不可見,更安全。
⑵get方法通過地址欄URL傳遞請求,而URL本身有長度限制,一般不超過255個字元;post方法通過請求body傳遞參數,沒有長度限制。
三、Servlet
1、Servlet概念:
首先Servlet是一個java應用程式----->伺服器端的java應用程式----->具有獨立於平台和協議的特性----->可產生動態Web頁面。
Servlet擔當客戶請求(Web瀏覽器或其他HTTP客戶程式)與伺服器響應(HTTP伺服器上的資料庫或應用程式)的中介層。客戶請求<----->Servlet<------>伺服器響應
2、Servlet生命週期
指Servlet對象在伺服器記憶體中從建立到調用,到銷毀的整個過程。
(1)執行個體化:當用戶端通過URL請求的時候,web容器根據web.xml配置自動調用該Servlet的構造方法,執行個體化對象。
(2)初始化:通過該servlet對象調用init()方法,讀取web.xml中該servlet的配置資訊,為service方法提供相關資料。
(3)服務:通過該對象調用service()方法,如果是繼承HttpServlet,則根據要求標頭資訊中的要求方法,調用對應的doGet()/doPost()
(4)銷毀:不是在service()方法調用完後,立即調用,而是由JVM來決定。當JVM需要銷毀一些對象、釋放記憶體空間的時候,才會去調用該執行個體的destroy()方法。
3、HttpServletRequest(interface)
公用介面類HttpServletRequest繼承自ServletRequest.用戶端瀏覽器發出的請求被封裝成為一個HttpServletRequest對象。所有的資訊包括請求的地址,請求的參數,提交的資料,上傳的檔案用戶端的ip甚至用戶端作業系統都包含在其內。
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;float:none;" src="http://img7.ph.126.net/6pYoYYKTOiu9xpsNQzf_CA==/6597354540169215617.jpg" />
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:500px;float:none;height:auto;" src="http://img8.ph.126.net/-8-xgg0UoL53J0-onDGJeA==/6597369933332003888.jpg" />
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:500px;float:none;height:auto;" src="http://img6.ph.126.net/s25rFIMfcegxZNhLRyKG_Q==/6597185215378542076.jpg" />
4、HttpServletResponse(interface)
代表格服務器向瀏覽器返回的響應直接輸出內容到瀏覽器,使用Servlet輸出HTML頁面
PrintWriter out = response.getWriter();
out.print("Hello :");
設定響應的內容類型:
response.setContentType("text/html; charset=UTF-8");
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:500px;float:none;height:auto;" src="http://img4.ph.126.net/a2tgDHQuPlF9BRicLLFrxg==/6597528263005024774.jpg" />
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:500px;float:none;height:auto;" src="http://img3.ph.126.net/ZomIbvPJtYuj9OVpaLi26A==/6597828429679406893.jpg" />
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:500px;float:none;height:auto;" src="http://img2.ph.126.net/Lt8y0-MY3NYYW1m00heupA==/6597737170214300602.jpg" />
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:500px;float:none;height:auto;" src="http://img2.ph.126.net/_1jLIt64raDCw5st8G2KfQ==/6597566745911994882.jpg" />
注意:使用response對象跳轉,可以跳到項目外的一個URL資源上
如:response.sendRedirect(“http://www.baidu.com”);
使用request對象跳轉,只能在本項目資源中跳轉
如:request.getRequestDispatcher(“url”).forward(request,response);
告訴瀏覽器不要快取頁面面:
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:500px;float:none;height:auto;" src="http://img0.ph.126.net/4xjRueitAwu2BuyPkZK_Og==/6597854817958473570.jpg" />
頁面重新整理:單位是秒
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:500px;float:none;height:auto;" src="http://img5.ph.126.net/ni5wMGULHTyT0Ow9YVrHJA==/6597369933332003945.jpg" />
5、javax.servlet.RequestDispatcher(interface)
對請求響應進行補充的一個介面,主要負責兩個功能
RequestDispatcher disp = request.getRequestDispatcher("login_ok.jsp");
(1)跳轉
disp.forward(ServletRequest,ServletResponse);
(2)包含
disp.include(ServletRequest,ServletResponse);
程式中一般連寫:
request.getRequestDispatcher("login_ok.jsp").forward(request,response);
6、HttpSession(interface)
是在伺服器端儲存資料最常見的方式
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:500px;float:none;height:auto;" src="http://img0.ph.126.net/ZTHei7LKAUEs06fGP8vAvQ==/6598191268516398740.jpg" />
Session:會話,(進行某活動連續的)一段時間,使用該對象可以完成一定的操作。會話資訊的範圍僅限於當前Web應用程式(
ServletContext
),因此儲存在一個上下文中的資訊在另一個上下文中不是直接可見的。
Ⅰ.Hibernate中Session和Servlet中HttpSession的區別
Hibernate中Session對象:主要作用是資料庫連接、資料庫操作
Servlet中HttpSession對象:
(1)協助伺服器,識別不同的瀏覽器
(2)協助伺服器傳遞資料到不同的Servlet或JSP頁面
(3)能夠人工控制連續的時間段的長短。
Ⅱ.HttpSession 對象的常用方法:
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:500px;float:none;height:auto;" src="http://img7.ph.126.net/dUtcp8tKyFNeWDfqL2rMGg==/6597819633586384377.jpg" />
(1)建立
HttpSession session = request.getSession(true);
要求伺服器端重新建立一個session對象
HttpSession session = request.getSession(false);
不需要伺服器端建立session對象,只需要從已有的session中取一個
HttpSession session = request.getSession();
沒有要求,由伺服器自動分配
(2)識別瀏覽器
//隨機產生一個不重複的id,隨著響應發送給瀏覽器,綁定在瀏覽器中,每次瀏覽器請求,都會把該id返回並與伺服器端的id對比
String id = session.getId();
(3)傳遞資料
//把資料存入session中
session.setAttribute("name",object);
//在其他Servlet或jsp頁面中取出資料
Object obj = session.getAttribute("name");
一般情況下,需要先判斷是否為空白,再取值
(4)設定有效時間
一個session對象預設有30分鐘的有效時間
//設定單個session對象的最長有效時間
session.setMaxInactiveInterval(60*60*24秒);
//設定整個工程中所有session的有效時間
<session-config>
<session-timeout>20000</session-timeout>
</session-config>
(5)清除資料
session.removeAttribute("name");
(6)設定Session失效或鈍化
session.invalidate();
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:500px;float:none;height:auto;" src="http://img5.ph.126.net/ZgGuSFE4GoLlPxj9dgt6FQ==/6598223154353603495.jpg" />
例如:
Session類似儲物櫃,最主要作用就是存取資料
寢室的儲物櫃:
(1)一人一個
(2)能夠存取東西
(3)一般的一個柜子一把鑰匙
(4)特殊情況,可以給柜子貼封條
(5)有時候柜子可能兩個人或N個人共用
7、ServletContext(interface)
⑴ServletContext的定義
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:500px;float:none;height:auto;" src="http://img2.ph.126.net/51LG31RjQArctbfZwFOEKg==/6597695388772445242.jpg" />
⑵ServletContext對象能夠訪問web項目的初始化參數、儲存在ServletContext中的對象、web項目中的資源檔、日誌;ServletContext就是Servlet容器,提供的方法可以在同一個web應用下的所有Servlet中使用。
8、ServletConfig(interface)
650) this.width=650;" alt="Servlet學習筆記 - 廖潤明 - 異次元藍客" style="margin:0px 10px;width:500px;float:none;height:auto;" src="http://img3.ph.126.net/8BuvcahaVja-B4Mnc7IYIA==/6597958172051485313.jpg" />
本文出自 “程式猿進階攻城獅” 部落格,請務必保留此出處http://zhoum1118.blog.51cto.com/10054110/1639322
Java Web servlet理解