




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
J2SE路径问题综合分析public void init()/获取资源相对路径(由于java会使用绝对路径来找资源,打成jar时,资源便找不到,所以)Image image=Toolkit.getDefaultToolkit().getImage(getClass().getResource(a.gif);ImageIcon icon=new ImageIcon(image);bt.setIcon(icon);String cName= this.getClass().getName();System.out.println(cName);this.add(bt);this.setSize(300, 300);setVisible(true);this.addWindowListener(new WindowAdapter() Overridepublic void windowClosing(WindowEvent e) / TODO Auto-generated method stubsuper.windowClosing(e);System.exit(0););J2SE综合:泛型类型的子类及通配符使用本文讲述以下几个方面的内容,试图说明泛型类型的子类及通配符的使用。(1) 子类及替换原则;(2) 使用extends关键字的通配符;(3) 使用super关键字的通配符;(1) 子类及替换原则在java语言中,我们通俗讲一个类是另一个类的子类型,是通过使用extends关键字去继承某一个类或者使用implements关键字去实现某些接口。这样我们在编程时就可以面向接口或基类进行编程,如:Number num1 = new Integer(1);Number num2 = new Double(2.1d);这个就是所谓的替换原则,替换原则的定义是:Substitution Principle: a variable of a given type may be assigned a value of any subtype of that type, and a method with a parameter of a given type may be invoked with an argument of any subtype of that type.大概的意思是说某种类型的变量可以被该类型的任何子类所赋值,一个方法中的参数也可以被该参数的任何子类进行调用。现在我们再来看看泛型中替换原则的适用性:Example2.1List listNums = new ArrayList();nums.add(10);nums.add(8.88);在example2.1中,可以看出替换原则被很好地应用在这里,ArrayList是List的子类,我们提供给listNums变量的类型参数为Number,往listNums中添加元素时,10被封箱为Integer类型,而Integer是Number的子类,第三行的情况类似。Example2.2List intList = new ArrayList();List numList = intList; /compile errornumList.add(1.35); / cant do that根据替换原则,我们会很容易想到,既然Integer是Number的子类,则我们应该可以将List的变量赋给List的变量,但从实际情况表明,List并不是List的子类。我们不妨试想想,若果List类型的变量可以成功赋值给List类型的变量,会出现什么情况?我们可能在程序的某个位置添加一个double类型的元素进去numList中,而实质上在numList中其它元素都是Integer的类型的元素,这样就违背了泛型的初衷了。有时,我们确实希望将形如List的List对象赋给List的变量,这时就要使用extends关键字的通配符。(2) 使用extends关键字的通配符Example2.3List intList = new ArrayList();List numList = intList();numList.add(1.35); /compile error (cant do that)从Example2.3看到numList这个变量,我们可以将类型参数为Number及其Number子类的List赋给它。记住一条规则如果你使用了”? extends T”,一般情况下,你不能往该数据结构中put元素,而你可以做的就是get元素。如果要往内put元素,就需要使用下面提到的super关键字的通配符。(3) 使用super关键字的通配符Example2.4List intList = new ArrayListList numList = intList;numList.add(3); /can put integer or null在example2.4我们可以看到的意思为,我们可以将类型参数为Integer或Integer超类的List赋给numList变量,并且可以put元素到列表中(注意:在该例子中put进的元素只能为Integer或null类型)。一条比较通用的规则:如果要往List中put元素则用,如果要从List中get元素则用,如果既要get又要put则不使用通配符。J2SE综合:关于private构造函数看下面的类:HibernateSessionFactory.javapackage .wd.util;import net.sf.hibernate.HibernateException;import net.sf.hibernate.Session;import net.sf.hibernate.cfg.Configuration;/* Configures and provides access to Hibernate sessions, tied to the* current thread of execution.Follows the Thread Local Session* pattern, see link /42.html.*/public class HibernateSessionFactory /* Location of hibernate.cfg.xml file.* NOTICE: Location should be on the classpath as Hibernate uses* #resourceAsStream style lookup for its configuration file. That* is place the config file in a Java package - the default location* is the default Java package.* Examples:* CONFIG_FILE_LOCATION = /hibernate.conf.xml.* CONFIG_FILE_LOCATION = /com/foo/bar/myhiberstuff.conf.xml.*/private static String CONFIG_FILE_LOCATION = /hibernate.cfg.xml;/* Holds a single instance of Session */private static final ThreadLocal threadLocal = new ThreadLocal();/* The single instance of hibernate configuration */private static final Configuration cfg = new Configuration();/* The single instance of hibernate SessionFactory */private static net.sf.hibernate.SessionFactory sessionFactory;/* Returns the ThreadLocal Session instance.Lazy initialize* the SessionFactory if needed.*return Session*throws HibernateException*/public static Session currentSession() throws HibernateException Session session = (Session) threadLocal.get();if (session = null) if (sessionFactory = null) try cfg.configure(CONFIG_FILE_LOCATION);sessionFactory = cfg.buildSessionFactory();catch (Exception e) System.err.println(% Error Creating SessionFactory %);e.printStackTrace();session = sessionFactory.openSession();threadLocal.set(session);return session;/*Close the single hibernate session instance.*throws HibernateException*/public static void closeSession() throws HibernateException Session session = (Session) threadLocal.get();threadLocal.set(null);if (session != null) session.close();/* Default constructor.*/private HibernateSessionFactory() 在这个类中,用到了私有构造函数,如粗体部分.我的调用类:package .td.plugin;/* Created on Oct 4, 2004* To change the template for this generated file go to* WindowPreferencesJavaCode GenerationCode and Comments*/import javax.servlet.ServletException;import org.apache.struts.action.ActionServlet;import org.apache.struts.action.PlugIn;import org.apache.struts.config.ModuleConfig;import javax.naming.Context;import javax.naming.InitialContext;import .td.util.HibernateSessionFactory;/* *This class will initialize hibernate and bind SessionFactory in JNDI at the*time of application and startup and unbind it from JNDI at the time of application*shutdown*/public class HibernatePluginimplements PlugIn private static final String jndi_hibernate = jndi_hibernate_factory;private HibernateSessionFactoryhsf;private String name;public HibernatePlugin() hsf=new HibernateSessionFactory();/ This method will be called at the time of application shutdownpublic void destroy() System.out.println(Entering HibernatePlugIn.destroy();/Put hibernate cleanup code hereSystem.out.println(Exiting HibernatePlugIn.destroy();/This method will be called at the time of application startuppublic void init(ActionServlet actionServlet, ModuleConfig config) throwsServletException System.out.println(Entering HibernatePlugIn.init();System.out.println(Value of init parameter + getName();/Uncomment next two lines if you want to throw UnavailableException from your servlet/if(true)/throw new ServletException(Error configuring HibernatePlugIn);System.out.println(Exiting HibernatePlugIn.init();private void bindFactoryToJNDI() try Context ctx = new InitialContext();catch (Exception e) e.printStackTrace();public String getName() return name;public void setName(String string) name = string;在调用类中,我创建了一个HibernateSessionFactory的对象,但是在初始化时,却出了问题.总提示说:HibernateSessionFactory() hasprivateaccessin .td.util.HibernateSessionFactoryatline35(35:9)然后,我就将HibernateSessionFactory的构造函数由private改成了public,调试通过.构造函数为私有,就不能创建该类的对象.J2SE综合:浅谈java程序发布之jre篇Java开发程序,发布时总要考虑的问题就是怎么在使用者的机器上装好JRE.要考虑的问题很多:使用者有没有能力独自安装JRE,使用者已有的 JRE 和我们需要的版本是不是一致,会不会出现版本问题,等等。使用。NET要考虑的问题就少些。现在。NET CLR似乎已经很普及了,看好多D版的 Win XP都会自己安装最新的。NET CLR,而且似乎它的安装界面也比JRE友好些。彻底解决安装JRE的问题的方案,就是让我们的应用程序自己背着JRE!这样,我们的程序就像传统的Win32应用程序一样,双击就可以执行,不用管所在的机器上是否有JRE,是什么版本的JRE,无论怎样,我有我自己的!要做到这一点,其实非常容易。王森在他的Java深度历险(强力推荐这本书,内容少而精)的第一章就解释了JDK,JRE,JVM之间的关系。解释了我们执行java.exe时发生的事情。其中提到,java.exe依照一套逻辑来寻找可以用的JRE,首先查找自己所在的目录下有没有 JRE(据王森讲这样说不确切,我没有JDK全部的源代码,在此无从考证);其次查找自己的父目录下有没有JRE;最后才是查询Windows的注册表。通常我们在安装好了JRE的机器上的任何一个目录下都可以执行java.exe.因为它在安装时被复制到了windows的system32目录下,而后者无论如何都会在path环境变量中。这个java.exe最终必然会访问注册表来确定真正的JRE的所在地。若我们要求每一个应用程序都自带JRE,必然不能走这条路。但,逻辑的第二条讲,java.exe会在它的父目录下查找JRE,解决方案就在这一条中。假设我们的应用程序打好了包,叫做 MyApp.jar,放在MyApp的目录下。我们在MyApp目录下,可以执行java ?jar MyApp.jar来运行我们的程序。我们安装的是 JRE 1.5,在C:Program FilesJavajre1.5.0下。现在,我们只需要简单的将jre1.5.0目录搬到MyApp目录下,顺便改个容易写的名字比如叫jre.现在,我们的应用程序就象这样:MyAppMyApp.jarJreJre1.5.0目录下的全部内容Java.exe 就在jre目录下的bin目录中。根据第二条逻辑,java.exe会在它的父目录中查找jre,实验证实,它会查找lib目录,而lib就在jre目录下。因此,这样java.exe就会确定jre的所在然后正常执行java程序,不会去管我们是否安装了JRE,注册表中是否有注册项这些杂事了。试一下,在命令行下进入MyApp的目录下,假设它在C盘,将path指向MyApp下的JRE:set path=c:MyAppjrebin然后运行:java ?verbose ?jar MyApp.jar加上verbose参数以确定我们确实用了这一套被搬出了家的JRE.程序可以运行,并且在命令行输出的前几行,可以看到:Opened C:MyAppjrelibrt.jarOpened C:MyAppjrelibjsse.jarOpened C:MyAppjrelibjce.jarOpened C:MyAppjrelibcharsets.jar因此程序读取的确实是它的私有的JRE.至此,我们似乎完成了任务。但是现在我们的私有JRE仍不完美,缺点是太大。JRE 1.5有接近70MB,作为我们的私有的JRE,好多内容都是可以抛弃的。Jre目录下的license都可以不要,bin下的执行文件只需要保留java.exe或者javaw.exe,lib下只要保留rt,jsse, jce,charsets几个库就可以了。除了i386和zi两个子目录外,其余的子目录都可以不要。Zi下只需要保留自己地区的子目录和其下的一些文件就可以。Lib下除了库之外的属性文件等等都要保留。这样清理一番,JRE仍然有接近50MB.还可以继续清理几个库文件里面不需要的内容,这需要仔细的整理,会很费功夫。最好能写出一个自动工具帮助我们整理它们。从Sun公司上下到的JMF里面附带的用Java写的媒体播放器就自带了JRE,只有几个 MB.清理过后需要运行几遍我们的应用程序,以确保我们的JRE不缺少东西。如果我们希望能有一个程序直接启动我们的应用程序,那就还要费些功夫。最简单的方法是弄出一个快捷方式来,但是快捷方式的路径不能是相对的,不方便我们安装。我想到的方案就是用Win32程序包装一下。在VS.NET下写一个Win32小程序:intPASCALWinMain(HINSTANCEhInstance, HINSTANCEhPrevInstance, LPSTRlpszCmdLine, intnCmdShow) STARTUPINFOsi; PROCESS_INFORMATIONpi; ZeroMemory(&si,sizeof(si); si.cb=sizeof(si); ZeroMemory(,sizeof(pi); /Startthechildprocess. if(!CreateProcess(jrebinjavaw.exe,/执行的程序名 jrebinjavaw.exe-jarMyApp.jar,/带参数的执行程序 NULL,/Processhandlenotinheritable. NULL,/Threadhandlenotinheritable. FALSE,/SethandleinheritancetoFALSE. 0,/Nocreationflags. NULL,/Useparentsenvironmentblock. NULL,/Useparentsstartingdirectory. &si,/PointertoSTARTUPINFOstructure. )/PointertoPROCESS_INFORMATIONstructure. ) ErrorExit(CreateProcessfailed.); /Waituntilchildprocessexits. WaitForSingleObject(pi.hProcess,INFINITE); /Closeprocessandthreadhandles. CloseHandle(pi.hProcess); CloseHandle(pi.hThread); 基本上是按照MSDN文档中的例子照搬的。将它编译成一个EXE文件,我们的任务才全部完成。双击这个EXE文件,我们的程序启动了,看起来和传统的Win32程序没有两样,JRE完全被隐藏在底层。J2SE综合:如何使用Java网络启动部署软件Java网络启动(Java Web Start (JWS) )可以实现在网络浏览器中运行具备全部特色的Java应用软件。Sun公司在2001年三月发布的Java1.0就已经具备了对JWS的支持,自从J2SE1.4版本以来,JWS就已经成为Java运行时环境(Java Runtime Environment (JRE) )的默认配置,不必再单独安装了,在这篇文章中,我将向您介绍这一重要技术。技术JWS是与网络浏览器相结合的应用软件,当用户点击链接的时候就会指向一个Java网络启动协议(Java Network Launching Protocol (JNLP) )文件,然后浏览器自动启动JWS,接着下载、缓存并运行基于Java技术的应用软件。在JWS背后的技术是JNLP及其API,它们是在Java团体进程(Java Community Process)中开发的。JWS实际上是JNLP规范的一个参考实现,JNLP技术定义了一个标准的文件格式,该格式描述了如何调用一个JNLP文件。既然安装链接可以作为普通的HTTP URL的链接,那么您就可以通过网页来检查客户端是否安装了JWS,您可以在IE中通过以下代码来检查:on error resume nextIf isIE = true Then If Not(IsObject(CreateObject(JavaWebStart.isInstalled) Then javawsInstalled = 0 Else javawsInstalled = 1 End If If Not(IsObject(CreateObject(JavaWebStart.isInstalled.) Then javaws142Installed = 0 Else javaws142Installed = 1 End If If Not(IsObject(CreateObject(JavaWebStart.isInstalled.) Then javaws150Installed = 0 Else javaws150Installed = 1 End IfEnd If开发开发部署在JWS上的软件和开发独立运行的软件在Java 2平台上是基本相同的,比如,程序的起点都是以下的标准代码:public static void main(String argv)然而,为了支持网络部署,也就是实现自动下载和调用软件,并且保证软件在一个安全的沙盒中运行,还需要一些额外的考虑,包括:应用软件必需作为JAR文件集合来使用; 所有的应用软件资源,比如文件、图片都必需存储在JAR文件中,而且它们都必需使用Java 2平台的getResource机制来引用; 应用软件可以使用System.exit调用;进行不受限制地访问系统的软件需要通过签名的JAR文件来使用,而且JAR文件中所有的项目都必需经过签名; 如果软件要运行在一个安全沙盒中,那么它必需遵循以下的限制;不能进行本地磁盘访问;所有的JAR文件都必须从同一个主机下载; 只能和下载JAR文件的主机之间建立网络连接;不能安装安全管理器;不能使用本地类库;对系统属性的访问受到限制,对于JNLP中定义了的系统属性,应用软件可以进行读/写操作,并且对于相同的属性集合具备和applet一样的只读权限安全JWS是构建于Java 2平台之上的,Java 2平台提供了一个全面的安全架构,在Java 6.0版中,JWS则提供了更加强大的安全特色,比如代码签名。在默认状态下,通过JWS调用的应用软件将运行在一个受到限制的环境中(一个“沙盒”),它们对本地计算资源的访问,比如存储设备和本地网络,是有限的。这样,JWS就保证了下载的潜在的不可信任的软件不会危及到本地文件或网络。当然,应用程序也可以请求不受限制的本地系统访问,在这种情况下,当该软件第一次调用时,JWS将显示安全警告对话框,安全警告的内容包含软件开发者的信息。如果一个应用软件包含了一个或多个经过签名的JAR文件,JWS将会验证这些JAR文件在签名后是否发生过变化,如果数字签名的认证失败,那么JWS就不会运行该软件,因为它们已经被第三方修改过了。通过在JNLP文件中添加以下的设置,一个应用软件可以请求完整的权限。 JNLP文件JNLP是一个和JWS紧密相关的概念,它经常可以和术语“网络启动”相互替代使用,实际上,JNLP是一个规定了JWS应用软件如何启动的协议。JNLP中的包含了诸如JAR包文件的位置、应用软件主要类的名称,以及程序的其它一些参数。在适当配置的浏览器中,JNLP文件是传递给JRE的,然后JRE将会下载应用软件到用户的机器上并开始执行。一个JNLP文件不包含任何二进制数据,实际上它包含的URL指向所有的二进制数据和二进制代码资源。这些文件还可以指向其他的JNLP文件,它们被称为扩展描述符,一个扩展描述符通常描述了运行软件所必需的组件,在扩展描述符中描述的资源将会成为应用软件类路径的一部分,这样,常用的功能只需要描述一次即可,以下的例子是一个常见的JNLP文件: Hello world! My Web Company 这个JNLP文件描述了如何调用名为Hello的程序,在JNLP文件中指定了需要1.3或更高版本的Java来运行该程序,同时还有一些与程序相关的信息,这些信息都会在用户下载的过程中显示。如果您希望了解更详细的JNLP协议和文件格式,可以参考这个官方规范。结论JWS提供了一种与平台无关的、安全的而且强大的部署技术,开发者只需要将应用软件部署在网络服务器上就可以为最终用户提供全部的功能,而最终用户也只需要使用网络浏览器就可以运行所需的应用软件,而且永远是最新的版本。JWS的一个主要优点是它克服了Java插件和不同Java虚拟机的兼容性问题,但是,使用网络启动的程序却不能像applet一样简单地和浏览器进行通讯。J2SE综合:深入理解JavaHelp结构的好处Sun微系统的JavaHelp系统是一种应用程序帮助技术,它可以在所有支持Java的平台和浏览器中运行?只要它是一个纯粹的Java产品。通过applet和Java应用程序,在其他环境下,比如在互联网或企业内部互联网中,它是理想的使用对象。在本文中,我将回顾JavaHelp的主要作用,并阐明它的简单使用方法。优点JavaHelp通过使用Java基础类(JFC) 软件组件来实现,这使得开发户自定义界面和功能变得灵活轻松。您可以轻而易举地将应用程序的帮助信息嵌入到应用程序之中,或者嵌入到另一个独立的窗口里。JFC 还具有通过自定义导航控件拓展帮助功能的能力。JavaHelp使动态更新帮助数据或将其存储在一个便利的位置变得简单易行,不管是在客户端还是服务器端。内容窗口使用HTML 3.2格式显示话题,使内容设计变得简单。标准导航提供内容表单(TOC)、索引和全文搜索。(TOC和索引都遵循W3C标准。)JavaHelp Data Sheet提供以下信息:TOC提供层叠式和扩展式话题展示,无限量等级层次和多重TOC的合并。TOC与内容阅读器同步显示,也就是说显示的话题在TOC中被突出。索引支持多重索引的合并。全文搜索被设计得很灵活,并且可以配置。搜索引擎也可置于用户或服务器中的任一方。帮助内容和搜索引擎被压缩成一个使用标准JAR格式的单个文件。尽管为了使存储和访问更具灵活性,推荐将所有文件压缩成一个单独的文件,但是您仍然可以将所有文件以扩展的格式保存在目录中。您可以在自定义编写的导航器、搜索引擎、标准JavaHelp阅读器或在任何HTML显示中,包括标准Web浏览器中,查看和导航内容。JavaHelp API提供一个上下文敏感帮助和ID映射的机制。您可以将多重组件的帮助信息用JavaHelp API合并,这样用户就看到一个单独的完整文档。合并机制可以应用于TOC、索引和搜索数据库。特性JavaHelp有两个主要版本:1.1.3和2.0版。最早支持JavaHelp 2.0的Java版本是J2SE 1.2.2,因此您无需担心自己的代码是否支持JavaHelp.JavaHelp系统由一个特性完整的、可扩展的规范、API以及一个参考执行组成。标准JavaHelp系统的主窗口:有三个显示窗口,在您退出窗口时并未被关闭,依然可配置。在默认情况下,一个主要窗口有以下三个窗格:工具栏、导航窗口和内容窗口。用户可以应用多种方式通过内部应用程序调用在线帮助,例如,当一个用户从帮助菜单中选择一项,或在应用程序GUI中点击帮助按钮,JavaHelp系统提供一个简便的界面,通过这个界面,应用程序要求话题的ID 得以显示。然后JavaHelp系统将话题ID与相应的URL相连接并将其显示出来。ID被映射到一个被称作映射文件的JavaHelp系统元数据文件中的URL上。例如,当为文件选择对话框编码时,开发人员要求话题ID fc_help在当对话框底部的帮助按钮被点击时显示。在映射文件中,ID fc_help被定义为名为 FileChooser.html的文件,使用以下XML句法:将文件名(或URL)的规范从程序代码分离为内容的作者提供了控制与话题ID相关的信息的自由。工具提示是一个显示给用户的简短信息,当光标停留在一个按钮上的时间间隔长于阈值时它就会出现。您还可以将工具提示信息纳入JavaHelp系统数据。JavaHelp系统数据具有调用在线帮助的能力,能够在应用程序GUI中描述图形组件。用户操纵激活语境敏感帮助,然后将组件以问题形式特定化。与组件相联系的ID被显示。您可以从TOC、索引导航或主要窗口的内容窗格中显示帮助话题。轻型组件轻型组件能够向帮助话题添加功能。这些组件与Java的applet相似,但它们的加载和执行更为迅速。一个帮助的创作者能够使用已经在JavaHelp中执行的轻型组件;这个组件执行弹出窗口和次级窗口。在HTML 话题文件中使用轻型组件,您可以使用HTML。J2SE综合:使用条件运算符的阵痛一、案例编号:U02C09二、案例名称:使用条件运算符的阵痛三、关键词:条件运算符、三目运算符、三元运算符、类型转换四、案例情景描述:条件运算符有三个操作数。它的形式是:boolean-exp?exp1:exp2。它首先计算boolean表达式的值,如果为true那么整个表达式的值就是表达式exp1的值,如果boolean表达式的值为false,那么整个表达式的值就是exp2的值。intk=(23)?23:45;因为boolean表达式23为false,所以k的值是45。(1)charx=A;/line1inti=0;/line2System.out.println(true?x:0);/line3System.out.println(true?x:1111111110);/line4System.out.println(false?i:x);/line5(2)/*假设Test是已经定义的某个类*/Testt=flase?newObject():newTest();五、案例理论分析:1、我们先看第一个代码片段:三个输出语句会输出什么结果呢?你也行会认为输出结果是:AAA当你运行一下这段代码,它的真正结果是:A6565为什么会有这样的结果呢?实质上这就是条件运算符对于运算结果类型的限制:(1)如果表达式1和表达式2具有相同的类型,那么整个条件运算符结果的类型就是这个类型。(2)如果一个表达式的类型是T,T是byte或short或char,另一个表达式的类型是int类型的常量表达式,而且这个常量表达式的值是可以用类型T表示的(也就是说,常量表达式的值是在类型T的取值范围之内),那么整个条件运算符结果的类型就是T。(3)除以上情况外,如果表达式1和表达式2的类型不同,那么将进行类型提升,整个条件运算符结果的类型就是提升后的类型。System.out.println(true?x:0);/line3。表达式1是char类型,表达式2是int类型的常量表达式,而且这个常量表达式的值0可以用char类型来表示,因此整个条件运算符结果的类型就应当是char类型,所以输出的结果就是A。System.out.println(true?x:1111111110);/line4。表达式1是char类型,表达式2是int类型的常量表达式,但是这个常量表达式的值已经超出了char类型的取值范围,因此要进行类型提升,把char类型提升为int类型,整个条件运算符结果的类型就是int类型了,所以输出的结果是65(字符A的ASCII码)。System.out.println(false?i:x);/line5。表达式1是int类型的变量,表达式2是char类型的变量,没有常量表达式。因此要进行类型提升,把char类型提升为int类型,整个条件运算符结果的类型就是int类型。所以输出结果就是65。2、我们再看第二个代码片段,它的结果是在编译阶段引发错误。为什么?Testt=flase?newObject():newTest();我们看到表达式1是Object类型,表达式2是Test类型。没有常量表达式,类型不同,因此要进行类型提升的。要把Test类型提升为Object类型,因此整个条件运算符结果的类型应当是Object类型。当在赋值的时候要把Object类型赋值给Test类型的变量,当然会引发编译错误。J2SE综合:属性配置文件的使用方法我们常常使用配置文件来进行工程属性的配置,那么我们如何使用我们的属性文件呢?假设有一个连接数据库的属性配置文件perties,文件内容如下:jdbc.driver=com.microsoft.jdbc.sqlserver.SQLServerDriverjdbc.url=jdbc:microsoft:sqlserver:/68:1433;jdbc.username=sajdbc.password=sajndi.databaseName=northwind那么如何使用配置文件呢?其实很简单我们创建如下类:/* Created on 2005-8-15*Thisclassis
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 木渎培东冬令营数学试卷
- 2025年建筑工程类材料员基础知识-基础知识参考题库含答案解析
- 2025年电视内镜手术系统项目规划申请报告
- 2025年学历类自考公共课数量方法(二)-政治经济学(财)参考题库含答案解析
- 2025年深圳中考英语冲刺押题《短文填空》含答案解析
- 2025年非临床安全性评价服务项目申请报告
- 平邑小升初数学试卷
- 历年高中会考数学试卷
- 2025年学历类自考专业(电子商务)电子商务安全导论-电子商务英语参考题库含答案解析
- 员工职业健康与职业安全培训考核试卷
- T/CCS 025-2023煤矿防爆锂电池车辆动力电源充电安全技术要求
- 贴膜安装服务合同协议书
- 新疆遴选公务员笔试题及答案
- (高清版)DG∕TJ 08-2165-2015 建设项目交通影响评价技术标准
- 过氧化氢低温等离子灭菌器规范
- 国企出纳笔试试题及答案
- 第32届全国中学生物理竞赛复赛答案
- 彩钢顶翻新施工方案
- 工地现浇楼板合同协议
- 《讲解员培训》课件
- 2022标准化数据中心机房建设项目设计方案
评论
0/150
提交评论