1、 JSP基礎概念javascript
B/S架構:Browser/Server,瀏覽器-服務器 css
最大的優勢就是:一次部署,到處訪問。html
C/S架構:Client/Server,客戶端-服務器 java
功能、事件豐富,能夠完整的使用計算機的一系列資源。可是升級維護不方便。mysql
採用請求+相應的工做模式進行交互。web
1.輸入打開瀏覽器,輸入網址,回車。sql
2.請求將由客戶端瀏覽器發送至WEB應用服務器,進行處理。數據庫
3.WEB應用服務器將響應的結果(html\css\js\image...)發送回客戶端瀏覽器express
4.瀏覽器渲染解析html,將頁面呈現出來。apache
定義:統一資源定位符。經過URL來尋找網絡資源。
格式:協議部分 主機地址 目標資源地址 參數
示例:http://www.cnblogs.com/java/articlelist.jsp?key=tomcat
解釋:協議部分:http協議
主機地址:www.cnblogs.com
資源地址:java/articlelist.jsp
參數部分:key=tomcat
注意:http協議的默認端口是:80。
是能夠向發出請求的瀏覽器提供文檔的程序。提供網上的信息瀏覽服務。
常見的WEB服務器:IIS、Tomcat、WebLogic、Apache、Nginx......
下載地址:
目錄結構:
1.bin目錄:用於存放tomcat的一些核心組件、啓動以及中止的命令。
2.conf目錄:TOMCAT的配置目錄,裏面存放了tomcat的一系列配置文件。
3.lib目錄:存放TOMCAT運行時須要的全部Jar包
4.logs目錄:存放tomcat啓動、運行過程當中產生的全部日誌文件。
5.temp目錄:臨時目錄
6.webapps目錄:web網站發佈的目錄
7.work目錄:tomcat中發佈的動態網站的工做目錄。
如何修改Tomcat的默認端口:
1>.Window -> Pereferences 打開對話框
2>.展開Server節點,選擇Runtime Environment。
3>.從右側點擊Add按鈕,從對話框中選擇Apache Tomcat 7.0,點擊下一步
4>.在彈出的Tomcat Server對話框中選擇以前Tomcat的解壓目錄。點擊完成便可。
1>.java Resrouces -> src 目錄:存放全部的java源文件
2>.WebContent 目錄:存放網站須要的jsp頁面文件、html文件、css、js、image等資源。
3>.build 目錄:java文件、jsp文件的編譯目錄
4>.Web Content -> WEB-INF 目錄:該目錄中的全部文件不會直接被客戶端(瀏覽器)訪問。
因此一些敏感的資源文件能夠放到本目錄。好比網站的配置文件web.xml文件就存在於該目錄。
1>.打開Server窗口
2>.右擊Server窗口的空白區域,依次選擇:New -> Server,彈出新建服務器窗口
3>.從窗口中選擇Tomcat v7.0 Server,點擊Finishe便可。
4>.雙擊新添加的Tomcat v7.0 Server節點,便可彈出新的對話框。
從對話框中選擇Server Locations,選中第二項:Use Tomcat installation;
同時,Server Path修改成:webapps。
最後Contrl + S保存。
5>.右擊Tomcat,選擇「Add And Remove」
從對話框的左側選擇目標網站,點擊Add按鈕便可添加到右側。
最後點擊Finish。
1>.Window -> Pereferences 打開對話框,選擇General -> Content Types:
從右側選擇Text -> JSP,而後在最下面的文本框中將ISO-8859-1改成UTF-8
2>.選擇General -> Workspace
從右側最下面,選擇text file encoding,改成:UTF-8。
3>.選擇Web -> JSP Files節點
從右側Encoding選擇ISO 10646/Unicode(UTF-8)
最後點擊OK便可。
JSP(Java Server Pages)。JSP是運行在服務器端的Java頁面。使用HTML嵌套Java代碼實現。
1>. <% ... %>
在裏面能夠寫多行java代碼,每行用分號結尾。注意:不能定義方法。
2>. <%! ... %>
在裏面只能定義全局變量和方法。
3>. <%= ... %>
向頁面輸入內容。等價與<% out.write("abc"); %> == <%= "abc" %>
在page指令中添加屬性import,值爲包名。
<%@ page import="java.util.*" %>
例如,將index.jsp配置成默認頁。
1>.打開web.xml文件,修改welcome-file-list;
2>.在第一個節點中添加<welcome-file>index.jsp</welcome-file>
注意:每次web.xml被修改之後,要重啓Tomcat。
1.get會將參數跟到url地址後面;post則不會。
2.get提交的數據有大小限制,Post則不會。
3.get提交不安全,post提交安全。
4.get方式有利於Url傳播,post則不利於url傳播。
200 請求成功
404 請求的資源不存在
500 服務器內部錯誤
302 重定向
2、 JSP九大內置對象
request.getRemoteAddr() 獲取客戶端的IP地址。
request.setAttibute(String, Object) 存儲數據
Object request.getAttribute(String) 獲取數據
String 值 = request.getParameter("參數名"); 獲取參數的單個值
String[] 值s = request.getParameterValues("參數名");獲取參數的多個值
注意:只有在同一次請求中存儲的數據才能共享。
轉發和重定向
重定向:客戶端會前後發送2次請求到服務器。
response.sendRedirect("welcome.jsp");
重定向是客戶端行爲。
轉發:客戶端向服務器發送一次請求,服務器端再請求另一個頁面地址,最後將結果響應給客戶端
request.getRequestDispatcher("login.jsp").forward(request, response);
轉發是服務器行爲。
application是服務器開闢的一塊共享數據存儲區域。全部的會話都可以從application讀寫數據。
application中存儲的數據永遠有效(服務器關閉時數據纔會失效)。
applicaton.setAttribute(String key, Object value);//存或修改數據
Object applicaton.getAttribute(String key); //讀取數據
applicaton.removeAttribute(String key);//移除數據
客戶端第一次向服務器發送請求之後,會話就會創建。當把瀏覽器關閉掉,從新再打開瀏覽器,就算是另外一次新會話了。服務器會爲每個會話創建單獨的數據存儲區域。
session中存儲的數據有有效期的限制。session默認超時時間爲30分鐘。
更改默認超時時間有兩種方式:
方式一:經過配置修改
在web.xml文件中調整session失效時間:
<session-config> <session-timeout>30</session-timeout> </session-config> |
方式二:經過Java代碼修改
session.setMaxInactiveInterval(30*60);//以秒爲單位
session其餘方法介紹
1.session.setAttribute(String key, Object value);//存或修改
2.Object session.getAttribute(String key); //讀取數據
3.session.removeAttribute(String key);//移除數據
4.session.invalid();//設置session失效(會話失效而且該會話全部存儲的數據都將丟失)
3、 Cookie介紹
1>.cookie將數據存儲客戶端計算機。
Cookie cookie1 = new Cookie(String, String);
向客戶端寫cookie,使用response:response.addCookie(...);
獲取客戶端的cookie,使用request:request.getCookies();
2>.Cookie也有生命週期(有效期),經過cookie.setMaxAge(int seconds)。
若是seconds=0,表示當關閉瀏覽器後,cookie自動失效;
若是seconds<0,表示從客戶端刪除cookie;
若是seconds>0,表示cookie失效的具體時間。
注意:JSESSIONID是系統系統添加的一個cookie,每次會話建立後JSESSIONID就會添加到cookie中。
3>.對於一些不敏感(不重要)的業務數據,而且數據量較小,就能夠存儲到cookie中。
4>.cookie、session、application在存儲數據方面的差別。
相同點:
cookie、session、application均可以存儲數據。
不一樣點:
1.session和application都是把數據存儲到服務器端;
2.cookie將數據存儲到客戶端;
3.session是用戶會話級別,不一樣用戶不能共享數據;application是全局的,全部用戶共享數據。
4.session和application會對服務器形成壓力,而cookie不會。
4、 JSP亂碼問題(java後臺亂碼)
JSP默認採用ISO-8859-1編碼,該編碼不支持中文等字符。因此須要在後臺設置編碼格式。
以GET方式發送請求時的編碼解決方案:
第一種:String title = request.getParameter("advtitle");
String title1 = new String(title.getBytes("ISO-8859-1"), "UTF-8");
第二種:在tomcat的conf->server.xml中修改Connector,增長URIEncoding屬性。
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/> |
以POST方式發送請求時的編碼解決方案:
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
5、 JDBC
1.基本概念
定義:Java DataBase Connectivity。java數據庫鏈接技術。
用途:用於實現java程序和各類數據庫(Oracle|Mysql|Sql Server...)的操做。
JDBC提供了一組類和接口(API),它們位於java.sql以及javax.sql包中。
2.JDBC訪問數據庫的步驟
1>.加載驅動程序
首先將驅動的jar包文件拷貝到web項目的lib目錄中
Class.for("驅動程序類");//加載驅動程序
2>.獲取鏈接對象
鏈接字符串:jdbc:mysql://127.0.0.1:3306/newsdb?user=root&password=123456
Connection connection = DriverManager.getConnection("鏈接字符串");
3>.建立Statement,執行SQL語句
Statement stmt = connection.createStatement();
int count = Statement.executeUpate(String sql);
注意:
executeUpdate方法處理的SQL包括DML(insert|update|delete)和DDL(Create|ALTER|DROP)
executeUpate()方法的返回值爲int
insert|update|delete返回值爲大於0的值,表示成功
create|alter|drop返回值永遠爲0
Statement.executeQuery(String sql);
注意:
executeQuery方法處理的SQL包括DQL(select)
4>.返回ResultSet結果或者數據庫受影響的行數
ResultSet set = stmt.executeQuery(); while(set.next()==true){ //循環一次取一條 set.getString(arg0);//取字符串 set.getInt(arg0);//取整數 set.getDouble(columnLabel);//取double set.getFloat(columnIndex);//取float set.getDate(columnIndex);//取年月日 set.getTime(columnIndex);//取時分秒 set.getTimestamp(columnIndex)//取年月日時分秒 } |
5>.關閉鏈接
connection.close();
3. SQL注入
用戶輸入一些特殊的字符,讓程序中動態拼接的SQL語句,改變原來執行的含義,最終獲取非預期的結果。
致使SQL注入的緣由就在於:程序中的SQL語句是經過字符串動態拼接的。
例如:
String sql = "select * from userinfo where username='"+uname+"' and password='"+upass+"'";
若是uname = zhangsan upass = 123456,那麼上述sql變量的值爲:
select * from userinfo where username='zhangsan' and password='123456'
若是uname = 1' or 1=1 or '1 upass = 123456,那麼上述sql變量的值爲:
select * from userinfo where username='1' or 1=1 or '1' and password='123456'
4.如何避免程序中被SQL注入?
使用參數化查詢。具體來講,就是在程序中儘可能不要使用Statement類,而採用PreparedStatement類。
Statement是PreparedStatement的父類。
//SQL語句中,每個參數使用?做爲佔位符 String sql = "select count(*) from userinfo where username=? and userpass=?"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setString(1, username); stmt.setString(2, userpass); ResultSet set = stmt.executeQuery(); |
6、 分層開發
1.分層開發
在項目實際開發過程當中,會將整個項目從上到下劃分爲界面層、業務邏輯層、數據層。
三層開發是項目開發實踐中典型的開發模式。
目的:實現高內聚、低耦合。
2.各層功能
界面層
功能:負責數據展現,蒐集用戶輸入。即和用戶進行交互的層。
界面層通常是指jsp頁面、html頁面等。
業務邏輯層
功能:負責處理功能模塊的業務邏輯,以及界面層和數據層的數據流轉。
添加類的原則:
根據功能模塊來添加類。好比有用戶管理模塊,那麼則能夠添加UserManagerService類。
數據層
功能:和數據庫進行交互。
通常在數據層會編寫SQL語句;JDBC;Hibernate、mybatis。
添加類的原則:
每張數據表均添加一個對應的數據操做類。好比用戶表userinfo,則添加UserInfoDao類。
實體層
針對數據表建立出來的實體類;+ 用戶自定義的一些實體類
3.各個層之間的調用關係
界面層 調用 業務邏輯層;
業務邏輯層 調用 數據層;
數據層 操做 數據庫;
注意:調用的意思,就是在代碼中建立對應的類對象,而後經過對象調用方法。
4.分層開發的優缺點
優勢:
1、開發人員能夠只關注整個結構中的其中某一層;
2、能夠很容易的用新的實現來替換原有層次的實現;
3、能夠下降層與層之間的依賴;
4、利於各層邏輯的複用。
缺點:
1、下降了系統的性能
2、增長了程序的複雜度
3、有時會致使級聯的修改。
7、 Servlet
1.Servlet基本概念
每個jsp頁面就是一個java類,該類繼承自:HttpJspBase -> HttpServlet。
因此說一個jsp頁面本質上就是一個servlet。
Servlet的使用步驟
1>.定義Servlet:
添加一個普通的Java類,而後繼承HttpServlet類。
最後重寫doGet和doPost方法。
以get方式發送的請求進入doGet方法處理;以Post方式發送的請求進入doPost方法處理。
2>.在web.xml中配置servlet。
<servlet> <servlet-name>welcome_servlet</servlet-name> <servlet-class>jsp_charpter3_0908.Welcome</servlet-class> </servlet> <servlet-mapping> <servlet-name>welcome_servlet</servlet-name> <url-pattern>/welcome.html</url-pattern> </servlet-mapping> |
注意:每一個servlet都要配置兩個xml節點:servlet、servlet-mapping;
兩個節點中servlet-name必須同樣;
url-pattern:用於指定映射的url地址
2.Content-Type
內容類型,通常是指網頁中存在的Content-Type,用於定義網絡文件的類型和網頁的編碼。
決定文件接收方將以什麼形式、什麼編碼讀取這個文件。
常見的Content-Type
text/css 層疊樣式表
text/javascript js代碼
text/html html代碼
text/plain 純文本
image/jpeg 圖片jpg
application/msword word文檔
application/vnd.ms-excel excel文檔
application/json
response.setContentType("content-type");
3.基於註解配置Servlet
在添加的Servlet類上面添加註解:WebServlet
name:設置servlet的名稱
urlPatterns:設置servlet的Url映射地址
示例:
@WebServlet(name="delete_goods", urlPatterns={"/goods/delete.html"})
public class AddGoods extends HttpServlet{...}
4.其餘
如何在Servlet中獲取session
HttpSession session = request.getSession();
8、 EL表達式
全名:Expression Language,即表達式語言。
做用:它提供了在 JSP 中簡化表達式的方法,讓Jsp代碼更加簡化。代替JSP頁面中複雜的JAVA代碼。
語法:EL表達式老是用大括號括起,並且前面有一個美圓符($)前綴:${expression}。
n EL 提供.和[]兩種運算符來存取數據。
n 點號操做符容許使用一個Map鍵或一個bean屬性名來訪問值。
例如:使用${foo.bar}能夠獲得bar屬性的值。
注意:放在點號操做符右邊的東西必須遵循Java的標識符命名規則!
n []操做符比點號功能更強大,由於利用[]能夠訪問數組和List。
例如,若是musicList是一個ArrayList,能夠用${musicList[0]}或${musicList["0"]}來訪問列表的第一個值。
注意:當要存取的屬性名稱中包含一些特殊字符,如.或?等並不是字母或數字的符號,就必定要使用 []。
例如:${user.My-Name}應當改成${user["My-Name"] }
若是要動態取值時,就能夠用[]來作,而.沒法作到動態取值。
例如:${sessionScope.user[data]}中data 是一個變量。
n 與範圍有關的隱含對象
pageScope、requestScope、sessionScope 和applicationScope。
在EL中,這四個隱含對象只能用來取得範圍屬性值,即getAttribute(String name),卻不能取得其餘相關信息。例如:咱們要取得session中儲存一個屬性username的值,java代碼爲:session.getAttribute("username")。而在EL中則使用下列方法:${sessionScope.username}。若是獲取的對象爲null,使用el表達式則不會輸出null,可是經過getAttribute會在頁面中輸出Null。
${...Scope.name} 也能夠這樣寫${name};
此時el會依次從pageScope>requestScope>sessionScope>applicationScope中查找name。
n 與輸入有關的隱含對象
與輸入有關的隱含對象有兩個:param和paramValues,它們是EL中比較特別的隱含對象。
例如:咱們要取得用戶的請求參數時,能夠利用下列方法:
request.getParameter(String name)和request.getParameterValues(String name) 。
在EL中則可使用param和paramValues二者來取得數據。
語法格式爲:${param.name}和${paramValues.name}。
1>.cookie
例:要取得cookie中名稱爲userCountry的值,可使用${cookie.userCountry}來取得它。
2>.header和headerValues
header 儲存用戶瀏覽器和服務端用來溝通的數據
例:要取得用戶瀏覽器的版本,可使用${header["User-Agent"]}。
1>.算術運算符有五個:+、-、*或$、/或div、%或mod
2>.關係運算符有六個:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge
3>.邏輯運算符有三個:&&或and、||或or、!或not
4>.其它運算符有三個:Empty運算符、條件運算符、()運算符
例:${empty param.name}、${A?B:C}、${A*(B+C)}
在JSP頁面中能夠動態的啓用或者禁用EL表達式
<%@ page isELIgnored="true"%> 表示是否禁用EL語言,TRUE表示禁止.FALSE表示不由止.JSP2.0中默認的啓用EL語言.
9、 JSTL
JSP標準標籤庫(JSTL)是一個JSP標籤集合,它封裝了JSP應用的通用核心功能。
JSTL支持通用的、結構化的任務,好比迭代,條件判斷,XML文檔操做,國際化標籤,SQL標籤。 除了這些,它還提供了一個框架來使用集成JSTL的自定義標籤。
根據JSTL標籤所提供的功能,能夠將其分爲5個類別。
n 核心標籤
n 格式化標籤
n SQL 標籤
n XML 標籤
n JSTL 函數
Apache Tomcat安裝JSTL 庫步驟以下:
從Apache的標準標籤庫中下載的二進包(jakarta-taglibs-standard-current.zip)。
下載地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
下載jakarta-taglibs-standard-1.1.1.zip 包並解壓,將standard.jar和jstl.jar文件拷貝到/WEB-INF/lib/下。
注意:使用任何庫,必須在每一個JSP文件中的頭部包含<taglib>標籤。
核心標籤是最經常使用的JSTL標籤。引用核心標籤庫的語法以下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
標籤 描述
<c:out> 用於在JSP中顯示數據,就像<%= ... >
<c:set> 用於保存數據
<c:remove> 用於刪除數據
<c:catch> 用來處理產生錯誤的異常情況,而且將錯誤信息儲存起來
<c:if> 與咱們在通常程序中用的if同樣
<c:choose> 自己只當作<c:when>和<c:otherwise>的父標籤
<c:when> <c:choose>的子標籤,用來判斷條件是否成立
<c:otherwise> <c:choose>的子標籤,接在<c:when>標籤後,當<c:when>爲false時被執行
<c:import> 檢索一個絕對或相對 URL,而後將其內容暴露給頁面
<c:forEach> 基礎迭代標籤,接受多種集合類型
<c:forTokens> 根據指定的分隔符來分隔內容並迭代輸出
<c:param> 用來給包含或重定向的頁面傳遞參數
<c:redirect> 重定向至一個新的URL.
<c:url> 使用可選的查詢參數來創造一個URL
forEach標籤講解:
<c:forEach var="" items="" varStatus="" begin="" end="" step=""></c:forEach>
【參數解析】:
I、var設定變量名用於存儲從集合中取出元素。
II、items指定要遍歷的集合。
III、varStatus設定變量名,該變量用於存放集合中元素的信息。
IV、begin、end用於指定遍歷的起始位置和終止位置(可選)。
V、step指定循環的步長。
【varStatus有4個狀態屬性】:
index:當前循環的索引值
count:循環的次數
frist:是否爲第一個位置
last:是否爲最後一個位置
JSTL格式化標籤用來格式化並輸出文本、日期、時間、數字。引用格式化標籤庫的語法以下:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
標籤 描述
<fmt:formatNumber> 使用指定的格式或精度格式化數字
<fmt:formatDate> 使用指定的風格或模式格式化日期和時間
<fmt:formatDate value="${xx}" pattern="dd/MM/yyyy hh:mm aa"/>
10、 過濾器
1.過濾器
概念:過濾器能夠動態地攔截請求和響應,以變換或使用包含在請求或響應中的信息。
過濾器就是一個實現了Filter接口的Java類。
在客戶端的請求訪問後端資源以前,攔截這些請求。
在服務器的響應發送回客戶端以前,處理這些響應。
2.如何使用過濾器
1>.定義一個類,實現接口Filter
2>.重寫init、destroy、doFilter方法。
n init(FilterConfig arg0)方法在初始化過濾器時被調用,在生命週期內只執行一次。
n doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
攔截請求的核心方法。
//參數1:請求對象
HttpServletRequest request = (HttpServletRequest)req;
//參數2:響應對象
HttpServletResponse response = (HttpServletResponse)resp;
//參數3:過濾器鏈 chain
n destroy()方法,在過濾器被銷燬時調用。
3.課堂案例
n 編碼過濾器:解決post提交時,中文亂碼問題
n 權限過濾器:解決未登陸狀態下,拒絕訪問系統資源。
@WebFilter(filterName="login_filter", urlPatterns={"/*"}) public class AuthFilter implements Filter {
@Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { //參數1:請求對象 HttpServletRequest request = (HttpServletRequest)req; //參數2:響應對象 HttpServletResponse response = (HttpServletResponse)resp; //排除登陸 String url = request.getRequestURL().toString(); if(url.toLowerCase().contains("login.html")){ //繼續後續操做 chain.doFilter(request, response); return; }
//判斷是否已經登陸 if(request.getSession().getAttribute("user")==null){ //跳轉到登陸 response.sendRedirect(request.getContextPath() + "/login.html"); }else{ //繼續後續操做 chain.doFilter(request, response); } }
@Override public void destroy() { }
@Override public void init(FilterConfig arg0) throws ServletException { } } |
n 獲取請求消耗的時間的過濾器:查看系統中的性能瓶頸點。
4.過濾器的應用場合:
n 身份驗證過濾器(Authentication Filters)。
n 數據壓縮過濾器(Data compression Filters)。
n 加密過濾器(Encryption Filters)。
n 觸發資源訪問事件過濾器。
n 圖像轉換過濾器(Image Conversion Filters)。
n 日誌記錄和審覈過濾器(Logging and Auditing Filters)。
n MIME-TYPE 鏈過濾器(MIME-TYPE Chain Filters)。
n 標記化過濾器(Tokenizing Filters)。
11、 文件上傳
1.在JSP中實現文件上傳
1>.解決方案:Apache提供的文件上傳組件。
2>.將下面的兩個jar包拷貝到lib目錄。
commons-fileupload-***.jar
commons-io-***.jar
3>.修改jsp頁面中的form標記
method屬性必定要設置爲post。
將enctype屬性的值設置爲multipart/form-data
注意:enctype="multipart/form-data",form表單將以二進制流的形式提交到web服務器。
以後,就不能再經過request.getParameter("...")來獲取參數值了,好鬱悶...
在JDBC的操做中,打開和關閉數據庫鏈接,是最耗費數據庫資源的,咱們能夠在服務器上存放必定量的數據庫鏈接,每當程序要鏈接數據庫時,就將這些連接給它們,而一旦程序退出數據庫操做時,要將這些連接返回給服務器。
數據庫鏈接池:負責分配、管理和釋放數據庫鏈接。這項技術能明顯提升對數據庫操做的性能。
下圖是數據源的基本概念:
1:經過Connection Pool 管理數據庫鏈接
2:經過Data Source 去管理Connection Pool
3: Data Source 被JNDI Tree 綁定
JNDI配置方式
如今來說一下如何到服務器上對 Data Source 進行配置?
服務器: Tomcat 7
數據庫:MySQL
<Resource name="jdbc/shopping" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="root" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/shopping" /> |
上下文context.xml中的參數的解析以下:
n name屬性是數據源名稱,一般採起jdbc/**.
n driverClassName屬性是驅動程序名稱。
n username,password,數據庫名稱和密碼
n url:訪問的數據庫路徑。其中url的內容組成解析上篇博客中已經分析
n maxActive屬性是併發鏈接的最大數。設置爲0則無限制。
n maxWait屬性是等待鏈接的最大鏈接的時間。
n maxIdle屬性是鏈接池中空閒的鏈接的個數。
JDBC驅動程序mysql-connector-java-5-bin.jar放置在%TOMCAT_HOME%\lib和應用的WEB-INF\lib下。
注意:在查找時須要對名稱進行定位:java:comp/env
Connection conn = null; try { Context context = new InitialContext(); DataSource dataSource = (DataSource)context.lookup("java:comp/env/jdbc/shopping"); conn = dataSource.getConnection(); } catch (NamingException e) { e.printStackTrace(); } |