天天看點

JavaWeb基礎二

普通使用者登入:

使用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方法

JavaWeb基礎二
JavaWeb基礎二

注意:

重定向的Web資源可以是不同Web應用的資源

URL以/開始,相對于伺服器域名

JavaWeb基礎二

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()調用

JavaWeb基礎二
JavaWeb基礎二
JavaWeb基礎二
JavaWeb基礎二
JavaWeb基礎二
JavaWeb基礎二

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+>

JavaWeb基礎二

2.2DHTML靜态内容

-DHTML靜态内容的文法格式:

HTML的文法

處理:原封不動地被寫入響應的主體中

翻譯:被翻譯成輸出流的語句形式,插入到_jspService()方法中,靜态html内容作為輸出的參數,執行與JSP代碼的順序相關

JavaWeb基礎二

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表達式的值作為輸出參數

JavaWeb基礎二

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指令,但每個屬性隻允許出現一次

JavaWeb基礎二
JavaWeb基礎二

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方法的參數

JavaWeb基礎二
JavaWeb基礎二

4.在首頁面中顯示使用者資訊

會話對象—HttpSession

session指的是在一段時間内,單個用戶端與Web伺服器的一連串相關的互動過程

會話對象的作用

保持同一個客戶多次請求之間的聯系

一個HttpSession對象唯一地屬于一個使用者

同一客戶的多次連接配接共享同一個會話對象

JavaWeb基礎二

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 儲存在磁盤

JavaWeb基礎二

向用戶端發送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()