servlet知識點<六>

 
一、連接池[重點]
    1、ojdbc5.jar放到 tomcat安裝目錄/lib 中
    2、配置連接池,tomcat安裝目錄/conf/context.xml,加在</Context>標籤之前
        <Resource
            driverClassName=""
            url=""
            username=""
            password=""
            name="jdbc/oracle"
            type="javax.sql.DataSource"
            auth="Container"
            maxActive="最大連接數10"
            minActive="最小連接數5"
            maxIdle="最大空閒連接數2"
        />
    3、寫代碼
        //獲取到JNDI資源樹的樹根
        Context context = new InitialContext();
        //獲取數據源
        DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/oracle");
        //獲取連接對象
        Connection conn = ds.getConnection();
        
        //////把連接對象歸還給連接池
        conn.close();
    
    JNDI:Java Naming and Directory Interface Java命名與目錄接口
        根據給定的資源路徑和名稱,查找資源
    
    注意事項:1)context.xml中的配置,嚴格區分大小寫
        2)lookup方法的參數:java:comp/env/數據源的名稱(和配置中的名稱大小寫一致)
    
二、request、session、ServletContext[重點]
    1、request
        1)客戶端的請求
            request.setCharacterEncoding("GBK");
            String str = request.getParameter("文本框的名稱");
            String str = request.getParameter("url?後的參數名");
            String[] likes = requst.getParameterValues("複選框的名稱");
            request.getRequestDispatcher("/url-pattern").forward(request, response);
        2)作用域對象:
            開始:client發出請求,即開始
            結束:響應回到了client,即結束
            使用:request.setAttribute("name", objval);//設置request中的命名屬性
                Object obj = request.getAttribute("name");//獲取命名屬性
    2、session:同一個client的多次請求
        1)作用域對象:
            開始:client發請求,request.getSession(true)
            結束:超時/遇到session.invalidate()
            使用:session.setAttribute("name", objval);//設置session中的命名屬性
                Object obj = session.getAttribute("name");//獲取命名屬性
                session.removeAttribute("name");//移除命名屬性
        2)特點:
            週期比request長,跨越多個request
            與client/IE綁定,一個IE對應着產生一個session
        3)適合做的事情:同一個client的多次請求,想共享數據,如,登錄後的帳號,在後續的請求頁面中請顯示
    3、ServletContext:
        1)是web.xml在內存中的表現。一個web應用,只有一個ServletContext對象(全局唯一)
            ServletContext context = this.getServletContext();
            String str = context.getInitParameter("name");//獲取web.xml中配置的全局初始參數
            web.xml,<context-param>....</context-param>
        2)作用域對象:
            開始:server啓動
            結束:server結束
            使用:context.setAttribute("name", objval);//設置context中的命名屬性
                Object obj = context.getAttribute("name");//獲取命名屬性
                context.removeAttribute("name");//移除命名屬性
        3)特點:
            週期最長,從server啓動 到 server結束
            共享範圍,同一個web應用中,被所有程序共享
        4)適合做的事情:同一個web應用中,不同程序要共享數據時(不同的client/IE要共享數據)
    
    舉例:
        遊戲中的聊天室-聊天內容/在線用戶列表(ServletContext)
        購物車、登錄用戶信息、登錄用戶的權限(session)
        錯誤提示信息(request)
    
    三個作用域對象的對比:
                    開始                結束                    共享範圍        適合做的事情
    request        client請求            響應回client            同一請求        同一請求中要共享數據
    session    client請求,getSession(true)超時/invalidate()    同一IE        同一client要共享數據
    context        server啓動            server停止            同一web應用    不同client要共享數據


三、Listener 監聽器
    1)事件模型:
        事件源:發出事件的對象
        事件:具體的事件/動作
        監聽器:事件處理程序
    2)分類:生命週期監聽器、命名屬性監聽器
        生命週期監聽器:ServletContextListener--針對ServletContext對象的創建和銷燬進行監聽
                   HttpSessionListener--針對HttpSession對象的創建和銷燬進行監聽
                   ServletRequestListener--針對ServletRequest對象的創建和銷燬進行監聽
        命名屬性監聽器:ServletContextAttributeListener--針對ServletContext對象中命名屬性的添加/修改/移除進行監聽
                   HttpSessionAttributeListener--針對HttpSession對象中命名屬性的添加/修改/移除進行監聽
                   ServletRequestAttributeListener--針對ServletRequest對象中命名屬性的添加/修改/移除進行監聽
    3)自定義監聽器
        寫類 implements XXXListener
        編寫web.xml文件,在</filter-mapping>後面添加<listener>
            <listener>
                <listener-class></listener-class>
            </listener>
    
    
    
    
    
    
    
    
    
   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章