动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.在Applet中实现事件向应.
.MVC 构架学习之渐行渐进(三).
.Spring Reference.
.使用CMP2和XML处理动态数值对象.
.Java数据库接口JDBC基础教程之驱.
.Sun JDK/JRE 执行禁止类漏洞.
.正则表达式概述及在JAVA中的使用.
.Jini技术基础结构.
.TurbineHowto之ActionEvent[译].
.java 面试.
.struts简单例子的分析(含代码注.
.Java程序员的存储过程.
.getUTCSeconds 方法.
.深入浅析Tomcat配置技巧 Top 10.
.非java.util.zip,使用ant.jar制.
.基于.NET架构的核心开发技术.
.如何在Java中实现JobScheduling.
.如何设计出具有GUI特色的“纯”J.
.本源XML数据库Xindice 介绍 (1..
.JDBMonitor全攻略.

WebLogic运用DB的Java控件访问数据库

发表日期:2008-1-5 |


草木瓜  2006-6-8 一、方法  WebLogic页面与数据通信时,一般采用Java控件直接访问数据连接池,数据的直接操作都定义在
Java控件中,页面流做为数据的逻辑处理单元,普通页面做为显示层。可以看出WebLogic这个方法是
典型的三层结构,数据层(Java控件),业务逻辑层(页面流),显示层(页面)

二、建立连接池,数据源

   配置config.XML文件,这里用的是WebLogic自带的E:\bea\weblogic81\samples\domains\workshop
   的cgServer。
  
  <JDBCConnectionPool DriverName="Oracle.jdbc.driver.OracleDriver"
        LoginDelaySeconds="1" MaxCapacity="20" Name="liwei"
        PassWordEncrypted="{3DES}WBNJPYUOAvE=" Properties="user=liwei"
        Targets="cgServer" URL="jdbc:oracle:thin:@localhost:1521:wincn"/>
    <JDBCTxDataSource JNDIName="liwei" Name="liwei" PoolName="liwei" Targets="cgServer"/>
   
    或者 工具->WebLogic Server->数据源查看器->新建数据源 步骤比较简单,主要输入对应参数:
    DriverName="oracle.jdbc.driver.OracleDriver"
    URL="jdbc:oracle:thin:@localhost:1521:wincn"
   然后用户名密码即可。
   
   以上内容可参看《Weblogic中jsp连接数据库》一文
   
三、相关页面

  Test\TestWeb\recordset\RecordsetController.jpf
  Test\TestWeb\recordset\index.jsp
  Test\TestWeb\recordset\test.jcx   java控件

四、数据库

 CREATE TABLE TEST(
 A                         VARCHAR2(10),
 B                         VARCHAR2(10),
 C                         VARCHAR2(10),
 D                         VARCHAR2(10)
 )

五、数据层(JAVA控件)

    本次示例使用tblTest自定义静态类实现返回数据集。(还可以使用netui:gird+RecordSet实现,参见自带示例)
其中update方法与insert方法十分类似,故未提供具体的实现代码。
 数据层并没有什么复杂之处,只是对逻辑层(页面流)提供足够的数据操作接口。tblTest自定义的静态类

是完成数据传递必不可少的环节。
 
  Test\TestWeb\recordset\test.jcx 全代码
 
package recordset;

import com.bea.control.*;
import java.sql.SQLException;

 /*
 * @jc:connection data-source-jndi-name="liwei"
 */
public interface test extends DatabaseControl, com.bea.control.ControlExtension
{
    /**
     * @jc:sql statement::
     *   INSERT INTO TEST (A,B,C,D)
     *   VALUES ({_A},{_B},{_C},{_D})
     * ::
     */
    public int insert( String _A, String _B,String _C,String _D );

    /**
     * @jc:sql statement::
     * UPDATE TEST SET B = {_B} ,C = {_C} ,D = {_D} WHERE A = {_A}
     * ::
     */
    public int update( String _A, String _B,String _C,String _D );
   
    /**
     * @jc:sql statement::
     * DELETE TEST WHERE A = {_A}
     * ::
     */
    public int delete( String _A );
   
   
    /**
     * @jc:sql statement::
     * SELECT * FROM TEST WHERE A = {_A}
     * ::
     */
    public tblTest select( String _A );
  
    /**
     * @jc:sql statement::
     * SELECT * FROM TEST
     * ::
     */
    public tblTest[] selectAll();

    public static class tblTest implements java.io.Serializable
    {
        public String A;
        public String B;
        public String C;
        public String D;
    }
}

六、逻辑层(页面流)
  
 Test\TestWeb\recordset\RecordsetController.jpf 主要代码,省略了自动生成部分

public class RecordsetController extends PageFlowController
{
    /*
     *
     * @common:control
     */
    private test recTest;       //定义数据接口
    private test.tblTest[] recNew;  //定义数据集

   
    //因为示例连接的是英文数据库,会存在乱码问题,下面是转码的函数,这也充分
    //说明了,逻辑层在处理数据的要害所在。
    private String getGBString(String strIn)
    {
        try
        {  
            byte[] tmpByte=strIn.getBytes("ISO8859-1");  
            return new String(tmpByte,"gb2312");
        }
        catch(Exception e)
        {
            return "";
        }
    }

  //返回全记录,调用recTest的selectAll,接口函数
    public test.tblTest[] getAll()
    {
        recNew=recTest.selectAll();
        int i;
        for(i=0;i<recNew.length;i++)
        {
            recNew[i].A=getGBString(recNew[i].A);
            recNew[i].B=getGBString(recNew[i].B);
            recNew[i].C=getGBString(recNew[i].C);
            recNew[i].D=getGBString(recNew[i].D);
        }
        return recNew;
    }
   
   
   
    //添加数据,这时通过页面传递的参数值,调用接口Add数据
     /**
     * @jpf:action
     * @jpf:forward name="sUCcess" path="index.jsp"
     */
    public Forward add()
    {
       recTest.insert(this.getRequest().getParameter("a"), this.getRequest().getParameter("b"),this.getRequest().getParameter("c"),this.getRequest().getParameter("d"));
       return new Forward( "success" );
    }
 
   //删除数据
    /**
     * @jpf:action
     * @jpf:forward name="success" path="index.jsp"
     */
    public Forward delete()
    {
        recTest.delete(this.getRequest().getParameter("ToDelete"));
        return new Forward( "success");

    } 
   
    /**
     * 此方法代表进入页面流的入口
     * @jpf:action
     * @jpf:forward name="success" path="index.jsp"
     */
    protected Forward begin()
    {
        return new Forward("success");
    }
}


七、显示层(页面)

 Test\TestWeb\recordset\index.jsp 最外层显示,查看下面完全代码时,可以看到netui控件的极大
 灵活性。
 
 技术难点并不多,这里使用的是netui-data:repeater,重复获取记录集数据。
 
    <body>
        <table border=1>
            <tr>
                <td width="100" class="header-text">A</td>
                <td width="100" class="header-text">B</td>
                <td width="100" class="header-text">C</td>
                <td width="100" class="header-text">D</td>
            </tr>
            <netui-data:repeater dataSource="{pageFlow.all}">
                <netui-data:repeaterHeader> </netui-data:repeaterHeader>
                <netui-data:repeaterItem>
                    <tr>
                        <td width="100" class="row-text"><a href="#" onclick="window.alert('<netui:content value='{container.item.A}-{container.item.B}-{container.item.C}-{container.item.D}'/>')"><netui:label value="{container.item.A}"/></a></td>
                        <td width="100" class="row-text"><netui:label value="{container.item.B}"/></td>
                        <td width="100" class="row-text"><netui:label value="{container.item.C}"/></td>
                        <td width="100" class="row-text"><netui:label value="{container.item.D}"/></td>

                        <td>
                        <netui:anchor action="delete" onClick="return(window.confirm('Del?'))">
                            <netui:parameter name="ToDelete" value="{container.item.A}"/>
                            Delete
                        </netui:anchor>
                        </td>
                    </tr>
                </netui-data:repeaterItem>
                <netui-data:repeaterFooter> </netui-data:repeaterFooter>
            </netui-data:repeater>
        </table>
        <hr>
        <netui:form action="add" >
            A:<input type="text" name="a"/><br>
            B:<input type="text" name="b"/><br>
            C:<input type="text" name="c"/><br>
            D:<input type="text" name="d"/><br>
            <input type="submit" value="add">
        </netui:form>
    </body>
   

八、小结

    以前对java的了解为0,因项目迫切需要适当的研究下WebLogic,作为入门级的选手就能感受到WebLogic魅力
的一二。清楚的层次非常便于组织项目的架构。页面流在Web开发过程可为核心,结合表示层的netui控件,将
大量脚本可以化为简单轻松的面向对象的java语句。不管是前面提到的树形,还是本文的数据,随意而不零乱
却是有机的整体。强!
 感觉需要选本书系统的学习一下WebLogic的思想。


上一篇:Java图像处理技巧四则 人气:525
下一篇:开源面向对象数据库:db4o 查询方式 人气:737
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-12 team论坛 v2.0.4 bulid 080916 A
2008-10-12 Roclog v3.1.6
2008-10-12 SupeV v1.0.1 简体中文 GBK
2008-10-12 NetCMS v1.6.0.1010 正式版
2008-10-12 PHP考试系统PPFrame v1.2.7
2008-10-12 LPAS个人相册 v1.6.3
2008-10-12 快问仿百度知道系统 动态-静态-互
2008-10-12 方卡广告防点击系统 V1.0 GB2312
2008-10-12 泡菜内容管理系统[PCMS] v1.0 Bu
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成