Java Web復習Day1
JavaWeb
一、Servlet的作用:
一般用于控制器,內容比較簡單,通常包含以下內容:
1)獲得請求引數
2)根據請求引數呼叫業務方法
3)根據業務方法回傳值,決定跳轉到哪個頁面
4)在跳轉頁面之前,可以攜帶資料
Servlet原理
當瀏覽器訪問web容器中的對應資源時,對應的資源會根據Request、Response這兩個引數,傳遞相應的資訊,再跳轉到Servlet中的service方法,根據我們自己撰寫的類,處理相應的請求,最終將資訊回傳,
Mapping
將這個理解成映射即可,在我們的web.xml組態檔中,servlet中的配置我們自己撰寫的處理類,servlet-mapping中配置我們的訪問的時候的url路徑,
ServletContext
ServletContext類想一個大容器,他可以用來存放每一個Servlet中的資料,我們只需要使用 .setAttribute(“xx”,xx) 就可以手動的將我們Servlet中的資料放置進那個大容器,
重定向和請求轉發(重點)
重定向:
請求轉發:.forward()
兩者的區別:
1.重定向改變地址url,轉發地址欄不變
2.重定向可以訪問外部資源,轉發只能訪問內部
3.重定向是客戶端跳轉,轉發為服務器跳轉
4.重定向是兩次請求,轉發是一次請求
請求轉發,當A請求C的資源,但是A無法直接訪問到,但是B能訪問到,所以我們就訪問B,以此來達到A訪問C的目的
重定向,當A需要訪問某資源的時候,先去訪問B,但是B沒有對應的資源,不過B卻告訴A應該訪問A,于是就去A再去訪問C,繼而拿到了對應的資源
二、四種屬性范圍(作用域):
用于傳遞資料(有效范圍)
setAttribute(key, value); //存放資料
getAttribute(key); //讀取資料
removeAttribute(key); //移除資料
page:只在當前JSP頁面內有效(沒啥用)
request:在一次請求內有效(最常用),請求結束時釋放記憶體
服務器端跳轉可以獲得,但客戶端跳轉不能獲得
session:在一次會話內有效(盡量少用,會加重服務器的負載),會話失效時釋放記憶體
會話失效:關閉瀏覽器、會話超時、呼叫 session.invalidate()
application:在整個應用內有效(基本不用,只用于快取),服務器關閉才釋放記憶體
JSP內置物件的4中屬性范圍
Page:只在一個頁面中保存屬性,跳轉之后無效
Repuest:只在一次請求中保存屬性,服務器跳轉后依然有
Session:在一次會話范圍中保存,無論何種跳轉都可以用,但新開瀏覽器無法使用
Application:在整個服務器中保存,所有用戶都可以使用,
注意:盡量使用范圍比較小的作用域
page < request < session < application
三、頁面跳轉方式
1)服務器端跳轉:(主要的方法)
特點:瀏覽器地址欄不發生改變,是同一個請求,可以使用request傳遞資料
問題:重繪頁面,可能導致表單重復提交
2)客戶端跳轉(重定向):(解決表單重復提交)
特點:瀏覽器地址欄發生改變,是同一個請求,可以使用request傳遞資料
問題:不能通過request傳遞資料,一般通過QueryString方式傳遞,即 ?id=xx&name=xx
四、Session會話:
通過客戶端技術實作的一種服務器端技術,通常使用cookie實作,也可以使用url重寫
cookie實作:每次請求會攜帶一個cookie:JSESSIONID
URL重寫:每個URL后面都帶上?JSESSIONID=xxxx
每個用戶,在服務器端都有一個Session空間,所以盡量不使用session傳遞資料
一般使用session保存用戶登陸資訊,或者購物車物件
五、JSP的九個內置物件:
在JSP頁面的<%%>中,內置物件,可以直接使用
out, request, response, pageContext, session, application, page, config
exception:只在<%@ page isErrorPage="true"%>時才存在
9個內置物件:
pageContext request response session application config out page exception
幾種重要物件的功能:
pageContext物件:表示一個JSP頁面的下文,
request物件:接收客戶端發送而來的請求資訊,
Response物件: 對客戶端的請求進行回應,將Web服務器處理后的結果發回給客戶端,
Session物件:完成用戶的登錄、注銷等,
Application物件:用來存盤和獲取可以被所有用戶之間進行共享的資訊
Config物件:取得,此初始化的配置資訊,
Out物件:完成頁面的輸出操作,使用printin()或print()方法輸出資訊,
六、JSP的語法:
JSP本質上是一個模板檔案,由html代碼+Java代碼片段
注意:以后盡量在JSP檔案中不要使用Java代碼,而應該使用JSTL標簽庫+EL運算式
<% Java陳述句 %> : 必須以分號結尾
<%= 運算式 %> : 不能以分號結尾,等價于 <% out.print(運算式); %>
<%-- 注釋 --%>
<%! 屬性或方法的宣告 %>
<%@ 指令 屬性值1 屬性值2 %>
七、JSP指令:
page: import, pageEncoding
include: 包含1個外部檔案(可能不是JSP頁面), 類似于 #include <xx>
taglib: 引入標簽庫
注意:自定義標簽檔案中,還有一些指令
八、EL運算式的隱含物件:${pageScope}
<br/>---------------從指定的page域中查找資料------------------------<br/>
<!-- pageScope——代表page域中用于保存屬性的Map物件 -->
<%
pageContext.setAttribute("name","aaa"); //map
%>
${pageScope.name }
<br/>---------------從request域中獲取資料------------------------<br/>
<!-- requestScope——代表request域中用于保存屬性的Map物件 -->
<%
request.setAttribute("name","bbb"); //map
%>
${requestScope.name }
<br/>---------------從session域中獲取資料------------------------<br/>
<!-- sessionScope——代表session域中用于保存屬性的Map物件 -->
${sessionScope.user }
<!--applicationScope——代表application域中用于保存屬性的Map物件 -->
<br/>--------------獲得用于保存請求引數map,并從map中獲取資料------------------------<br/>
<!-- param——表示一個保存了所有請求引數的Map物件 -->
<!-- http://localhost:8080/day12/3.jsp?name=aaa -->
${param.name }
<!-- 此運算式會經常用在資料回顯上 -->
<!-- 模擬的應用場景是表單提交到后臺校驗沒有通過,回到注冊頁面時的資料回顯 -->
<form action="${pageContext.request.contextPath }/servlet/RegisterServlet" method="post">
<input type="text" name="username" value="${param.username }">
<input type="submit" value="注冊">
</form>
<br/>--------------paramValues獲得請求引數 //map{"",String[]}------------------------<br/>
<!-- paramValues——表示一個保存了所有請求引數的Map物件,它對于某個請求引數,回傳的是一個string[] -->
<!-- http://localhost:8080/day12/3.jsp?like=aaa&like=bbb -->
${paramValues.like[0] }
${paramValues.like[1] }
<br/>--------------header獲得請求頭------------------------<br/>
<!-- header——表示一個保存了所有http請求頭欄位的Map物件 -->
${header.Accept }
${header["Accept-Encoding"] }<!-- 通過.運算子解決不了,用[] -->
<br/>--------------獲取客戶機提交的cookie------------------------<br/>
<!-- cookie——表示一個保存了所有cookie的Map物件 -->
<!-- 從cookie隱式物件中根據名稱獲取到的是cookie物件,要想獲取值,還需要.value -->
${cookie.JSESSIONID.value }
<br/>--------------獲取web應用初始化引數------------------------<br/>
<!-- initParam——表示一個保存了所有web應用初始化引數的map物件 -->
${initParam.xxx } //servletContext中用于保存初始化引數的map
${initParam.root }
九、標簽庫
JSP 標準標簽庫(JSTL)
JSP標準標簽庫(JSTL)是一個JSP標簽集合,它封裝了JSP應用的通用核心功能,
JSTL支持通用的、結構化的任務,比如迭代,條件判斷,XML檔案操作,國際化標簽,SQL標簽, 除了這些,它還提供了一個框架來使用集成JSTL的自定義標簽,
根據JSTL標簽所提供的功能,可以將其分為5個類別,
核心標簽
格式化標簽
SQL 標簽
XML 標簽
JSTL 函式
JSTL 庫安裝
十、JavaScript


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/198275.html
標籤:AI
