JSP
狀態碼
1xx:信息響應類
2xx:處理成功響應類
3xx:重定向響應類
4xx:客戶端錯誤
5xx:服務端錯誤
JSP是一個可視化的一個SERVLET
jsp的生命週期
轉譯 編譯 實例 初始 服務 銷燬
編譯 初始 執行 銷燬
JSP三大標籤
<%@ 指令
<% java 代碼
<%! 聲明方法以及屬性
<%= 相當於 out.println();
jsp的指令元素 共有三種 @page @include @taglib
@page: 用於設置JSP頁面的屬性,這些屬性將用於和JSP容器通信,控制所生成的servlet結構
@include: 將外部內容包含到JSP文檔中
@taglib: 聲明用戶使用自定義的標籤,將標籤庫描述符文件導入到jsp頁面
JSP九大隱式對象
1.request 封裝用戶請求
2.response 向用戶做出響應
3.page JSP頁面本身
4.session 客戶和服務器間的會話
5.config 包括servlet初始化要用的參數
6.application 於服務器啓動時開始運行,用來存放全局變量,在用戶間共享
7.out向客戶端輸出
8.pageContext 用於訪問page的各種對象
9.exception 異常
局部頁面處理
errorPage 指定當前jsp頁面錯誤的處理
isErorrPage 如果是true 就處理頁面的錯誤信息
靜態包含以及動態包含的區別
靜態包含:<%@ include file="被包含頁面"%>
動態包含:<jsp:include page="被包含頁面" flush="true">
被包含的頁面 不能加 base 和 響應頭
靜態包含發生在:JSP---->java文件階段。動態包含發生在:執行class文件階段動態加入。
靜態包含:只生成一個java文件,
動態包含:生成多個class文件。
值得慶幸的是無論是動態包含還是靜態包含,其request對象都是相同的,也就是同一個request
靜態包含速度優於動態包含
-----------------------------------------------------------------------------------
jsp 三(4)通訊作用域
pageContext 頁面
request 一次溝通
session 包時
application 和服務器一起存亡的。。
el表達式
${} -------是全部都能查找 效率低 依次查找
${作用域Scope.key} --指定作用域 效率高
${pageScope.key}
${requestScope.key}
${sessionScope.key}
${applicationScope.key}
能解析的對象 key value--Object pojo list set map。。。。
----------------------------------------------------------------------------------
jsp 標籤 jstl
倒包
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"; prefix="c" %>
<c:if
<c:forEach
<c:choose>
<c:when
------------------------------------------------------------------------------------
Cookie 會話技術
會話數據保存在瀏覽器客戶端
在session中 會話技術的鑰匙
技術特點
可以將數據保存在客戶端的瀏覽器中
1 構造cookie 對象
new Cookie();
2 設置cookie
setPath 設置他的cookie 的訪問有效路徑
setMaxAge 設置cookie 的時間
setValue 設置cookie的值
3 發送cookie 到瀏覽器保存起來
response.addCookie(cookie名字);
4 服務器接收
Cookie[] request.getCookies();
////////////
獲取 cookie
設置的時候 是 key value
取的時候也是
cookie 侷限性
1 只能存字符類型 不能保存對象
2 只能存非中文
3 1個cookie容量不能超過4kb 1個站點 最多20個cookie
// tomcat8 的值 不能存儲 空格 時間
jsp 獲取cookie
function getCookie(name){
var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
if (arr = document.cookie.match(reg)) {
return (arr[2]);
}else{
return null;
}
};
-----------------------------------------------------------------------------------
亂碼問題:
1 Tomcat配置中文表單
tomcat目錄/conf/server.xml 找到Tomcat的端口號節點加上 URIEncoding="UTF-8"
如: <Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
2.在request 和 response 設置字符編碼
如
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
seesion 作用域(瀏覽器)
默認時間30分鐘
時間的限制:優先級(321)
1. 在tomcat——>conf——>servler.xml文件中定義:(第三個tomcat局部)
<Context path="/test" docBase="/test" defaultSessionTimeOut="3600" isWARExpanded="true" isWARValidated="false" isInvokerEnabled="true" isWorkDirPersistent="false"/> defaultSessionTimeOut="3600"
2. 在web.xml中定義:(第二個web.xml局部)
<session-config> <session-timeout>20</session-timeout> </session-config> 分鐘
3. 在程序中定義:(第一個servlet局部)
session.setMaxInactiveInterval(30*60);
設置單位爲秒,設置爲-1永不過期
session 移除
//單個移除
session.removeAttribute("uname");
//全部銷燬
// session.invalidate(); //銷燬全部session
轉發
轉發是服務端行爲。
轉發過程 請求-》調用servlet-》完成處理轉發-》把內容返回客戶端
1次request,request作用域存在
重定向
重定向是客戶端行爲
重定向過程 請求-》調用servlet-》發送302給瀏覽器-》客戶端收到302繼續請求-》收到服務端返回
2次request,request作用域掉失
===================================
session作用域是默認時間爲三十分鐘
也可以自己設置時間,單位爲秒
轉發
在同一個瀏覽器中
兩個頁面,互相操作控制
http://127.0.0.1:8090/MyServlet/login.do?userName=小櫻&pwd=123456
http://127.0.0.1:8090/MyServlet/main.jsp
兩個網址一樣的內容
==================================================================================
servlet 一種服務器端Java的應用程序 構造 初始 服務 銷燬
filter 過濾器 初始 攔截doFilter() 銷燬
listener 監聽器 和服務器一起存亡
web.xml 加載的順序 context-param-listrener-filter-servlet 0-9
interceptpor 攔截器
=================================================================================