web裏面Servlet高級應用的基礎介紹

Servlet中的頁面跳轉?

兩種方式,實現跳轉:內部跳轉(請求轉發)、外部跳轉(重定向)

內部跳轉(請求轉發)特點:在服務器內部完成頁面之間的跳轉;請求只有一次;瀏覽器地址不會改變。

request.getRequestDispatcher(“路徑”).forward(reuqest,response);

request.getRequestDispatcher(“路徑”).include(reuqest,response);

 

外部跳轉(重定向)特點:通知客戶端重新發送請求;請求次數爲二次;瀏覽器地址欄會改變。

response.sendRedirect(“路徑”);

 

內部跳與外部跳最重要的區別:

內部跳轉,請求爲一次——request對象是同一個(不同頁面中);可以利用request傳遞數據。

外部跳轉,請求爲二次——request對象不是同一個;不能使用request傳遞數據。

 

中文問題?

支持中文的編碼格式:GBK(簡體+繁體)、GB2312(簡體)、UTF-8(unicode編碼,支持國際通用語言編碼)

MyEclipse工具中出現亂碼?

菜單欄打開Window--->首選項(最後一個)-->基本選項(第一個)-->contentTypes -->Text(javasource file)

 

程序中的亂碼:

post提交處理方式:

在程序中的第一行寫入:

request.setCharacterEncoding(“與jsp頁面編碼必須一致”);

response.setCharacterEncoding(“與jsp頁面編碼必須一致”);

 

get提交處理方式:

get提交不能按照post方式進行處理;原因是:數據提交到服務器之前,已經被瀏覽器設定了編碼。(ISO-8859-1編碼,標準英語)

String txtname = request.getParameter("txtname");

txtname = newString(txtname.getBytes("ISO-8859-1"),"與jsp頁面編碼必須一致");

 

Session的會話跟蹤技術?

1. 什麼是Session?

Session(會話)——客戶端一次請求,服務器端一次響應;這個過程稱之爲會話。

什麼是JavaWeb的會話跟蹤技術?

在服務器端記錄客戶端的相關信息,客戶端第二次以後的訪問;服務器能夠識別每一個客戶端。

如何使用會話跟蹤技術?

使用會話跟蹤技術核心對象:Session對象。

Session對象:每一個客戶端第一次訪問服務器的時候,服務器分配一個唯一的SessionID給用戶,下一次訪問服務器的時候,根據SessionID區分每一個用戶。(跟銀行類似)

注意:每一個Session對象,相互獨立;默認以瀏覽器爲單位(同一個瀏覽器默認爲同一個用戶,瀏覽器關閉session消失)。

Session用來存、取數據使用,常用方法:

setAttribute(“名字”,”值”);

getAttribute(“名字”);

注意:只要能夠獲取到session對象,都可以使用session中的數據(跟跳轉方式無關)。

設置Session有效時間(Session默認30分鐘):

setMaxInactiveInterval(時間值單位秒)。

invalidate();當前Session立即失效(退出)。

 

會話跟蹤技術:

Cookie(原理:通過瀏覽器往客戶端寫入Cookie文件,來識別不同的用戶;也可以設置        有效日期)

Session(利用Session對象,完成客戶追蹤;瀏覽器關閉session就消失(不可用);                session.invalidate() session立即失效)

URL重寫、隱藏域技術(URL重寫是通過地址欄,不斷的傳遞SessionID來區分用戶)。

 

Cookie 與Session 異同:

相同:都可以實現會話跟蹤(存放用戶的相關信息)。

不同點:Cookie不以瀏覽器關閉爲標準;以設置的有效時間爲標準(可以實現離線跟蹤)。

 Session必須保證瀏覽器不關閉的情況,才能獲取到。

 

Servlet中的線程安全

Servlet在運行時,只有一個實例對象(通過Servlet的生命週期);保證用戶能夠獨立訪問Servlet,採用了多線程技術。

作用:效率更高,用戶與用戶之間獨立開。

缺點:線程安全問題(多個線程,同時操作一個變量(數據))

解決方案:儘量不要在Servlet中使用全局變量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章