首页 > 开发 > Java > 正文

J2EE实例 开发购物网站全过程详细解析

2024-07-13 09:55:14
字体:
来源:转载
供稿:网友

本文通过实战全程编写一个购物网站来讲解如何使用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的安装源程序拷贝到此目录。

找到目录stage/components/oracle.swd.jre/1.1.7.30/1/datafiles/expanded/jre/windows32/bin下的 symcjit.dll 的文件,并改名为 symcjit.old。注意oem目录下还有一个symcjit.dll文件要改名。

(2)搜索到oraparam.ini文件,打开它,改变行re_memory_options=-mx48m的参数为 jre_memory_options=-nojit -ms16m -mx32m

(3)其它的参数保持不变。

(4)执行本地硬盘install/windows32/setup.exe目录下的setup.exe文件。此时调用的是修改过的参数文件oraparam.ini。

(5)安装时选择自定义模式,并且不创建数据库。

(7)oracle8i安装完成后,安装目录中的下列每一个文件都有需要作相应修改。(如果不修改点任何应用都没有反应)

assistants/dbca/dbassist.cl

assistants/dbma/dbmig.cl

assistants/ifa/ifa.cl

bin/elogin.cl

bin/owm.cl

ldap/oidamdin/oidadmin.cl

network/tools/netasst.cl

network/tools/netca.cl

owm/install/instelogin.cl

owm/install/instowm.cl

用编辑工具依次打开上述文件,增加参数 -nojit,以dbassist.cl文件为例示意如下:

command=("c:/program files/oracle/jre/1.1.7/bin/jrew" -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:/bea/wlserver6.1/config/maxuan(maxuan为我改后的名字,默认的为mydomain),用文本编辑器如:记事本或editplus打开startweblogic.cmd,找到“set path=”这一行,加入“./bin/oci817_8”,如本人的为“set path=./bin;./bin/oci817_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。 好了,咱们的数据库已经建好了,而且从中也了解到一些基本的相关知识。

  • 网站运营seo文章大全
  • 提供全面的站长运营经验及seo技术!
  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表