一些自己javaweb學習總結
一、基礎:
URL:Uniform Resource Locator——統一資源定位
URI:Uniform Resource Identifier——統一資源標識
URN:Uniform Resource Name——統一資源名稱
URL組成:1、協議 2、主機ip地址 (埠號) 3,相對路徑http://localhost:8080/news/dex.htm (https 安全)127.0.1 無狀態就是請求完,不儲存下次還的從新請求協議 主機地址 專案資源地址status狀態碼:
200 : 請求正常
404 : 路徑錯或頁面沒寫;
5xx : 伺服器端錯誤;
servlet是一個java程式(java類),是在伺服器上執行以處理客戶端請求並作出響應的程式
JSP註釋 的格式為 <%– –%>,與 HTML註釋 的區別在於:JSP註釋不會輸出到客戶端、
二:JSP九大內建物件:
pageContext: 頁面上下文物件
request :請求物件
session: 會話物件
application :應用程式物件
response :響應物件
out :頁面輸出物件
config: 配置物件
exception :異常物件
page :頁面物件
page:範圍裡的變數無法從index.jsp傳遞到test.jsp,只要頁面跳轉了,它們就不見了;
request: 範圍裡的變數可以跨越forward的前後的兩頁,但是隻要重新整理頁面,它們就重新計算了;
session: 範圍裡的變數一直在累加,開始還看不出區別,但只要關閉瀏覽器,再次重啟瀏覽器訪問這個頁面,它們就重新計算了;
application: 範圍裡的變數一直在累加,除非你重啟tomcat,否則它們會一直變大。
(1) 如果我們把變數放到pageContext裡,就說明這個變數的作用域是page,它的有效範圍只在當前jsp頁面裡。也就是說,從把變數放到pageContext開始,到jsp頁面結束,你都可以使用這個變數。
(2)
如果把變數放到request裡,就說明這個變數的作用域是request,它的有效範圍是當前 請求週期。所謂請求週期,就是指從http請求發起,到伺服器處理結束並返回響應的整個過程。在這個過程中可能使用forward的方式跳轉了多個jsp頁面,但由於仍然是同一個請求,因此在這些頁面裡,我們都可以使用這個變數。
(3) 如果把變數放到session裡,就說明這個變數的作用域是session,它的有效範圍是 當前會話。所謂當前會話,就是指從使用者開啟瀏覽器開始,到使用者關閉瀏覽器這中間的過程,這個過程可能包含多個請求和響應。也就是說,只要使用者不關瀏覽器,伺服器就有辦法知道這些請求是一個人發起的,整個過程被稱為一個會話(session),而放到會話中的變數,就可以在當前會話範圍內使用。
(4) 如果把變數放到application裡,就說明這個變數的作用域是application,它的有效範圍是 整個應用。所謂整個應用是指從應用啟動,到應用結束。特別地,我們沒有說“從伺服器啟動,到伺服器關閉”,這是因為一個伺服器可以部署多個應用,只要你結束了當前應用,這個變數就失效了。
- setAttribute(String Name, value)
- getAttribute(String Name)
- getParameter(String name)
- getParameterValues(String name)
- setCharacterEncoding("utf-8")
- GET 方式的請求:直接在瀏覽器位址列輸入訪問地址所傳送的請求或提交表單的預設請求引數傳送方式;
- POST 方式的請求:以 post 方式提交表單,傳送請求引數。該種方式一般將請求引數放在HTML HEADER 中傳輸,因此使用者不能在位址列看到請求引數值,安全性較高
- 轉發與重定向:
-
轉發帶資料,重定向不帶資料,轉發位址列不變,重定向位址列變
- response.sendRedirect(request.getContextPath() + "/page/pub.jsp");(重定向)
- request.getRequestDispatcher("/page/on.jsp").forward(request, response);(轉發)
- session與cookie:
- Cookie 與 Session的最大不同在於:session會隨著瀏覽器的關閉而失效,但Cookie會一直存放在客戶端的機器上,除非超出Cookie的生命週期。
- Cookie 1、cookie是由伺服器生成,通過response將cookie寫回瀏覽器(set-cookie), 保留在瀏覽器上, 下一次訪問,瀏覽器根據一定的規則攜帶不同的cookie (通過request的頭 cookie),我們伺服器就可以接受cookie 2、cookie的api: new Cookie(String key,String value) 寫回瀏覽器: response.addCookie(Cookie c) 獲取cookie: Cookie[] request.getCookies() cookie的常用方法: getName():獲取cookie的key(名稱) getValue:獲取指定cookie的值 setMaxAge(int 秒):設定cookie在瀏覽器端存活時間 以秒為單位 若設定成 0:刪除該cookie(前提必須路徑一致)
三、servlet的生命週期:
1、初始化:web容器載入servlet,呼叫init()方法2、處理請求:當請求到達,執行servlet()方法,中包含doget(),dopost()方法 3、銷燬:服務結束時,web容器會呼叫distory()方法銷燬servlet
1、mvc設計模式:(面試) 模型-----model 由javaBean充當 檢視-----view 控制器--controller Model:由 JavaBean 充當,所有的業務邏輯、資料庫訪問都在Model中實現; View:由 JSP 充當,負責收集使用者請求引數並將應用處理結果、狀態資料呈現給使用者; Controller:由 Servlet 充當,作用類似於排程員,即所有使用者請求都發送給 Servlet,Servlet 呼叫 Model 來處理使用者請求,並根據處理結果呼叫 JSP 來呈現結果;或者Servlet直接呼叫JSP將應用處理結果展現給使用者。 2、JavaBean開發要求 1.JavaBean本身就是一個類,屬於Java的面向物件程式設計。 2.在JSP中如果要應用JSP提供的Javabean的標籤來操作簡單類的話,則此類必須滿足如下的開發要求: (1)所有的類必須放在一個包中,在WEB中沒有包的是不存在的; (2)所有的類必須宣告為public class,這樣才能夠被外部所訪問; (3)類中所有的屬性都必須封裝,即:使用private宣告; (4)封裝的屬性如果需要被外部所操作,則必須編寫對應的setter、getter方法; (5)一個JavaBean中至少存在一個無參構造方法,此為JSP中的標籤所使用。 四。EL表示式:
二、JSTL
1.獲取的值
<c:set var="example" value="${100+1 } "></c:set>
<c:out value="${example }"></c:out><br>
2.刪除
<c:remove var="example"/><br>
3.輸出
<c:out value="${example }"></c:out><br>
4.if
<c:if test="${10>50 }"> 10>50</c:if><br>
二、迭代標籤
語法:<c:forEach items=“collection” var=“name” varStatus=“status” begin=“int“
end=”int” step=“int” >
//迴圈體
</c:forEach>
1、遍歷輸出數字1--10
<c:forEach begin="1" end="10" var="i">
${i }
</c:forEach><br>
2、頁面輸出1--20之間奇數
<c:forEach begin="1" end="20" step="2" var="i">
${i }
</c:forEach><br>
//定義一個數組
List<Integer>list=new ArrayList<Integer>();
list.add(1);
list.add(3);
list.add(4);
session.setAttribute("list", list);
3、list的陣列遍歷
<c:forEach items="${list }" var="li">
${li }
</c:forEach><br>
4、map的遍歷
<%
Map<String ,String>map=new HashMap<String,String>();
map.put("n", "x");
map.put("a", "xi");
map.put("m", "xia");
map.put("e", "xiao");
session.setAttribute("_map", map);
%>
<c:forEach items="${_map }" var="ll">
${ll}<br>
${ll.value}
</c:forEach>
5、list中儲存user遍歷
<%
List<User> _user=new ArrayList<User>();
User user=new User();
user.setName("rr");
user.setPwd("qq");
_user.add(user);
session.setAttribute("user", _user);
%>
<c:forEach items="${user }" var="uu">
姓名: ${uu.name }密碼:${uu.pwd }
</c:forEach><br>
6、i1頁面
<jsp:forward page="index.jsp"></jsp:forward>