首先,簡(jiǎn)單介紹一下兩大軟件編程體系:
圖片理解
(一)Web簡(jiǎn)介
做WEB應(yīng)用就是B/S結(jié)構(gòu)罕容,所有的客戶端和所有的服務(wù)器要進(jìn)行通信备恤,必須采用雙方認(rèn)可的規(guī)則,即HTTP,( Hypertext transport protocol)進(jìn)行通信锦秒。無(wú)狀態(tài)通信露泊。
無(wú)狀態(tài)——當(dāng)瀏覽器向服務(wù)器發(fā)送request時(shí),服務(wù)器之后向?yàn)g覽器作出response脂崔,這個(gè)過(guò)程完成后滤淳,此過(guò)程就會(huì)斷開,稱之為無(wú)狀態(tài)砌左。在默認(rèn)的情況下脖咐,服務(wù)器不會(huì)記住客戶端的私有信息,就像是一個(gè)沒有記憶的魚一樣汇歹。
- Web的特點(diǎn)
(1)用超文本標(biāo)記語(yǔ)言(HTML)來(lái)表達(dá)信息
(2)用統(tǒng)一資源定位URL(UniformResourceLocator)來(lái)對(duì)網(wǎng)絡(luò)上信息的精確定位屁擅。
(3)使用DNS域名解析來(lái)處理IP,以方便記憶产弹。
(4)用HTTP協(xié)議來(lái)實(shí)現(xiàn)與Web服務(wù)器之間的通信派歌。底層為TCP/IP協(xié)議弯囊。 - Web資源
(1)靜態(tài)資源:html、css
(2)servlet/JSP胶果、ASP匾嘱、PHP
凡是用java技術(shù)來(lái)開發(fā)web應(yīng)用中的動(dòng)態(tài)資源,就叫做JavaWeb早抠。
- Url格式講解
(二)做Web應(yīng)用霎烙,為什么要用Web服務(wù)器呢?
因?yàn)槿绻麤]有Web服務(wù)器蕊连,就不能夠?qū)⒈镜刭Y源讀取出來(lái)并響應(yīng)給遠(yuǎn)程的客戶端悬垃。Web服務(wù)器相當(dāng)于一個(gè)中介,接受客戶端的請(qǐng)求甘苍,并做出對(duì)應(yīng)的響應(yīng)尝蠕。
在這里采用安裝Tomcat服務(wù)器,啟動(dòng)服務(wù)器后载庭,在瀏覽器地址欄輸入如下URL:http://127.0.0.1:8080回車看彼,出現(xiàn)下圖就表明安裝成功!
(三) Web應(yīng)用的組成結(jié)構(gòu)
開發(fā)web應(yīng)用時(shí)昧捷,不同類型的文件有嚴(yán)格的存放規(guī)則闲昭,否則不僅可能會(huì)使web應(yīng)用無(wú)法訪問(wèn),還會(huì)導(dǎo)致web服務(wù)器啟動(dòng)報(bào)錯(cuò)靡挥。
所有的Web資源序矩,都應(yīng)該放在一個(gè)目錄下保存,該目錄我們叫Web應(yīng)用的根目錄跋破,也叫網(wǎng)站的根目錄簸淀。Web應(yīng)用開發(fā)好后,若想供外界訪問(wèn)毒返,需要把Web應(yīng)用所在目錄交給Web服務(wù)器管理租幕,這個(gè)過(guò)程稱之為虛擬目錄的映射。
(四)數(shù)據(jù)庫(kù)——MySQL
- 安裝數(shù)據(jù)庫(kù)
- 數(shù)據(jù)庫(kù)服務(wù)器拧簸、數(shù)據(jù)庫(kù)和表的關(guān)系
1劲绪、所謂安裝數(shù)據(jù)庫(kù)服務(wù)器,只是在機(jī)器上裝了一個(gè)數(shù)據(jù)庫(kù)管理程序盆赤,這個(gè)管理程序可以管理多個(gè)數(shù)據(jù)庫(kù)贾富,一般開發(fā)人員會(huì)針對(duì)每一個(gè)應(yīng)用創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。
2牺六、為保存應(yīng)用中的數(shù)據(jù)颤枪,一般會(huì)在數(shù)據(jù)庫(kù)創(chuàng)建多個(gè)表,以保存程序中的數(shù)據(jù)淑际。
3畏纲、數(shù)據(jù)庫(kù)服務(wù)器扇住、數(shù)據(jù)庫(kù)和表的關(guān)系如圖所示:
client客戶端通過(guò)MySQL數(shù)據(jù)庫(kù)服務(wù)器,可訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)盗胀,每個(gè)數(shù)據(jù)庫(kù)中建立了多個(gè)表艘蹋,表中有多個(gè)記錄(行)。
-
對(duì)數(shù)據(jù)庫(kù)的操作
- 創(chuàng)建票灰、備份與恢復(fù)數(shù)據(jù)庫(kù)
(1)備份數(shù)據(jù)庫(kù):mysqldump -uroot -p mydb1 > E:/mydb1.sql
將該數(shù)據(jù)庫(kù)中的表內(nèi)容復(fù)制到對(duì)應(yīng)的SQL文件中
注:該條指令必須在Windows環(huán)境中運(yùn)行簿训,需要退出mysql環(huán)境
(2)恢復(fù)數(shù)據(jù)庫(kù):
mysql > source
將SQL文件中的內(nèi)容還原成數(shù)據(jù)庫(kù)中的表注:恢復(fù)時(shí),先創(chuàng)建數(shù)據(jù)庫(kù)米间,再使用該數(shù)據(jù)庫(kù),通過(guò)source命令膘侮。因?yàn)镾QL文件中只有表的信息屈糊。
- 對(duì)數(shù)據(jù)庫(kù)中的表的操作
(五)JDBC簡(jiǎn)介
- JDBC是什么?
數(shù)據(jù)庫(kù)驅(qū)動(dòng)琼了;
SUN公司為統(tǒng)一對(duì)數(shù)據(jù)庫(kù)的操作逻锐,定義了一套Java操作數(shù)據(jù)庫(kù)的規(guī)范,稱之為JDBC雕薪;
為什么要統(tǒng)一呢昧诱?
因?yàn)槊總€(gè)程序員使用不同的數(shù)據(jù)庫(kù)就要寫不同的數(shù)據(jù)庫(kù),這樣工作太繁瑣了
所以使用JDBC進(jìn)行統(tǒng)一
- JDBC全稱為:Java Data Base Connectivity(java數(shù)據(jù)庫(kù)連接)所袁,它主要由接口組成盏档。
- 組成JDBC的2個(gè)包:
(1)java.sql
(2)javax.sql
開發(fā)JDBC應(yīng)用需要以上2個(gè)包的支持外,還需要導(dǎo)入相應(yīng)JDBC的數(shù)據(jù)庫(kù)實(shí)現(xiàn)(即數(shù)據(jù)庫(kù)驅(qū)動(dòng))燥爷。
- JDBC連接數(shù)據(jù)庫(kù)解析
編寫一個(gè)程序蜈亩,這個(gè)程序從user表中讀取數(shù)據(jù),并打印在命令行窗口中前翎。
一稚配、搭建實(shí)驗(yàn)環(huán)境 :
1、在mysql中創(chuàng)建一個(gè)庫(kù)港华,并創(chuàng)建user表和插入表的數(shù)據(jù)道川。
2、新建一個(gè)Java工程立宜,并導(dǎo)入數(shù)據(jù)驅(qū)動(dòng)冒萄。
二、編寫程序赘理,在程序中加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)
DriverManager. registerDriver(Driver driver)
三宦言、建立連接(Connection)
Connection conn = DriverManager.getConnection(url,user,pass);
四、創(chuàng)建用于向數(shù)據(jù)庫(kù)發(fā)送SQL的Statement對(duì)象商模,并發(fā)送sql
Statement st = conn.createStatement();
ResultSet rs = st.excuteQuery(sql);
五奠旺、從代表結(jié)果集的ResultSet中取出數(shù)據(jù)蜘澜,打印到命令行窗口
六、斷開與數(shù)據(jù)庫(kù)的連接响疚,并釋放相關(guān)資源
package cn.itcast.android.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import com.mysql.jdbc.Driver;
/*
* sun公司的規(guī)則
* */
public class JavaSql1 {
/**
* 查詢users表中所有的記錄鄙信,并在控制臺(tái)顯示出來(lái)
*/
public static void main(String[] args) throws Exception {
//定義
//連接mysql數(shù)據(jù)庫(kù)服務(wù)器的字符串
String url = "jdbc:mysql://127.0.0.1:3306/class" ;
//進(jìn)入數(shù)據(jù)庫(kù)的用戶名
String user = "root";
//密碼,要加密
String password = "19961228";
//SQL語(yǔ)句建議用大寫忿晕,因?yàn)閙ysql會(huì)把小寫轉(zhuǎn)成大寫
String sql = "SELECT S_NAME,S_PASSWORD,S_NUMBER,S_CLASSCODE FROM STUDENT";
//注冊(cè)mysql數(shù)據(jù)庫(kù)服務(wù)器的驅(qū)動(dòng)
DriverManager.registerDriver(new Driver());
/*因?yàn)镈river類中装诡,已經(jīng)有了相應(yīng)的方法了,這樣重復(fù)了
*
* */
//將類加載到j(luò)vm中
Class.forName("com.mysql.jdbc.Driver");
//獲取與數(shù)據(jù)庫(kù)的連接
Connection conn = DriverManager.getConnection(url, user, password);
//System.out.println(conn != null?"獲取數(shù)據(jù)庫(kù)連接成功":"失敗");
//創(chuàng)建封裝sql語(yǔ)句對(duì)象
Statement stmt = conn.createStatement();
//執(zhí)行sql語(yǔ)句,將結(jié)果封裝到結(jié)果集中
ResultSet rs = stmt.executeQuery(sql);
//處理結(jié)果集
while(rs.next()){
//以行為單位践盼,獲取每個(gè)字段的值
String S_NAME = rs.getString("S_NAME");
String S_PASSWORD = rs.getString("S_PASSWORD");
String S_NUMBER = rs.getString("S_NUMBER");
String S_CLASSCODE = rs.getString("S_CLASSCODE");
//顯示在控制臺(tái)
System.out.println(S_NAME + "\t" + S_PASSWORD+ "\t" +S_NUMBER+"\t"+S_CLASSCODE);
}
//關(guān)閉所有的連接對(duì)象
rs.close();
stmt.close();
conn.close();
}
}