绝情酷哥 绝情酷哥
关注数: 127 粉丝数: 44 发帖数: 1,559 关注贴吧数: 3
少女与小偷 小偷被人追赶,他跑进一个小巷,跳进一座老宅。老宅很大、很静,也很荒凉。正当他想该藏在什么地方时,一个柔弱的声音在他身后响起。“你是谁呀,你找谁?” 小偷吓了一跳。转身一看,只见一个少女正睁着一双大眼睛盯着他问呢。 “砰......”院外传来急促的敲门声,小偷的脸都吓白了。 少女一把抓住小偷的手,拉着他来到门口,打开了门,一群人闯了进来。 “你看见一个小偷进来了吗?” “没有呀”。 “我和我男朋友在院子里,没见到什么小偷呀。”少女一脸天真的样子。 为首的男子仔细打量了少女,看她不像是在说谎。但他的目光却紧紧地盯着小偷。“他是你男朋友?” “那还有假?”少女说着,把身子*在小偷身上。 那些人看没什么异样,就都走了。 “你,你为什么帮我?”小偷知道少女一定知道他就是他们要找的小偷。 “你一定由你自己的苦衷,谁都不是天生就想作小偷的。” 居然有人会为小偷辩护,小偷不禁又仔细地打量了一下少女,她不像一个脑子有问题的人。 “你坐一会吧,他们估计还没走远”。少女居然邀请他坐一会。 “就你一个人在这?” “是的,我家不在这儿,房子是我外祖父留下来的。”少女伤感地说。“我身体又不好,很少外出的,你能常来陪我吗?” “好吧”。小偷犹豫一下答应了。 以后的日子里,小偷没事就去老宅陪少女。他后来才知道她患的是尿毒症,虽然是早期,但那却是个令人心惊胆寒的绝症啊!他能作是只是抽时间陪她,给她讲外面的世界,小偷的出现让少女黑白的世界变得多彩起来,她每天都盼望他的出现。 这年情人节,小偷带着一朵玫瑰出现在少女面前,向她示爱。她虽然知道那天以后他再也没有偷过东西,但她却是身患绝症的人,怎么能接受他的爱呢。 每个情人节,小偷都会带来一朵玫瑰向她求爱。 日子一天天地过去,小偷一天天地消瘦。 一天,小偷惊喜地告诉少女,她有救了,他为她找到了肾脏。 这年情人节前夕,少女换肾手术的准备工作已就绪。这时少女才知道,她要换的是小偷的肾。他瘦的那么快是因为他每天不仅要卖血,而且还要干很多重活,为的是早日凑够她的手术费用。 换肾手术非常成功,少女身体接受了小偷的肾,可小偷却因身体太弱而没能下手术台...... 以后的每个情人节,小偷墓前都会有一朵玫瑰,并附着字条:永远爱你的妻 !
JAVA初学常见问题 JAVA初学常见问题 http://www.cnjavaclub.com (2001-04-16 15:13:54) 初学JAVA的朋友很可能碰到很多问题,下面收集整理了一些供参考。 1。[问]Application和Applet各自指什么?在使用中有区别吗? [答]Application和Applet是利用JAVA语言生成的可运行代码中最常用的两种,两者 都必须在JAVA虚拟机上运行。简单来讲,Application更象我们平常用VB,VC等编写 的桌面程序,多以控制台(CONSOLE)方式运行,当然也很容易实现窗口应用。而 Applet可以嵌入Web页面中,在支持JAVA虚拟机的浏览器上运行。在使用时应该区别 应用。 2。[问]我编写了一个简单的Application,也通过了编译,得到了一个CLASS文件,可是我 使用JDK的JAVA命令运行它时,却报告CLASS找不到的错误。 [答]这是初学JAVA时常遇到的问题,其实很简单,你看看自己在程序中定义的主类 名和你对程序的命名(*.JAVA)是不是相同?如果两个名称不相同,就会出现这个错误。 3。[问]我想学习JAVA语言,可是面对很多JAVA的开发工具,不知道用什么好? [答]目前出现了很多JAVA开发工具,各自有自己的特色。对于初学者,建议使用SUN公司 的JDK开始学习,注意利用JDK的文档资料,这对打好JAVA的基本功很有帮助。将来正式使 用JAVA开发项目时,可以选择一些工程化的可视化工具,如Microsoft的VJ++,等。实际上, 经常是在开发中综合利用JDK和其他可视化工具。 4。[问]经常会看见还有一个JAVAScript这样的东西,它和JAVA有区别吗? [答]对比JAVA来讲,JAVAScript并不能说是一套完整的语言,它定义了一套方法,事件处理 等,主要用于Web页面开发中增加页面效果,进行数据有效性检查等。在开发Microsoft ASP时也可以作为一种编程脚本。它有一个基本对等的东西就是VBScript.
评论:喀什噶尔胡杨 评论:喀什噶尔胡杨前几天一直没有买到正版胡杨,一时间刀郎吧里大家对胡杨的看法众说纷纭。在这里我也发表我对胡杨的一些看法。大家听了胡杨以后,第一个观点就说这个配乐被李宗盛给弄糟了,我却不这么认为。不知道大家究竟有没有细听过CD版和MTV版两个版本的胡杨。的确有很多不一样的地方!首先表明一个观点:我个人愚见,MTV版是标准的刀式配乐法,配乐简单,没有过多的电子音乐,鼓点强劲有力,而CD版的配乐才是李式配乐!电子音乐元素多样化,鼓点相对较弱!为什么这样认为呢?具体如下: 首先:在3分20秒左右的时候,MTV版自动去掉了电子音乐,在第4分钟的时候,唱高潮部分明显有很强劲的鼓点而CD版没有!! 第二条:唱法有所区别,在3分37秒唱“发现你”的“发”字发音不一样,在CD版里明显的有颤音和一种沧桑感,但在MTV版里没有。在4分38秒的时候,在唱到“我俩的爱情”又不一样,MTV版没有用迂回的唱法,而CD版唱这几句的时候比较婉转! 第三条:在整个胡杨快完的时候去掉了新疆刀郎人唱歌跳舞的那一部分合音。总评:MTV版配乐简单,有力,高亢!配合美丽的画面来看,的确属于标准刀式配乐!CD版加入了现在电子音乐,在唱法上更加婉转和细腻,加入了刀郎人唱歌跳舞的合音,元素多样化,为标准的李式配乐。 总之,两个版本是各有千秋,你们更喜欢那个版本呢?呵呵...
一个简单java程序 本章讨论怎样用Java来编制网络上的应用程序。许多程序员对“网络”这一个词充满着恐惧, 因为这意味着复杂、工作量大和随之而来的不安全性。但Java的网络功能使这种担心变得多余。利用它, 程序员甚至可以透明地编写网络上的程序。本章就是通过一些典型的例子来介绍Java的网络功能以及一般网络程序的实现。 下面我们介绍两个简单的Java程序,并对其进行分析。例1.1public class HelloWorldApp { //an applicationpublic static void main (String args[ ]){System.out.println("Hello World!");}}本程序的作用是输出下面一行信息:Hello World!程序中,首先用保留字class来声明一个新的类,其类名为HelloWorldApp,它是一个公共类(public)。整个类定义由大括号{ }括起来。在该类中定义了一个main ( )方法,其中public表示访问权限,指明所有的类都可以使用这一方法;static指明该方法是一个类方法,它可以通过类名直接调用;void则指明main( )方法不返回任何值。对于一个应用程序来说,main( )方法是必须的,而且必须按照如上的格式来定义。Java解释器在没有生成任何实例的情况下,以main( )作为入口来执行程序。Java程序中可以定义多个类,每个类中可以定义多个方法,但是最多只能有一个公共类,main( )方法也只能有一个,作为程序的入口。main( )方法定义中,括号( )中的String args[ ]是传递给main( )方法的参数,参数名为args,它是类String的一个实例,参数可以为0个或多个,每个参数用“类名 参数名”来指定,多个参数间用逗号分隔。在main( )方法的实现(大括号中),只有一条语句:System.out.println ("Hello World!");它用来实现字符串的输出。这条语句与C语言中的printf语句和C++中的cout<<语句具有相同的功能。另外,//后的内容为注释。现在我们可以运行该程序。首先把它放到一个名为HelloWorldApp.java的文件中,这里,文件名应和类名相同,因为Java解释器要求公共类必须放在与其同名的文件中。然后对它进行编译:C:\>javac HelloWorldApp.java编译的结果是生成字节码文件HelloWorldApp.class。最后用java解释器来运行该字节码文件:C:\>java HelloWorldApp结果在屏幕上显示Hello World!例1.2import java.awt.*;import java.applet.*;public class HelloWorldApplet extends Applet { //an appletpublic void paint(Graphics g){g.drawString ("Hello World!",20,20);}}这是一个简单的Applet小应用程序。程序中,首先用import语句输入java.awt和java.applet下所有的包,使得该程序可能使用这些包中所定义的类,它类似于C中的#include语句。然后声明一个公共类HelloWorldApplet,用extends指明它是Applet的子类。在类中,我们重写父类Applet的paint( )方法,其中参数g为Graphics类,它表明当前作画的上下文。在paint( )方法中,调用g的方法drawString( ),在坐标(20,20)处输出字符串“"Hello World!",其中坐标是用象素点来表示的。这个程序中没有实现main( )方法,这是Applet与应用程序Application(如例1.1)的区别之一。为了运行该程序,首先我们也要把它放在文件HelloWorldApplet.java中,然后对它进行编译:C:\>javac HelloWorldApplet.java得到字节码文件HelloWorldApplet.class。由于Applet中没有main()方法作为Java解释器的入口,我们必须编写HTML文件,把该Applet嵌入其中,然后用appletviewer来运行,或在支持Java的浏览器上运行。它的文件如下: An Applet 其中用 标记来启动HelloWorldApplet,code指明字节码所在的文件,width和height指明applet所占的大小,我们把这个HTML文件存入Example.html,然后运行:C:\>appletviewer Example.html这时屏幕上弹出一个窗口,其中显示Hello World!.从上述例子中可以看出,Java程序是由类构成的,对于一个应用程序来说,必须有一个类中定义main( )方法,而对applet来说,它必须作为Applet一个子类。在类的定义中,应包含类变量的声明和类中方法的实现。Java在基本数据类型、运算符、表达式、控制语句等方面与C、C++基本上是相同的,但它同时也增加了一些新的内容,在以后的各章中,我们会详细介绍。本节中,只是使大家对Java程序有一个初步的了解。
Java运行平台 Java平台不同于其它平台在于它是运行在其它基于硬件的平台之上的软件平台。Java平台包括二个组件: Java虚拟机(JVM)Java应用程序接口(Java API)  Java API 是一组现成的软件组件,能提供许多有用的功能,如图形用户接口工具。这些API 按组件的相关性组织成包。1.Java虚拟机 Java虚拟机(JVM)是在一台计算机上可由软件模拟也可由硬件来实现的假想的计算机。它定义了指令集(相当于中央处理器CPU),寄存器集,类文件结构栈,垃圾收集堆,内存区域。 首先,Java编译器在获取Java应用程序的源代码后,把它编译成符合Java虚拟机规范的字节码(byte code)文件,即class文件,class文件是JVM中可执行文件的格式。Java虚拟机规范为不同的硬件平台提供了不同的编译代码规范,该规范使Java软件独立于平台。然后,Java解释器负责将class文件解释运行,边解释边运行,这样,运行速度受到了一定的影响。为了提高运行速度,Javav提供了另一种解释运行方法JIT(Just In Time),可以一次解释完,再运行特定平台上的机器码,这样就实现了跨平台,可移植的功能。在Java的运行环境中,每个Java解释器,不管它是Java开发工具,还是可运行applets的web浏览器,都可执行Java虚拟机。字节码的运行要经过下面三个步骤:1.加载代码:由Class Loader完成。2.校验代码:由Bytecode Verifier完成。3.执行代码:由Runtime Interpreter完成。部分校验过的字节码被编译成原始机器码并直接运行于硬件平台。这就使Java软件代码能够以与C或C++接近的速度运行,只是在加载时,因为要编译成原始机器码而略有延迟。Java虚拟机的执行过程有三个典型特点: 1.多线程:Java虚拟机支持多个线程的同时运行,这些线程独立地执行Java代码,处理公共数据区和私有栈中的数据。2.动态链接:Java程序之所以适合在网络上运行,其主要原因是由于Java虚拟机具有动态连接特性。3.异常处理:Java虚拟机提供了可靠的异常处理。构成Java软件程序的字节码在运行时加载,校验并在解释器中运行。当运行applet时,字节码可被下载,然后由浏览器中的JVM进行解释。解释器具备两种功能,一是执行字节码,二是对底层硬件平台做适当的调用。JVM的工作流程如图所示。Java虚拟机提供了编译代码规范,它要求代码的格式由字节代码构成,由JVM字节码编写的程序必须保持适当的类型约束。对这种类型约束的检查,大部分是在编译时完成的。Java虚拟机也提供了硬件平台规范,它能够解读独立于平台的已编译好的字节码文件,每个由Sun公司批准的Java虚拟机必须运行任何class文件的程序,当然这些类文件应符合Java虚拟机规范中所指定的类文件格式,如:每个文件都包含最多一个public类。JVM运行Java代码之前要先进行检验,大都是从安全角度考虑的,JVM将代码输入一个字节码校验器以测试代码段格式并进行规则检查,检查伪造指针,违反对象访问权限或试图改变对象类型的非法代码,对象域访问是否合法等。在运行时还要进行字节码校验,主要判断字节码是否符合JVM规范,是否破坏系统完整性,是否引起操作数堆栈上溢或下溢,代码的参数类型是否准确,有无非法数据转换,有无访问限制违例等。2.Java应用程序接口(Java API) Java语言是一种通用的高级语言和功能强大的软件平台。通过使用功能强大的Java API,可以实现各种程序。Java API 提供了对各种程序的支持,其中在Java的核心API中提供了下列性能:
Java语言的特点 作为一种程序设计语言,它简单、面向对象、不依赖于机器的结构,具有可移植性、鲁棒性、安全性,并且提供了并发的机制,具有很高的性能;其次,它最大限度地利用了网络,Java的小应用程序( applet )可在网络上传输而不受 CPU 和环境的限制;另外,Java 还提供了丰富的类库,使程序设计者可以很方便地建立自己的系统。 下面我们通过把 Java 与C、C++ 相对比指出它所具有的特点。对于变量声明、参数传递、操作符、流控制等,Java使用了和C、C++相同的传统,这使得熟悉C、C++的程序员能很方便地进行编程。同时,Java为了实现其简单、鲁棒、安全等特性,也摒弃了C和C++中许多不合理的内容。 1. 全局变量Java程序中,不能在所有类之外定义全局变量,只能通过在一个类中定义公用、静态的变量来实现一个全局变量。例如:Class GlobalVar{public static global_var;}在类GlobalVar中定义变量global_var为public static,使得其他类可以访问和修改该变量。 Java对全局变量进行了更好的封装。而在C和C++中,依赖于不加封装的全局变量常常造成系统的崩溃。2. GotoJava不支持C、C++中的goto语句,而是通过异常处理语句try、catch、final等来代替C、C++中用goto来处理遇到异常时跳转的情况,这使程序更可读且更结构化。3. 指针指针是C、C++中最灵活,也是最容易产生错误的数据类型。由指针所进行的内存地址操作常会造成不可预知的错误,同时通过指针对某个内存地址进行显式类型转换后,可以访问一个C++中的私有成员,从而破坏安全性,造成系统的崩溃。而Java对指针进行完全的控制,程序员不能直接进行任何指针操作,例如把整数转化为指针,或者通过指针释放某一内存地址等。同时,数组作为类在Java中实现,很好地解决了数组访问越界这一C、C++中不作检查的错误。4. 内存管理在C中,程序员通过库函数malloc( )和free( )来分配和释放内存,C++中则通过运算符new和delete来分配和释放内存。再次释放已释放的内存块或未被分配的内存块,会造成系统的崩溃;同样,忘记释放不再使用的内存块也会逐渐耗尽系统资源。而在Java中,所有的数据结构都是对象,通过运算符new为它们分配内存堆。通过 new得到对象的处理权,而实际分配给对象的内存可能随程序运行而改变,Java对此自动地进行管理并且进行垃圾收集,有效地防止了由于程序员的误操作而导致的错误,并且更好地利用了系统资源。5. 数据类型的支持在C、C++中,对于不同的平台,编译器对于简单数据类型如int、float等分别分配不同长度的字节数,例如:int在 IBM PC中为16位,在VAX-11中为32位,这导致了代码的不可移植性,但在Java中,对于这些数据类型总是分配固定长度的位数,如对int型,它总占32位,这就保证了Java的平台无关性。6. 类型转换在C、C++中,可以通过指针进行任意的类型转换,常常带来不安全性,而在Java中,运行时系统对对象的处理要进行类型相容性检查,以防止不安全的转换。7. 头文件C、C++中用头文件来声明类的原型以及全局变量、库函数等,在大的系统中,维护这些头文件是很困难的。而Java不支持头文件,类成员的类型和访问权限都封装在一个类中,运行时系统对访问进行控制,防止对私有成员的操作。同时,Java中用import语句来与其他类进行通讯,以便使用它们的方法。8. 结构和联合C、C++中的结构和联合中所有成员均为公有,这就带来了安全性问题。Java中不包含结构和联合,所有的内容都封装在类中。9. 预处理C、C++中用宏定义来实现的代码给程序的可读性带来了困难。在Java中,不支持宏,它通过关键字final来声明一个常量,以实现宏定义中广泛使用的常量定义。显然,Java语言的这些特点都是基于对安全性,鲁棒性和可移植性的考虑而设计的。
花了一整天写出的阳历和阴历互相转换的程序,希望对大家有帮助! package com.cucu.util;/** * 返回正确的年月日 * @author http://www.linewell.com http://tieba.baidu.com/mo/q/checkurl?url=mailto%3Acg%40linewell.com&urlrefer=1e214d8d28b47773ec73e62ed7fa9ad5 * @version 1.0 */public class Date { java.util.Date d = new java.util.Date(); int date; int month; int year; int hours; int minutes; int seconds; int day; /** * @return Returns the date. */ public int getDate() { return d.getDate(); } /** * @return Returns the month. */ public int getMonth() { return d.getMonth() + 1; } /** * @return Returns the year. */ public int getYear() { int y = d.getYear(); if (y < 1900) y += 1900; return y; } /** * @return Returns the hours. */ public int getHours() { return d.getHours(); } /** * @return Returns the minutes. */ public int getMinutes() { return d.getMinutes(); } /** * @return Returns the seconds. */ public int getSeconds() { return d.getSeconds(); } /** * @return Returns the day. */ public int getDay() { return d.getDay(); }}package com.cucu.util;/** * 日期,和时间帮助类 完成阳历到阴历的转换 * @author http://www.linewell.com http://tieba.baidu.com/mo/q/checkurl?url=mailto%3Acg%40linewell.com&urlrefer=1e214d8d28b47773ec73e62ed7fa9ad5 * @version 1.0 */public class CalendarHelper { private int calendarData[] = new int[20]; private int madd[] = new int[12]; private Date date = new Date();//调用Date时间类 private String tgString = "甲乙丙丁戊己庚辛壬癸";//天干表 private String dzString = "子丑寅卯辰巳午未申酉戌亥";//地支表 private String numString = "一二三四五六七八九十";//中文数字 private String monString = "正二三四五六七八九十冬腊";//阴历月份 private String weekString = "日一二三四五六";//中文星期 private String sx = "鼠牛虎兔龙蛇马羊猴鸡狗猪";//属相 private int cYear;//阴历年 private int cMonth;//阴历月 private int cDay;//阴历日 private int cHour;//阴历小时 private int year = date.getYear();//阳历年 private int month = date.getMonth();//阳历月 private int day = date.getDate();//阳历日 public CalendarHelper() { init(); } public CalendarHelper(int year, int month, int day) { this.year = year; this.month = month; this.day = day; init(); } /** * @return Returns the day. */ public int getDay() { return day; } /** * @param day The day to set. */ public void setDay(int day) { this.day = day; } /** * @return Returns the month. */ public int getMonth() { return month; } /** * @param month The month to set. */ public void setMonth(int month) { this.month = month; } /** * @return Returns the year. */ public int getYear() { return year; } /** * @param year The year to set. */ public void setYear(int year) { this.year = year; } /** * @return Returns the cDay. */ public int getCDay() {
Java排序算法 package com.cucu.test;/** * @author http://www.linewell.com http://tieba.baidu.com/mo/q/checkurl?url=mailto%3Acg%40linewell.com&urlrefer=1e214d8d28b47773ec73e62ed7fa9ad5 * @version 1.0 */public class Sort { public void swap(int a[], int i, int j) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } public int partition(int a[], int low, int high) { int pivot, p_pos, i; p_pos = low; pivot = a[p_pos]; for (i = low + 1; i <= high; i++) { if (a[i] > pivot) { p_pos++; swap(a, p_pos, i); } } swap(a, low, p_pos); return p_pos; } public void quicksort(int a[], int low, int high) { int pivot; if (low < high) { pivot = partition(a, low, high); quicksort(a, low, pivot - 1); quicksort(a, pivot + 1, high); } } public static void main(String args[]) { int vec[] = new int[] { 37, 47, 23, -5, 19, 56 }; int temp; //选择排序法(Selection Sort) long begin = System.currentTimeMillis(); for (int k = 0; k < 1000000; k++) { for (int i = 0; i < vec.length; i++) { for (int j = i; j < vec.length; j++) { if (vec[j] > vec[i]) { temp = vec[i]; vec[i] = vec[j]; vec[j] = temp; } } } } long end = System.currentTimeMillis(); System.out.println("选择法用时为:" + (end - begin)); //打印排序好的结果 for (int i = 0; i < vec.length; i++) { System.out.println(vec[i]); } // 冒泡排序法(Bubble Sort) begin = System.currentTimeMillis(); for (int k = 0; k < 1000000; k++) { for (int i = 0; i < vec.length; i++) { for (int j = i; j < vec.length - 1; j++) { if (vec[j + 1] > vec[j]) { temp = vec[j + 1]; vec[j + 1] = vec[j]; vec[j] = temp; } } } } end = System.currentTimeMillis(); System.out.println("冒泡法用时为:" + (end - begin)); //打印排序好的结果 for (int i = 0; i < vec.length; i++) { System.out.println(vec[i]); } //插入排序法(Insertion Sort) begin = System.currentTimeMillis(); for (int k = 0; k < 1000000; k++) { for (int i = 1; i < vec.length; i++) { int j = i; while (vec[j - 1] < vec[i]) { vec[j] = vec[j - 1]; j--; if (j <= 0) { break; } } vec[j] = vec[i]; } } end = System.currentTimeMillis(); System.out.println("插入法用时为:" + (end - begin)); //打印排序好的结果 for (int i = 0; i < vec.length; i++) { System.out.println(vec[i]); } //快速排序法(Quick Sort) Sort s = new Sort(); begin = System.currentTimeMillis(); for (int k = 0; k < 1000000; k++) { s.quicksort(vec, 0, 5); } end = System.currentTimeMillis(); System.out.println("快速法用时为:" + (end - begin)); //打印排序好的结果 for (int i = 0; i < vec.length; i++) { System.out.println(vec[i]); } }}以下是运行结果:选择法用时为:2345647372319-5冒泡法用时为:1725647372319-5插入法用时为:785647372319-5快速法用时为:2975647372319-5
如何设置TOMCAT数据库连接池 最近在网上,有很多朋友并不了解什么叫做数据库连接池,怎么配置连接池也不清楚。于是为了方便大家,我特此写这份文档。以tomcat为例子:如果tomcat版本为4.X版本1) 设置oracle连接池(tomcat4.X)在设置oracle连接池之前,要保证在%tomcathome%\common\lib下面有class12.jar这个oracle驱动程序。在tomcat安装目录的conf文件夹里面有一个server.xml打开它,你可以找到 将这段代码注释掉。然后再加上以下代码 factory org.apache.commons.dbcp.BasicDataSourceFactory driverClassName oracle.jdbc.driver.OracleDriver url jdbc:oracle:thin:@localhost:1521:orcl username user password pwd maxActive 20 maxIdle 10 maxWait 10000 在这里我一一说明:path:你可以设置为"/your webApps name" 那么这样在浏览器里应该是http://localhost:8080/oa/才会到达首页。 你可以设置为""(空)那么这样在浏览器里应该是http://localhost:8080/才会到达首页。docBase:就是你的webApps名字。debug:设置bug的级别0为最高级别。reloadable:如果设置为true那么改了server.xml配置或者说改了web.xml配置或者说是改了.class以后不用重启tomcat他会自动装载。Resource name及ResourceParams name 注意了:这个就是数据库连接池的名字。在程序之中所调用的池就是要调用它。factory:一般是默认就可以了。 driverClassName :oracle驱动程序名oracle.jdbc.driver.OracleDriverurl:jdbc:oracle:thin:@localhost:1521:orcl(oralce数据库连接字符串)username:oracle用户名password:oracle密码maxActive maxIdle maxWait 自行设定,一般默认就可以了。确定以后没有错以后进行下一步,要在WEB-INF里的web.xml里加上以下信息 oralceDB DB Connection jdbc/orcldb javax.sql.DataSource Container 那么程序之中如何调用这个连接池呢?如下==》/** * 返回Oracle数据库连接 注意:红色的字体表示他要调用的连接池名,同配置 * @return Connection * @throws SQLException */ public static synchronized Connection getOracleConn() throws SQLException { try { Context jndiCntx = new InitialContext(); DataSource ds = (DataSource)jndiCntx.lookup( "java:comp/env/jdbc/orcldb"); return ds.getConnection(); } catch (NamingException ne) {
1 下一页