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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.