第1章 動態網站開發基礎
1. 動態網頁是指服務器端運行的程序或者網頁,它們會隨不同客戶,不同時間,返回不同的內容。
2. 隨着Internet技術的興起,B/S結構是對C/S結構的一種變化或者改進的結構。在這種結構下,程序完全放在應用服務器上,並通過應用服務器同數據庫服務器進行通信。
3. 開發JSP動態網站的步驟如下:
a) 創建一個Web項目
b) 設計Web項目的目錄結構
c) 編寫Web項目的代碼
d) 部署Web項目
e) 運行Web項目
4. 做Web程序開發時,要避免如下錯誤:
a) 未啓動Tomcat服務,或者沒有在預期的端口中啓動Tomcat服務。
b) 未部署Web應用,就試圖運行Web程序
c) 運行時,URL輸入錯誤。
d) 存放文件的目錄無法對外引用,如文件放入了Web-INF、Mate-inf等文件夾中。
第2章 用集合存儲對象
1. 集合框架
由於數組在存放元素時必須要確定初始元素的個數。所以引入使用集合存儲。
2. Java集合框架包含的內容
java集合框架 提供了一套性能優良、使用方便的接口和類。完整的Java集合框架位於java.uril包中,包含衆多的接口和類。
a) 接口
Collection是最基本的集合接口,一個Collection代表一組元素。
List接口繼承自Collection接口。List是有序集合,允許有相同的元素。
Map提供key(鍵)到value(值)的映射。一個Map中不能包含 相同的key,每個key只能映射一個value。
b) 具體類
實現List接口的常用的類有ArrayList和LinkedList。它們都可以容納所有類型的對象,包括null。
ArrayList實現了可變大小的數組。它的優點在於遍歷元素和隨機訪問元素的效率比較高。
LinkedList可以在其首部或尾部進行插入或者刪除操作。
HashMap是Map接口的實現類,實現了一個鍵到值的映射的哈希表。
3. List接口和ArrayList類
List接口中定義的各種常用方法
返回類型 |
方 法 |
說 明 |
boolean |
add(Object o) |
在列表的末尾順序添加元素,起始 索引位置從0開始 |
int |
size() |
返回列表中的元素個數 |
Object |
get(int index) |
返回指定索引位置處的元素 注意:取出的元素是Object類型,使用前需要進行強制類型轉換 |
void |
add(int index; Object o) |
在指定的索引位置添加元素 注意:索引位置必須介於0和列表中元素個數之間 |
boolean |
contains(Object o) |
判斷列表中是否存在指定元素 |
boolean |
remove(Object o) |
從列表中刪除元素 |
4. List接口和LinkedList類
LinkedList的一些特殊方法
返回類型 |
方 法 |
說 明 |
void |
addFirst(Object o ) |
在列表的首部添加元素 |
void |
addList(Object o) |
在列表的末尾添加元素 |
Object |
getFirst() |
返回列表中的第一個元素 |
Object |
getLast() |
返回列表中的最後一個元素 |
Object |
removeFirst() |
刪除並返回列表中的第一個元素 |
Object |
removeLast() |
刪除並返回列表中的最後一個元素 |
5. Map接口和HashMap類
HashMap的常用方法
返回類型 |
方 法 |
說 明 |
Object |
put(Object key,Object value) |
以“鍵-值對”的方式進行存儲 注意:鍵必須是唯一的,值可以重複。如果試圖添加重複的鍵,那麼最後加入的鍵-值對將替換掉原先的鍵-值對 |
Set |
keySet() |
返回鍵的集合 |
Collection |
values() |
返回值的集合 |
boolean |
containsKey(Object key) |
如果存在由指定的鍵映射的“鍵-值對”,返回true |
Object |
get(Object key) |
根據檢返回相關聯的值,如果不存在指定的鍵,返回null |
Object |
remove(Object key) |
刪除由指定的鍵映射的“鍵-值對” |
第3章 訪問數據庫
1. JDBC API
JDBC API可做三件事:與數據庫建立連接、發送SQL語句、處理結果。
JDBC API工作的4個環節:
(1)DriverManager類:依據數據庫的不同,管理JDBC驅動。
(2)Connection接口:負責連接數據庫並擔任傳送數據的任務。
(3)Statement接口:由Connection產生,負責執行SQL語句
(4)ResultSet接口:負責保存Statement執行後所產生的查詢結果。
2. JDBC程序的代碼模塊
1) 把JDBC驅動類裝載入Java虛擬機中。
Class.forName(“JDBC驅動類的名稱”)
2) 加載驅動,並與數據庫建立 連接。
Connection con = DriverManager.getConnection(數據連接字符串,數據庫用戶名,密碼)
3) 發送SQL語句,並得到結果集
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(“select a,b,c from table1”);
4) 處理結果
while(rs.next()){
int x = rs.getInt(“a”);
String s = rs.getString(“b”);
float f = rs.getFloat(“c”);
}
3. Statement語句
Statement接口中執行SQL命令的三個方法:
a) ResulSet executeQuery(String sql):可以執行SQL查詢並獲取到ResultSet對象。
b) int executeUpdate(String sql):可以執行插入、刪除、更新等操作,返回值是執行該操作所影響的行數。
c) boolean execute(String sql ):這是一個最爲一般的執行方法,可以執行任意SQL語句,然後獲得一個布爾值,表示是否返回ResultSet。
4. PreparedStatement語句
PreparedStatement接口繼承自Statement接口,PreparedStatement比普通的Statement對象使用起來更加靈活、更有效率。
PreparedStatement實例包含已編譯的SQL語句,SQL語句可具有一個或多個輸入參數。這些輸入參數的值在SQL語句創建時未被指定,而是爲每個輸入參數保留一個問號(“?”)作爲佔位符。
PreparedStatement pstmt = con.prepareStatement(“update table set a= ? where b = ? ” );
在執行時:pstmt.setLong(1.123456789); pstmt.setInt(2,10);
PreparedStatement對象的executeUpdate()方法 可以執行對數據的增、刪、改的操作。返回一個int類型的值。
executeQuery()方法 可以執行對數據的查詢。返回一個結果集。
第4章 JSP簡介
1. JSP的頁面組成
JSP是通過在HTML中嵌入Java腳本語言來響應頁面動態請求。
JSP頁面由靜態內容、指令、表達式、小腳本、聲明、標準動作、註釋等元素構成。
a) 指令
JSP指令一般也“<%@”開始,以“%>”結束。
例:
<%@ page language=”java” import=”java.util.*,java.text.*” contextType=”text/html; charset = GBK”%>
b) 小腳本
小腳本可以包含任意的Java片段,編寫方法就是將Java程序片斷插入到<% %>標記中。
例:
<%
//使用預定格式將日期轉換爲字符串
SimpleDateFormat formater = new SimpleDateFormat(“yyyy年MM月dd日”);
String strCurrentTime = formatter.format(new Date());
%>
c) 表達式
當需要在頁面中獲取一個Java變量或者表達式值時,可以使用表達式。基本語法是:<%=Java表達式%>
例:
<%=strCurrentTime%>
d) 註釋
<!--這是HTML註釋(客戶端可以看到源代碼)-->
<%--這是JSP註釋(客戶端不可以看到源代碼)--%>
<% /* 多行註釋 */ %>
<%
//使用預定格式將日期轉換爲字符串
%>
2. Web容器處理JSP文件請求需要經過三個階段
l 翻譯(translation)階段。JSP文件會被Web容器中的JSP引擎轉換成Java源碼。
l 編譯(compilation)階段。Java源碼會被編譯成可執行的字節碼。
l 執行階段。容器接受了客戶端的請求後,執行編譯成字節碼的JSP文件。處理完請求後,容器把生成德頁面反饋個給客戶端進行顯示。
第5章 JSP指令和腳本元素
1. page指令 就是通過設置內部的多個屬性來定義JSP文件中的全局特性。page指令只能對當前自身頁面進行設置。即每個頁面都有自身的page指令。
page指令常用屬性
屬 性 |
描 述 |
language |
指令JSP頁面使用的腳本語言,默認爲Java |
import |
通過該屬性來引用腳本語言中使用到的類文件 |
contentType |
用來指定JSP頁面所採用的編碼方式,默認爲text/html |
1) language屬性
page指令中的language屬性用來指定當前JSP頁面所採用的腳本語言。
例:<%@page language=”java”%>
2) import屬性
通過import屬性可以在JSP文件的腳本片段中引用外在的類文件。如果一個import屬性引入多個類文件時,需要在多個類文件之間用逗號隔開。
例:
<%@ page import=”java.util.*,java.text.*” %>
2. JSP腳本元素
在JSP頁面中可以包含靜態內容、指令、表達式、小腳本、聲明、標準動作以及註釋。
其中,表達式(expression)、小腳本(scriptlet)、聲明(declaration)統稱爲Java腳本元素。用來嵌入Java代碼,實現頁面動態請求。
3. JSP九個內置對象
1) out
2) page
3) pageContent
4) request
5) response
6) session
7) application
8) Exception
9) config
第6章 使用JSP處理客戶端請求
一、HTML表單
表單的標記是<form>,它的兩個重要參數:action和method。
action表示表單要提交到的地點 method表示表單發送的方法。一般用post
二、JSP內置對象
1. request對象
例:
<%
request.setCharacterEncoding(“GBK”);
String titleName=request.getParameter(“titlename”);
%>
request對象的幾個常用的方法
方法名稱 |
說 明 |
String getParameter(String name) |
根據頁面表單組件名稱獲取頁面提交數據 |
String[] getParameterValues(String name) |
獲取一個頁面表單組件對應多個值時的用戶的請求數據 |
void setCharacterEncoding(String charset) |
指定每個請求的編碼,在調用request.getParameter()方法之前進行設定,可以用於解決中文亂碼問題 |
request.getRequestDispatcher(String path) |
返回一個javax.servlet.RequestDispatcher對象,該對象的formard方法用於轉發請求 |
2. out對象
例:
<%
out.print(“hello ACCP”);
%>
3. response對象
response對象的常用方法void sendRedirect(String location),這個方法用來將請求重定向到一個不同的URL。
例:
String name = request.getParameter(“userName”);
String pwd = request.getParameter(“pwd”);
if(name.equal(“sa”) && pwd.equals(“sa”)){
response.sendRedirect(“welcome.jsp”);
}
當需要類型轉換時用Integer.parseInt(“獲取到的東西”);
例:int parentTitleId = Integer.parseInt(request.getParameter(“parenttitle”));
第7章JSP頁面的訪問控制
一、JSP內置對象session
session對象用來存儲有關用戶會話的所有信息
session對象的常用方法:
a) void setAttribute(String key,Object value):以鍵/值的方式,將一個對象的值存放到session中去。例如:session.setAttribute(“name”,”admin”); 含義是把字符串admin存放到session中去,它對應的鍵時name。
b) Object getAttribute(String key):根據鍵去獲取session中存放的對象的值。
例: String name = (String) session.getAttribute(“name”); 通過名稱name的鍵獲取session中存放的對象的值。
每個session對象都與瀏覽器一一對應,也就是說,重新開啓一個瀏覽器窗口。相當於重新創建一個session對象。
二、include指令
include指令可以將一些共性的內容寫入一個單獨的文件中,然後通過include指令引用該文件,從而緩解代碼的冗餘問題。
例:
<%@ include file=”checklogin.jsp”%>
三、內置對象application
application對象的常用方法:
1. void setAttribute(String key,Object value):以鍵/值的方式,將一個對象的值存放到application中。
2. Object getAttribute(String key):根據鍵去獲取application中存放對象的值。
例:
if(rs.next()){
User logineduser = new User(name,pass);
session.setAttribute(“Logined_user”,logineduser);
List loginedUsers = new ArrayList(); //訪問者列表
//全局範圍內取出原有的訪問者列表
if(application.getAttribute(“Logined_user”) !=null){
loginedUsers = (List)application.getAttribute(“Logined_user”);
}
//把新登錄用戶的信息存入訪問者列表中
loginedUsers.add(logineduser);
//在全局範圍內存入訪問者列表
application.setAttribute(“Logined_user”,loginedUsers);
}
JSP的幾個常用的內置對象
內置對象名稱 |
說 明 |
out對象 |
用於向客戶輸出數據 |
request對象 |
主要用於客戶端的請求處理 |
response對象 |
用於響應客戶請求並向客戶端輸出信息 |
session對象 |
用來存儲有關用戶會話的所有信息 |
application對象 |
類似於系統的全局變量,用於實現用戶之間的數據共享 |
page |
|
Exception |
|
pageContent |
|
config |
|