程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> J2EE實例 開發購物網站全過程詳細解析

J2EE實例 開發購物網站全過程詳細解析

編輯:關於JAVA

本文通過實戰全程編寫一個購物網站來講解如何使用J2EE來建立企業級的網絡應用!

一、搭建開發平台

本文從實戰出發,所以關於一些概念性的問題就不多講了,首先准備下面的家伙:

1.Oracle

2.weblogic

3.Jbuilder

其它:struts-console-2.2(用作struts視圖開發)PowerBulider(方便數據庫操作)Dreamweaver(美化前台頁面)開發平台為Windows2000。以下以一般性的配置為例詳細介紹搭建J2EE的開發平台。

用機配置:P4賽揚1.7G,256MB 20GHDD 操作系統:Windowsdows2000 SP3

數據庫:Oracle 8i

J2EE應用平台:weblogic 6.1 sp2

EJB,JSP,JavaBEAN開發:Jbuilder 7 weblogic版

第一步,安裝配置Oracle數據庫

安裝Oracle最新版的9i什麼事都沒有,但如果你在P4的機器上裝8i可能就會出現問題,點了安裝之後沒有反應(P4賽揚也存在這個問題)。如果您是P4的機器又要裝8i的話,那麼先按如下方法做。

(1)創建一臨時目錄,並將Oracle8i的安裝源程序拷貝到此目錄。

找到目錄stageComponentsOracle.swd.Jre1.1.7.301DataFilesExpandedJreWindows32bin下的 symcJit.dll 的文件,並改名為 symcJit.old。注意OEM目錄下還有一個symcJit.dll文件要改名。

(2)搜索到oraparam.ini文件,打開它,改變行RE_MEMORY_OPTIONS=-mx48m的參數為 JRE_MEMORY_OPTIONS=-noJit -ms16m -mx32m

(3)其它的參數保持不變。

(4)執行本地硬盤installWindows32setup.exe目錄下的Setup.exe文件。此時調用的是修改過的參數文件oraparam.ini。

(5)安裝時選擇自定義模式,並且不創建數據庫。

(7)Oracle8i安裝完成後,安裝目錄中的下列每一個文件都有需要作相應修改。(如果不修改點任何應用都沒有反應)

assistantsdbcadbassist.cl

assistantsdbmadbmig.cl

assistantsifaifa.cl

binelogin.cl

binowm.cl

ldapoidamdinoidadmin.cl

networktoolsnetasst.cl

networktoolsnetca.cl

owminstallinstelogin.cl

owminstallinstowm.cl

用編輯工具依次打開上述文件,增加參數 -noJit,以dbassist.cl文件為例示意如下:

Command=("C:Program FilesOracleJre1.1.7BINJREW" -noJit -classpath ....)

用相同的方法修改所列出的每一個.cl 文件內容。修改完後運行database administrator下的Database Configuration Assistant就可以創建數據庫了,這可是一個漫長的過程,在創建數據庫時要創建全局標識,搞個好記的就行,以後好配置數據庫連接。創建完後,默認的DBA用戶名為system,密碼為manager。

第二步,安裝配置weblogic 6.1SP2,並連接Oracle

Windows平台的weblogic基本上都可以直接安裝,但要注意不要把它裝到帶有空格的目錄裡如Program Files,或是中文目錄中,默認為c:bea,按默認點下一步,就可以完成安裝,這個基本沒有意外!(最簡單的安裝操作),最後要記住設的管理密碼!為了調試方便,不將weblogic設為自動服務啟動。設定您的管理密碼,進入控制台,啟動服務都需要。為了方便,我將目錄安到了D盤,並將domain改為maxuan,server改為max,接下來我們將配置JDBC連接Oracle數據庫。

首先打開D:beawlserver6.1configmaxuan(maxuan為我改後的名字,默認的為mydomain),用文本編輯器如:記事本或editplus打開startWebLogic.cmd,找到“set PATH=”這一行,加入“.binoci817_8”,如本人的為“set PATH=.bin;.binoci817_8;%PATH%”

為了使啟動weblogic不需要每次都輸入密碼,在“set WLS_PW=”輸入安裝時所設定的密碼即可。

雙擊startWebLogic.cmd或在程序中直接運行Start Default Server啟動weblogic服務(注意不要將這個窗口關了)

啟動weblogic 然後在程序中運行Start Default Console,進入控制台操作,在出現的對話框中輸入管理用戶名system,密碼為你設的密碼即可進入!

點開左邊的Services,你可以看到JDBC;

點開它,點擊在下面的Connection Pools,右邊會出現配置項目,點擊Configure a new JDBC Connection Pool出現配置項,在Configuration下的General標簽下配置:

name:這裡我填寫的是“mytest”;

URL填寫為“Jdbc:weblogic:Oracle”;

Driver Classname:填寫為“weblogic.Jdbc.oci.Driver”;

PropertIEs(key=value):填寫為:

user=system

passWord=manager

server=oradb

這裡的oradb即是所安裝的Oracle所創建的數據庫的全局標識。user和passWord我用的是默認的DBA,你可以用自己創建的用戶名和密碼。點擊Apply按鈕完成。點擊Targets下的Servers標簽,把Available下的Tgets-Server移到Chosen下,然後點Apply按鈕。

接著配置下面的Data Sources,在右邊用“Configure a new JDBC Data Source”創建新的Data Sources,這裡的Name和Pool Name均填上面的設定“mytest”,JNDI Name填寫“oradb”,同上面一樣,點擊Targets下的Servers標簽,把Available下的Targets-Server移到Chosen下,然後點Apply按鈕。

這時點開Start Default Server窗口應當看到已經啟動JDriver/Oracle了!

第三步,安裝配置JBuilder 7

這裡我安裝的是weblogic版。安裝JBuilder不要把它裝到帶有空格的目錄裡如Prograih Files,或是中文目錄中,不然編譯時會出錯的。安裝很簡單,不必多言,這裡著重講一下配置

小技巧一:大家覺得JBuilder運行時也許很慢,因為Jbuilder默認使用32MB內存,如果你的內存夠大的話,可以加大一點,具體辦法如下:

在JBuilder安裝目錄BIN下找到Jbuilder.config文件,編輯它,改變Vmparams 後的參數,啟動JBuilder,在Help下的About Jbuilder下可以看到Java heap已經增加了,運行也快了許多,起碼以後可以編譯較大的文件。

小技巧二:運行JBuilder時,發現編寫代碼很不方便,所選的代碼與實際所見的總是差一個,這是因為字體的原因,解決方法如下,在Tools的Editor Options下的Display裡,將Editor font裡的Font Family改為新宋體即可。

二、配置weblogic服務

用JBuilder可以整合weblogic,這樣可以把在JBuilder下開發的EJB或打包成WAR的網站直接發布到weblogic!

首先在tools下選擇Configure Servers,在下面的user Home下,你可以看到“webLogic Application Server 6.X-7.0”項,點擊它,在右邊會出現Server Settings ,將Enable server打上勾,在下面的General下選擇home directory和Working directory。然後點Custom項,選擇JDK installation directory。

BEA home directory。

接著輸入密碼和設定的Domain name和Server name這些都是你安裝weblogic時設定的,如果目錄選擇正確,在下面的version下會自動出現你的weblogci的版本號。點擊OK即完成!

下面,我們做一個試驗,看看weblogic是不是和Jbuilder整合了!首先,我們新建一個工程,選Application,在name裡填寫你的工程名,接著按完成即可。在新建工程項目時順便看一看Server是不是用的Weblogic

然後再選新建,在出現的ObJect Gallery下選Web,因為我們是要發布WEB應用,所以選取Web Application,為它命個名,這將是網站包的名字,指定它的工作目錄後選擇Generate war,點OK即可。接下來,我們要新建一個JSP文件,一樣點新建,在WEB下選擇JAVAServer Page,按它的默認點下一步即可,它會自動創建一個JavaBEAN。

首先,我們要把自動生成的這個BEAN編譯為class,選中它,點右鍵,在出現的菜單選Rebuild編譯,然後編譯你的Web Application,它會自動生成WAR包,點這個包發布即可發布網站。接下來打開浏覽器輸入 http://127.0.0.1:7001/tds/index.JSP 即可看到該頁面。

三、創建數據庫

Oracle 8i和Oracle 9i確實有些不一樣,不過在界面上區別不大,還是以我的Oracle 8i為例為大家講解一下吧!既然是實戰,首先我們為自己新建一個開發用戶,並創建一個表。在oracle裡創建新用戶和表的方法比較多,只要你有管理員的權限,首先用最簡單的。在Oracle 8i的程序組中啟動DBA Studio程序項,在出現的數據庫鏈接信息中輸入管理用戶名和口令即可,當然,在Oracle中,你可以用用戶名斜槓口令的方法登陸,連接身份選SYSDBA。

創建用戶:在登陸後,單擊安全,在第一項,你就會看到用戶,用右鍵你可以創建新用戶,或者給用戶授於角色,不同的角色擁有不同的權限!Oracle 8i預定義的角色,我在下面會講。

咱們先斷開system的數據庫連接,可以在文件中選擇,也可以用右鍵。然後用我們創建的用戶來登陸,並且在方案中找到表,然後就可以直接創建,由於是圖形可視化,而且又是全中文的,我就不綴述了!大家可以多試試!

用SQLPLUS工具創建用戶和數據庫:在Oracle中可以使用sqlplus這個工具來書寫SQL語句,對於SQL高手來說,這是發揮才能的好地方。咱們來試試吧,首先一樣要先登陸,為了創建新用戶,咱們仍以system來登陸。在主機字符串中填入數據標識(oradb)

在登陸進去後,出現“SQL>”我們就可以在它後面書寫SQL語句,grant connect,resouce to maxuan identifIEd by max,這一句是創建用戶maxuan,口令為max,並賦予connect,resource權限,在出現授權成功後,我們用conn maxuan/max這句來以maxuan連接數據庫,這時的角色已經不是DBA了!接下來的是些基本的SQL建表語句,不用多說了,在sqlplus中,每條語句結束用分號標識,在完成後,我們可以用quit或exit命令斷開。

這裡我說幾個Oracle 8i的預定義角色。

1、CONNECT角色: 授於最終用戶的典型最基本的權利

ALTER SESSION --修改會話

CREATE CLUSTER --建立聚簇

CREATE DATABASE LINK --建立數據庫鏈接

CREATE SEQUENCE --建立序列

CREATE SESSION --建立會話

CREATE SYNONYM --建立同義詞

CREATE VIEW --建立視圖

2、RESOURCE角色: 是授予開發人員的

CREATE CLUSTER --建立聚簇

CREATE PROCEDURE --建立過程

CREATE SEQUENCE --建立序列

CREATE TABLE --建表

CREATE TRIGGER --建立觸發器

CREATE TYPE --建立類型

3、DBA角色:擁有系統所有系統級權限

4、IMP_FULL_DATABASE角色、EXP_FULL_DATABASE角色:

BACKUP ANY TABLE --備份任何表

EXECUTE ANY PROCEDURE --執行任何操作

SELECT ANY TABLE --查詢任何表

5、DELETE_CATALOG_ROLE角色:

授予用戶這個角色,用戶就可以從表sys.aud $中刪除記錄,sys.aud $表中記錄著審計後的記錄,使用這個角色可以簡化審計蹤跡管理。

6、SELECT_CATALOG_ROLE角色、EXECUTE_CATALOG_ROLE角色:

SELECT_CATALOG_ROLE角色具有從數據字典查詢的權利,EXECUTE_CATALOG_ROLE角色具有從數據字典中執行部分過程和函數的權利。

在前面我們掌握了些基本的oracle操作,如創建、授權用戶,創建數據庫等。在OEM(Oracle Enterprise Manager)可視化的窗口環境中,雖然我們也可以很方便地做這些事,但是事實上,用SQL語言書寫在開發上更有效率!Oracle提供的SQL*Plus就是個不錯的工具,如果大家喜歡窗口的開發環境,用SQLPlus Worksheet也行。SQL(Structure Query Language)語言是結構化查詢語言,是數據庫的核心語言,是面向集合的描述性非過程化語言。

SQL語言共分為四大類:數據查詢語言DQL,數據操縱語言DML,數據定義語言DDL,數據庫控制語言DCL。

1、數據查詢語言DQL的基本結構是由select子句,from子句,where子句組成的查詢塊:

select <字段名表>

from <表或視圖名>

where <查詢條件>

2、數據操縱語言DML完成在數據庫中確定、修改、添加、刪除某一數據值的任務(以下是部分常用DML語句):

insert 增加數據行到表

delete 從表中刪除數據行

Update 更改表中數據

3、數據定義語言DDL完成定義數據庫的結構,包括數據庫本身、數據表、目錄、視圖等數據庫元素(以下是部分常用DDL語句)

create table 創建表

create index 創建索引

create vIEw 創建視圖

alter table 增加表列,重定義表列,更改存儲分配

drop table 刪除表

drop index 刪除索引

4、數據庫控制語言DCL用來授予或回收訪問數據庫的某種特權,並控制數據庫操縱事務發生的時間及效果,對數據庫實行監視等。如:

grant 將權限或角色授予用戶或其它角色

revoke 回收用戶權限

roll 回滾,是當某個對話更改了數據庫中的數據後,由於某種原因用戶不想提交此更改時,Oracle所采取的保護操作。這是一個把信息恢復到用戶使update、insert、delete前最後提交的狀態。

commit 提交。在完成數據庫的插入,刪除和修改操作時,只有當事務提交到數據庫才算完成,有提交前只有操作數據庫的本人才能看到,別人只有在最後提交完成才可以看到。接下來,我們在SQL*Plus中實戰一下,為我們下面將要做的打好基礎。用system登陸到SQL*Plus後,我們做如下操作:

SQL>create user maxuan identifIEd by max;

#創建口令為max的用戶maxuan

SQL>grant connect,resource to maxuan;

#為用戶maxuan授權

SQL>conn maxuan/max;

#以用戶maxuan進行連接

L>create table test(a number);

#建立一個名為test的表,

只有字段名為A的一列,數據類型為數字

SQL>insert into test values(1);

#插入一條記錄

SQL>select * from test;

#查詢記錄,此時A列的第一行為1

SQL>update test set a=2;

#更改記錄,此時A列的第一行已改為2

SQL>commit;

#提交

SQL>delete from test;

#刪除test表中所有的記錄,此時test表中沒有記錄

SQL>roll;

#回滾到提交前,

此時再查詢test表,A列第一行值又回復到2

Oracle的數據類型

在數據庫中創建數據表的時候,我們需要定義表中所有字段的類型,數據類型大致分為:character,numberic,date,lob和raw等,這些是最基本的數據類型。當然在Oracle中也允許自定義數據類型。

在Oracle中提供的character數據類型:

char():固定長度字符串,最大長度為2000字節,如果不指定長充,缺省為1個字節長。

varchar2():可變長度的字符串,最大長度為4000字節,具體定義時指明最大長度,這咱類型可以放數字、字母以及ASCII碼字符集(或者EBCDIC等數據庫系統接受的字符集標准)中的所有符號。如果數據長度沒有達到最大值,Oracle會根據數據大小自動調節字段長度。是最長用的數據類型。

nchar():根據字符集而定的固定長度字符串,最大長度2000字節。

nvarchar2():根據字符集而定的可變長度字符串,最大長度4000字節。

long:可變長字符列,最大長度限制為2GB,用於不需要作字符串搜索的長串數據。此類型是一個遺留下來的而且將來不會被支持的數據類型,逐漸被BLOB,CLOB,NCLOB等大的數據類型所取代。

numberic數據類型用來存儲負的和正的整數,分數和浮點型數據,在Oracle中提供的numberic數據類型:

number:可變長的數值列,允許0、正值及負值,m是所有的有效數字的位數,n是小數點以後的位數。

在Oracle中提供的date數據類型:

date:缺省格式是dd-mon-yy(日-月-年)

在Oracle中提供的lob數據類型:blob、clob、nclob:三種大型對象(lob),用來保存較大的圖形文件或帶格式的文本文件,如Word文檔,以及音頻、視頻等非文本文件,最大長充是4GB。暈些數據存儲在數據庫內部保存。

bfile:在數據庫外部保存的大型二進制對象文件,最大長度是4GB,這種外部的LOB類型,通過數據庫記錄變化情況,但是數據的具體保存是在數據庫外部進行的。

在Oracle中提供的raw數據類型:

raw():可變長二進制數據,具體定義字段時必須指明最大長度,這種格式用來保存較小的圖形文件或帶格式的文本文件,它也是一種較老的數據類型,將被lob數據類型所取代。

long raw:可變長二進制數據,最大長度是2GB,可以用來保存較大的圖形或帶格式的文本文件,以及音頻、視頻等非文本文件,這也是一種較老的數據類型,將被lob數據類型所取代。

其它的數據類型:

rowid:這是Oracle數據表中的一個偽例,它是數據表中每行數據內在的唯一標識

integer:整數類型

四、創建購物網站後台數據庫

現在我們回到用J2EE體系開發購物網站的主題,開始實戰建購物網站的後台數據庫。為了實現購物網站的基本的功能,我們需要建立四個表:商品列表(products)、商品類型表(item)、訂單列表(orders)和管理員列表(admin)。表結構如下所示:

item表結構(商品類型表)

字段名稱 數據類型 允許空 主鍵/外鍵 備注

type_id INTEGER(自動編號) 否 主鍵 商品類別ID標記

type varchar2(30) 否 商品類別名稱

product表結構(商品列表)

字段名稱 數據類型 允許空 主鍵/外鍵 備注

product_id INTEGER(自動編號) 否 主鍵 商品ID標記

title varchar2(30) 否 商品名稱

type_id INTEGER 否 外鍵 商品類別標記

info varchar2(80) 是 商品簡介

price number(16,2) 否 商品價格

orders表結構(訂單列表)

字段名稱 數據類型 允許空 主鍵/外鍵 備注

order_id INTEGER(自動編號) 否 主鍵 訂單ID標記

name varchar2(20) 否 顧客姓名

address varchar2(100) 是 發貨地址

tel number(16) 是 聯系電話

email varchar2(30) 否 聯系email

btime date 是 訂購日期

product_id INTEGER 否 外鍵 商品標記

uWord varchar2(100) 是 顧客留言

admin表結構(管理員列表)

字段名稱 數據類型 允許空 主鍵/外鍵 備注

admin_id INTEGER(自動編號) 否 主鍵 管理員ID標記

adminname varchar2(20) 否 管理員名稱

passWord varchar2(20) 否 管理員密碼

設計完表結構後,我們就要開始創建了。創建表我想已經不是什麼難事了,那麼我們要注意的是product、item、orders這三個表之間的關聯,還有自動編號。

下面是完整的SQL語句,在後面我會給出詳細的說明,你可以在SQL*Plus裡對照著輸入,也可以將它存為SQL腳本文件,在SQL*Plus或SQLPlus Worksheet裡執行。當然也可以把代碼直接拷貝到SQL*Plus裡執行!

rem ///BY MAXUAN 開始///

create table item(

type_id integer not null,

type varchar2(30),

constraint item_pk primary key(type_id)

);

create table product(

product_id integer not null,

title varchar2(30) not null,

type_id integer not null,

info varchar2(80),

price number(16,2) not null,

constraint product_pk primary

key (product_id),

constraint product_fk foreign

key(type_id) references item(type_id)

);

create table orders(

order_id integer not null,

name varchar2(20) not null,

address varchar2(100),

tel number(16),

email varchar2(30) not null,

btime date,

product_id integer not null,

uWord varchar2(100),

constraint orders_pk primary

key(order_id),

constraint orders_fk foreign

key(product_id) references product(product_id)

);

create table admin(

admin_id integer not null,

adminname varchar2(20) not null,

passWord varchar2(20) not null,

constraint admin_pk primary key(admin_id)

);

create sequence type_id

increment by 1 start with 1;

create sequence product_id

increment by 1 start with 1;

create sequence order_id

increment by 1 start with 1;

create sequence admin_id

increment by 1 start with 1;

rem ///BY MAXUAN 結束///

說明一:建立表之間的關聯

product、item、orders三個表通過公共域,通常稱為鍵域(Key FIEld)進行關聯,存在兩種類型的鍵:主鍵(Primary key)和外部鍵(Foreign key)。主鍵使表中的數據行保持唯一,在表product中,product_id為主鍵,表orders中也包含有product_id,此時的product_id就是外部鍵。一個表的外部鍵從其它表中獲取信息。

說明二:關於自動編號

在Access中有自動編號的數據類型,MSSQL和MYSQL也都有自動增長的數據類型,插入記錄時不用操作此字段,會自動獲得數據值,而Oracle沒有自動增長的數據類型,我們需要建立一個自動增長的序列號,插入記錄時要把序列號的下一個值賦於此字段,可以預見的是,有此功能,我們可以把數據從Access、MSSQL或MySQL遷移到Oracle了。

create sequence type_id increment

by 1 start with 1;

這句中,type_id為序列號的名稱,每次增長為1,起始序號為1。 好了,咱們的數據庫已經建好了,而且從中也了解到一些基本的相關知識。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved