zoukankan      html  css  js  c++  java
  • 实战 J2EE 开发购物网站 经验篇

    前言
    本文通过实战全程编写一个购物网站来讲解如何使用J2EE来建立企业级的网络应用!本文针对的是像我这样的绝对初学者,如果您是高手就莫要见笑了!

    一:搭建开发平台
    本文从实战出发,所以关于一些概念性的问题就不多讲了,这些东东可以从google上搜到,首先准备下面的家伙吧:
    1.oracle
    2.weblogic
    3.jbuilder
    其它:struts-console-2.2(用作struts视图开发)PowerBulider(方便数据库操作)Dreamweaver(美化前台页面)
    以上就是我在公司里开发的所用的东东了!开发平台为win2000。

    以下以我家里的配置为例详细介绍搭建J2EE的开发平台。(家里的软件都是从网上当的)
    家用机配置:P4赛扬1.7G,256MB 20GHDD 操作系统:windows2000 SP3
    数据库:oracle 8i
    J2EE应用平台:weblogic 6.1 sp2
    EJB,JSP,jAVABEAN开发:jbuilder 7 weblogic版

    第一步,安装配置oracle数据库
    安装oracle最新版的9i什么事都没有,但如果你在P4的机器上装8i可能就会出现问题,点了安装之后没有反应。(P4赛扬也存在这个问题)
    没法,我的oracle就是从网上当的8i(比9i苗条多了),如果您是P4的机器又要装8i的话,那么先按如下方法做(这是我从网上搜到的方法)
    (1)创建一临时目录,并将Oracle8i的安装源程序拷贝到此目录。
    找到目录
    stage\Components\oracle.swd.jre\1.1.7.30\1\DataFiles\Expanded\jre\win32\bin下的
    symcjit.dll 的文件,并改名为 symcjit.old。注意OEM目录下还有一个symcjit.dll文件要改名。
    (2)搜索到oraparam.ini文件,打开它,改变行RE_MEMORY_OPTIONS=-mx48m的参数为
    JRE_MEMORY_OPTIONS=-nojit -ms16m -mx32m
    (3)其它的参数保持不变。
    (4)执行本地硬盘install\win32\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。
    在以后,我会陆续讲一些关于oracle的初学经验,帮助大家快速入门!

    第二步,安装配置weblogic 6.1SP2,并连接oracle
    win平台的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了!
    PS:用weblogic已经有段时间了,而且也参加过weblogic J2ee 的培训,以后将会把相关经验放到论坛上!
    重启服务吧!

    第三步,安装配置jBuilder 7
    这里我安装的是weblogic版
    安装jBuilder不要把它装到带有空格的目录里如Prograih Files,或是中文目录中,不然编译时会出错的。安装很简单,不必多言,这里着重讲一下配置

    小技巧一:大家觉得jBuilder运行时也许很慢,因为jbuilder默认使用32MB内存,如果你的内存够大的话,可以加大一点,具体办法如下,
    在jBuilder安装目录BIN下找到jbuilder.config文件,编辑它,改变Vmparams 后的参数,
    我的配置为
    vmparam -Xms64M
    vmparam -Xmx64M
    启动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:本人的为"D:/bea/wlserver6.1"

    然后点Custom项
    选择JDK installation directory:本人的为“D:/bea/jdk131”
    BEA home directory:本人的安装目录为“D:/bea”,接着输入密码和设定的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 即可看到该页面。

    PS:WAR为整个web appliction压缩包,讲简单明白点就是我们所做的整个网站都可以打成一个包,然后用weblogic来发布,当然weblogic也支持用目录发式来发布的!
    今天就先写到这里了,希望大家看得明白,有点收获,我就心满意足了!

    二:创建数据库
    小试牛刀oracle 8i(顺便我们练练手)
    (为了方便,我就将oracle 8i简写8i了)
    8i和9i确实有些不一样,不过在界面上区别不大,还是以我的oracle 8i为例为大家讲解一下吧!既然是实战,首先我们为自己新建一个开发用户,并创建一个表!!
    在oracle里创建新用户和表的方法比较多,只要你有管理员的权限(废话!),首先用最简单的,在8i的程序组中启动DBA Studio程序项,在出现的数据库链接信息中输入管理用户名和口令即可,当然,在oracle中,你可以用用户名斜杠口令的方法登陆,连接身份选SYSDBA。

    (1-1)创建用户:
    在登陆后,点安全,在第一项,你就会看到用户,用右键你可以创建新用户,或者给用户授于角色,不同的角色拥有不同的权限!oracle8i预定义的角色,我在下面会讲。看看下边我抓的图吧,在一般信息后面的角色,你就可以赋予connect,resource权限。

    (1-2)创建数据库:
    咱们先断开system的数据库连接,可以在文件中选择,也可以用右键。然后用我们创建的用户来登陆,并且在方案中找到表,然后就可以直接创建,由于是图形可视化,而且又是全中文的,我就不缀述了!!大家可以多试试!

    (2)用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命令断开

    ps:这里我说几个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角色具有从数据字典中执行部分过程和函数的权利。

    GO ON 继续进阶!!(本贴个人认为对初学者很有帮助,请大家认真看。因时间仓促,如有错误请指正)
    SQL*PLUS基础
    在上一贴中,我们掌握了些基本的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(<size>):固定长度字符串,最大长度为2000字节,如果不指定长充,缺省为1个字节长。
    varchar2(<size>):可变长度的字符串,最大长度为4000字节,具体定义时指明最大长度,这咱类型可以放数字、字母以及ASCII码字符集(或者EBCDIC等数据库系统接受的字符集标准)中的所有符号。如果数据长度没有达到最大值,oracle会根据数据大小自动调节字段长度。是

    最长用的数据类型。
    nchar(<size>):根据字符集而定的固定长度字符串,最大长度2000字节。
    nvarchar2(<size>):根据字符集而定的可变长度字符串,最大长度4000字节。
    long:可变长字符列,最大长度限制为2GB,用于不需要作字符串搜索的长串数据。此类型是一个遗留下来的而且将来不会被支持的数据类型,逐渐被BLOB,CLOB,NCLOB等大的数据类型所取代。

    numberic数据类型用来存储负的和正的整数,分数和浮点型数据,在oracle中提供的numberic数据类型:
    number(<m>,<n>):可变长的数值列,允许0、正值及负值,m是所有的有效数字的位数,n是小数点以后的位数。

    在oracle中提供的date数据类型:
    date:缺省格式是dd-mon-yy(日-月-年)

    在oracle中提供的lob数据类型:
    blob、clob、nclob:三种大型对象(lob),用来保存较大的图形文件或带格式的文本文件,如word文档,以及音频、视频等非文本文件,最大长充是4GB。晕些数据存储在数据库内部保存。
    bfile:在数据库外部保存的大型二进制对象文件,最大长度是4GB,这种外部的LOB类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进行的。

    在oracle中提供的raw数据类型:
    raw(<size>):可变长二进制数据,具体定义字段时必须指明最大长度,这种格式用来保存较小的图形文件或带格式的文本文件,它也是一种较老的数据类型,将被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里执行!

    Code

    说明一:建立表之间的关联
      product、item、orders三个表通过公共域,通常称为键域(Key Field)进行关联,存在两种类型的键:主键(Primary key)和外部键(Foreign key)。主键使表中的数据行保持唯一,在表product中,product_id为主键,表orders中也包含有product_id,此时的product_id就是外部键。一个表的外部键从其它表中获取信息。看看上面的SQL语句,应该会了吧!

    说明二:关于自动编号
      在access中有自动编号的数据类型,MSSQL和MYSQL也都有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值,而oracle没有自动增长的数据类型,我们需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段,可以预见的是,有此功能,我们可以把数据从ACCESS、MSSQL或MYSQL迁移到oracle了!
    create sequence type_id increment by 1 start with 1;
    这句中,type_id为序列号的名称,每次增长为1,起始序号为1。

      好了,咱们的数据库已经建好了,而且从中也了解到一些基本的相关知识,关于本人的用J2EE开发购物网站之二oracle篇到此结束,如有什么疑问请留言!!
      在接下的第三篇weblogic中,本人将继续把个人心血经验无偿奉上,希望大家能从中有所收获!!谢谢支持!
    PS:写得真累,快赶上出书了!!

  • 相关阅读:
    Min_25筛
    POJ-1068 Parencodings---模拟括号的配对
    POJ-3295 Tautology---栈+表达式求值
    POJ-2586 Y2K Accounting Bug贪心,区间盈利
    POJ-1328 Radar Installation--区间选点问题(贪心)
    POJ-2965 The Pilots Brothers' refrigerator---思维题
    POJ-1753 Flip Game---二进制枚举子集
    南阳OJ-2-括号配对问题---栈的应用
    hdu-1082 Matrix Chain Multiplication---栈的运用
    hdu-1237 简单计算器---中缀表达式转后缀表达式
  • 原文地址:https://www.cnblogs.com/bluespot/p/1262665.html
Copyright © 2011-2022 走看看