普通使用者登入:
使用JSP重構:
重定向與轉發
JSP簡介、JSP頁面元素、DHTM;靜态内容聲明,腳本段,表達式,注釋,内置對象,指令
Web層共享資料基本思想、請求對象會話對象工作原理、會話對象建立及常用方法 1.使用JSP重構
1.跳轉的實作
2.使用JSP重構首頁面、登入頁面
3.在登入頁面中顯示失敗資訊
4.在首頁面中顯示使用者資訊
1.1跳轉的實作
Web資源跳轉的兩種方式
1.1.1重定向(站外跳轉)
1.1.2請求轉發(站内跳轉)
重定向:接受到客戶的請求後,傳回給客戶一個URL,使客戶按照提供的URL重新發出HTTP請求,請求的方法為GET方法

注意:
重定向的Web資源可以是不同Web應用的資源
URL以/開始,相對于伺服器域名
1.1.2:如何進行請求轉發
-擷取請求轉發對象,使用HttpServletRequest的方法
RequestDispatcher getRequestDispatcher(String url)
-轉發請求,使用RequestDi spatcher的方法
void forward(ServletRequest request, ServletResponse response)
注意:
getRequestDispatcher的參數用于定位轉發後的Web資源,建議使用”/”開始,相對于上下文(Context Root)。轉發的Web資源必須是同—Web應用下的資源
1.1.3重定向和請求轉發的比較
相同點:
接收客戶請求的是WebA,生成響應頁面的是WebB
不同點:
請求與響應的次數
性能.
用戶端位址欄URL變化
可以跳轉的資源的位置
2.使用JSP重構
JSP:Java Server Page的縮寫
JSP的好處:
-JSP中HTML的編寫與維護更為簡單
-能夠使用标準的網站開發工具
-明确開發人員的職責分工:
●表示邏輯: Web開發人員不需掌握Java
●業務邏輯:Java開發人員不需使用Web頁面
JSP的理想:
不包含業務邏輯
不包含Java代碼
如何編寫、執行JSP
JSP檔案放到Web應用的目錄下
不需要在web.xml檔案中編寫任何内容
部署時,需要将JSP正确的部署到伺服器某一個應用當中
通路時,Web應用目錄結構體系必須完整,至少要描述出根目錄
JSP的翻譯
在JSP處理請求之前,JSP頁面被翻譯為Servlet源檔案:
{tomcat_ home} \work\Cata | ina\ | oca lhost\項目名\org\apache\jsp\hello_ jsp. java
JSP生命周期:
翻譯
編譯
加載類
執行個體化類
_jsplnit()調用
_jspService()調用
_jspDestroy()調用
2.1JSP頁面元素
腳本元素:
JSP頁面:
靜态内容:DHTML靜态文本
指令:以<%@開始,以%>結束。比如:<%@ include file = “Filename” %>
表達式:<%=Java表達式%>
腳本段:<% Java代碼%>
聲明:<%!函數或方法%>
動作:以jsp:動作名開始,購jsp:動作侶>結束,比如: <jsp:include page- “Filename” />
EL表達式:${ expression }
自定義标簽:<c:if test="*true" >Hello Custom Tag</c:if+>
2.2DHTML靜态内容
-DHTML靜态内容的文法格式:
HTML的文法
處理:原封不動地被寫入響應的主體中
翻譯:被翻譯成輸出流的語句形式,插入到_jspService()方法中,靜态html内容作為輸出的參數,執行與JSP代碼的順序相關
2.3JSP腳本元素文法
<%scripting element%>
腳本元素的分類:
JSP聲明:<%! declaration%>
JSP腳本段<& javacode%>
JSP表達式<%= expression%>
JSP注釋<&–comment–%>
2.3.1
JSP聲明基本文法
<%! Java代碼%>
處理:
1.按照Java的規範執行Java代碼
2.翻譯:Java聲明在翻譯時被直接接入到類中
JSP腳本段基本文法
<% Java代碼%>
處理
被直接插入到_jspService()方法中
JSP表達式基本文法
<%=“Hello” %>
處理
Java表達式的值被寫入響應的主體中
翻譯:被翻譯成輸出流的語句形式,插入到_jspService()方法中,Java表達式的值作為輸出參數
2.4JSP内置對象
request:目前的請求對象
javax.servlet.http.HttpServletRequest
response:目前響應對象
javax.servlet.http.HttpServletResponse
session:對應目前請求的客戶會話對象
javax.servlet.http.HttpSession
out:對應目前響應對象的輸出流
javax.servlet.jsp.JspWriter
application:Web應用對象
javax.servlet.ServletContext
pageContext:封裝目前請求内此JSP頁面資訊的對象
javax.servlet.jsp.PageContext
page:指向頁面自身的方式,相當于this關鍵字
java.lang.Object
config:與目前JSP頁面的servlet對應的ServletConfig對象
javax.servlet. ServletConfig
exception:其他地方抛出的Throwable對象,僅當<%@ page is ErrorPage=“True”%>時有效
java.lang. Throwable
JSP指令:
用來設定和整個JSP網頁相關的屬性,控制JSP/Servlet的總體結構
JSP指令的文法格式:
<% DirectiveNmae[attr=“value”]*%>
三種JSP指令:
page:<%@ page session=“false” %>
include:<%@ include file=“menu/banner.jsp” %>
taglib:<%@ taglib prefix=“training” uri=’ www.neusoft.com" %>
page指令:
用于定義JSP頁面的某些屬性,翻譯時起作用,作用在整個JSP檔案,與放置的位置無關
說明:
在翻譯時起作用,作用在整個JSP檔案
位置無關,最好寫在JSP的最前面
一個頁面可以有多個page指令,但每個屬性隻允許出現一次
include指令
JSP可以通過include指令來包含其他檔案。被包含的檔案可以是JSP檔案,HTEM檔案或者文本檔案
<%@ include file= “login.jsp” %>
3.在登入頁面中顯示失敗資訊
3.1Web層共享資料的範圍
應用對象:ServletContext
會話對象:HttpSession
請求對象:HttpServletRequest
共享資料的基本方法:
setAttribute()
getAttribute()
removeAttribute()
3.1.1請求對象:HttpServletRequest
在伺服器截獲請求後建立HttpServletRequest請求對象,在響應結束後銷毀
獲得HttpServletRequest對象
JSP的内置對象:request
在Servlet中doGet或dopost方法的參數
4.在首頁面中顯示使用者資訊
會話對象—HttpSession
session指的是在一段時間内,單個用戶端與Web伺服器的一連串相關的互動過程
會話對象的作用
保持同一個客戶多次請求之間的聯系
一個HttpSession對象唯一地屬于一個使用者
同一客戶的多次連接配接共享同一個會話對象
4.2保持會話的方法
每個會話保持一個會話ID
使用Cookie
URL重寫:在URL中保持會話ID
4.2.1URL重寫管理會話
在參與同一個session操作的每個HTML頁面和表單的URL中都保持會話ID資訊
通過調用HttpServletRespone的encodeRedirectURL(String)方法對UR;追加jsessionid資訊
URL重寫示例
http:/ /host/ path/ file;jsessionid= 123
4.2.2會話對象的建立,獲得
JSP的内置對象:session
在Servlet中,調用HttpServletRequest的方法
HttpSession getSession()
HttpSession getSession(boolean create)
void setAttribute(String key ,Object,value)
方法
說明
void setAttribute(String key ,Object
在session作用域中儲存資料,鍵為value)
key,值為value
Object getAttribute (String key):
在session作用域查找鍵值為key的數
據對象的值
void removeAttribute (String key):
删除session作用域内鍵值為key的數
據對象
Enumeration getAttributeNames ():
傳回session作用域内儲存的所有資料對象的鍵值的集合
String getId():
傳回HttpSession對象的JSessionID
4.3Cookie:
Cookie是Web伺服器端發送到浏覽器的簡短文本資訊,以後在通路同一個Web站點或域時,浏覽器會豪無更改的地傳回該文本資訊
Cookie的問題(不可靠的存儲):
隐私 安全
Cookie的作用:
保持,傳遞資料
Cookie的有效期:
臨時Cookie 儲存在磁盤
向用戶端發送Cookie
建立Cookie對象
Cookie(String name,String value)
設定Cookie的最大時效,使用Cookie的setMaxAge方法
public void set MaxAge(int expiry)
将Cookie放入到HTTP響應報頭,調用HttpServletResponse對象的addCookie方法
public void addCookie(Cookie cookie)
從用戶端讀取Cookie
調用HttpServletRequest的getCookies方法,直到找到感興趣的cookie為止
public String getName()
調用cookie的getValue方法擷取每個cookie的值
public String getValue()