關於jsp 的那些事

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 攔截器

 

=================================================================================

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章