JAVA网页设计编程必备典范:Java罕见成绩集锦
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊编程|成绩问:怎样设置Java2(JDK1.2)的情况变量?
答:Java2安装后,必要设置PATH和JAVA_HOME情况变量.与JDK1.1分歧的是:设置好JAVA_HOME情况变量后,JVM将主动搜刮体系类库和用户确当前路径。
Java2情况变量的设置以下例所示: Solaris平台:setenvJAVA_HOMEJava2的安装路径 setenvPATH$JAVA_HOME/bin:${PATH} Windows平台:setJAVA_HOME=Java2的安装路径 setPATH=$JAVA_HOMEbin;%PATH%
问:哪些Java集成开辟工具撑持Java2?
答:今朝盛行的Java集成开辟情况,如Inprise的JBuilder,Symantec的VisualCafe,Sybase的PowerJ,都撑持Java2.
问:假如在Netscape或IE扫瞄器中运转Javaapplet时呈现了毛病,怎样断定毛病局限?
答:当javaapplet在扫瞄器中运转时,利用的是扫瞄器自己的缺省JVM.而分歧扫瞄器对JDK的撑持水平也不尽不异.因而,在Netscape或IE扫瞄器中运转Javaapplet呈现了毛病,倡议利用JDK供应的工具appletviewer或Sun公司的Hotjava扫瞄器来测试该applet,以断定毛病的发生是与扫瞄器相干。 假如applet在appletviewer或Hotjava中运转统统一般,则毛病的发生是因为扫瞄器不完整兼容JDK而引发的.此时,办理办法能够是利用Hotjava扫瞄器大概安装Sun公司的JavaPlugin. 假如applet在Hotjava扫瞄器或appletviewer中运转即产生毛病,则应该依据毛病提醒反省applet程序.
问:当用JDBC向数据库中拔出数据或从数据库中提取数据时,为什么偶然中笔墨符会显现为乱码?
答:这个成绩的完成一般与各个JDBCdriver的完成有关.今朝年夜多半JDBCdriver接纳当地编码格局来传输中笔墨符,比方中笔墨符"0x4175"会被转成"0x41"和"0x75"举行传输.因而我们必要对JDBCdriver前往的字符和要发给JDBCdriver的字符举行转换.
当用JDBCdriver向数据库中拔出数据时,必要先将Unicode转成nativecode;当JDBCdriver从数据库中查询数据时,则必要将nativecode转换成Unicode.上面给出了这两种转换的完成:
Stringnative2Unicode(Strings){
if(s==null||s.length()==0){
returnnull;
}
byte[]buffer=newbyte;
for(inti=0;is.length();i++){if(s.charAt(i)>=0x100){
c=s.charAt(i);
byte[]buf=(""+c).getBytes();
buffer=(char)buf;
buffer=(char)buf;
}
else{
buffer=s.charAt(i);
}
}
returnnewString(buffer,0,j);
}
除利用以上两个办法以外,有些JDBCdriver假如对jdbcdriverManager设置了准确的字符集属性,以上2个办法就不必要了.
问: 当用Servlet来处置http哀求并发生前往的HTML页面时,怎样使HTML页面中的中笔墨符可以一般显现?
答: javax.servlet.http.HttpResponse类用于发生前往页面.经由过程HttpResponse界说的办法getOutputStream()能够取得ServletOutputStream的实例,如许用户就能够使用ServletOutputStream.write办法向输入流中写进前往页面的内容.可是ServletOutputStream利用的是缺省的编码体例,假如要使前往页面中的中笔墨符可以一般显现,最好显现地指定所用的字符编码体例.一般必要机关一个OutputStreamWriter,例程以下:
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)
throwsServletException,IOException
{
res.setContentType("text/html");
ServletOutputStreamout=res.getOutputStream();
OutputStreamWriterow=newOutputStreamWriter(out,"GB2312");
ow.write("这是测试");
ow.flush();
ow.close();
}
问: 怎样设置JavaWebServer的CLASSPATH,以包括用户的class文件?
答: 有两种办法能够设置JavaWebServer的CLASSPATH情况变量,以利用户编写的Servlet可以挪用用户的class文件. 将用户的class文件放到JavaWebServer_Dir/classes目次下,在JavaWebServer启动时,classes目次被主动到场到CLASSPATH情况变量中了. 修正httpd.nojre文件,将用户class文件地点的路径名加到CLASSPATH情况变量中.
问: 为何在Windows平台上用Naming.lookup来猎取远程RMI对象时会很慢?
答: 呆板的收集设置不准确极可能会引发该成绩的产生. RMI利用了Java收集类,出格是java.net.InetAddress类,它将查询TCP/IP的主机名,包含IP地点到主机名的映照和主机名到IP地点的映照.在Windows平台,这类查询功效是由当地的WindowsSocket库来完成的.因而延时是产生在Windows库中,而非RMI中.
假如你的呆板设置成利用DNS,成绩一般是DNS服务器查不到主机名,你所发明的延时是DNS查询的延时.请实验将RMI通讯中触及到的一切主机名/IP地点加到当地文件winntsystem32driversetchosts或windowshosts中.格局以下:
IP地点主机名
云云设置应该能够分明地削减查询所花的工夫.
问:编写Javaapplication时,怎样设置proxy的信息,以便会见内部网站?
答: 若在javaapplication中会见内部网站,起首应设置proxy信息,样例代码以下:
importjava.util.properties;
.....
Propertiessys=System.getProperties();
sys.put("proxySet","true");
sys.put("proxyHost","myHTTP.proxyserver.com");
sys.put("proxyPort","80");
System.setProperties(sys);
u=newURL(website);
connect=(HttpURLConnection)u.openConnection();
.....
问:Swing组件JList的列表数据修正了,怎样关照JList改动显现?
答: JList组件有一个独自的显现形式ListModel来暗示JList的显现数据. JList创立今后,JList数据元素的值及数据元素的数目能够静态地改动. JList在它的数据形式ListModel中察看数据的改动.因而,一个ListModel的准确完成应该在每次数据产生改动时,关照事务的监听者. 当利用机关函数JList(Object[])创立一个JList的实例时,体系将主动创立一个DefaultListModel的实例来存储JList的显现数据,能够挪用DefaultListModel中界说的烦琐办法来静态地修正JList的数据,如removeElementAt(index),addElement(Object)等.DefaultListModel在修正数据的同时,将关照JList关于数据的改动.
问: 在Javaapplet中怎样完成一个形式对话框?
答: 在Javaapplet中完成形式对话框的关头就是在创立一个对话框的时分要为该对话框指定一个准确的父窗口.由于Applet是Panel类的子类,不能够作为对话框的父窗口,以是起首要取得applet地点的窗口,作为形式对话框的父窗口.样例代码以下:
.....
Dialogd=newDialog(getParentWindow(comp),title);
//comp为applet上的恣意一个组件
....
publicvoidgetParentWindow(ComponentcompOnApplet,Stringtitle){
Containerc=compOnApplet.getParent();
while(c!=null){
if(cinstanceofFrame)
return(Frame)c;
c=c.getParent();
}
returnnull;
}
问:在Javaapplet中怎样显现别的一个HTML页面?
答: 经由过程java.applet.Applet.getAppletContext()办法能够取得与该applet相干的AppletContext,AppletContext.showDocument(URL)办法就能够使applet地点的扫瞄器显现别的一个网页.
问: 用JDK完成的署名applet,能否在Netscape或IE中运转?
答: 用JDK完成的署名applet,不成以在Netscape或IE中运转,可是能够在Hotjava扫瞄器中运转.
分歧的扫瞄器供应了分歧的署名applet机制,如Netscape供应了zigbert工具和CapabilityAPI,而IE则必要利用CAB文件.可是,不管是Netscape工具发生的署名applet,仍是用IE发生的署名applet,都不成以在别的的扫瞄器中运转.
假如要使JDK发生的署名applet可以在Netscape或IE中运转,办理办法是在Netscape或IE中安装JavaPlugin,则用JDK完成的署名applet就能够在这两种扫瞄器中运转.
问: 用JNI手艺能够从Java使用中挪用C程序库,可是怎样使该C程序库能够挪用别的的C程序库?
答: 假如一个被Java挪用的C程序库C1仍必要挪用别的一个C程序库C2,那末在编译C1的时分应该连接程序库C2,步骤以下(Solaris平台): 编写挪用C库的Java文件,并编译. javacjava文件名
发生C程序头文件 javah-jnijava文件名(不带后缀.java)
编写被Java挪用的C程序C1.c,和被C1挪用的C2.c,并编译. cc-G-Iinclude路径名C2.c-olibC2.so cc-G-Iinclude路径名-lC2C1.c-olibC1.so
设置情况变量 setenvLD_LIBRARY_PATHlibC1.so,libC2.so地点路径 :${LD_LIBRARY_PATH}
运转java使用
问: 在Java言语中,怎样列出PC机文件体系中的一切驱动器名?
答: 在Java2版本中,java.io包中的File类新增添了办法listRoots()能够完成这一功效.
问: 为何Runtime.exec("ls")没有任何输入?
答: 挪用Runtime.exec办法将发生一个当地的历程,并前往一个Process子类的实例,该实例可用于把持历程或获得历程的相干信息.因为挪用Runtime.exec办法所创立的子历程没有本人的终端或把持台,因而该子历程的尺度IO(如stdin,stdou,stderr)都经由过程Process.getOutputStream(),Process.getInputStream(),Process.getErrorStream()办法重定向给它的父历程了.用户必要用这些stream来向子历程输出数据或猎取子历程的输入.以是准确实行Runtime.exec("ls")的例程以下:
try
{
process=Runtime.getRuntime().exec(command);
InputStreamReaderir=newInputStreamReader(process.getInputStream());
LineNumberReaderinput=newLineNumberReader(ir);
Stringline;
while((line=input.readLine())!=null)
System.out.println(line);
}
catch(java.io.IOExceptione){
System.err.println("IOException"+e.getMessage());
}
问: 怎样发生署名applet,以使applet可以会见当地资本?
答: 在jdk1.1中,可使用javakey命令来发生公钥,私钥,证书和署名的jar文件,具体材料请参考:http://java.sun.com/security/usingJavakey.html而java2对署名机制做了对照年夜的改善,同意用户更天真地设置平安权限.Java2供应了三个工具:keytool,policytool和jarsigner来完成署名applet.比方,Joe编写了一个署名applet:SignedApplet.java,那末发生一个复杂的署名applet的历程以下:
//发生密钥,密钥别号为joe,口令为sign12,寄存在密钥库joestore中
keytool-genkey-aliasjoe-keypasssign12-keystorejoestore
//将SignedApplet.class及相干文件打包成jar文件
jarcvfSignedAppletDemo.jar
//使用keytool天生的自署名的证书发生署名applet(jar文件)
jarsigner-keystorejoestore-signedjarjoe.jarSignedAppletDemo.jarjoe
//将自署名证书从keystore中输入到文件
keytool-export-keystorejoestore-aliasjoe-filejoe.cer
而关于署名applet的承受方Susan,必要经由过程以下步骤来平安地实行
Joe编写的署名applet:
//失掉Joe的证书并将之读进到密钥库中susanstore中
keytool-import-aliasjoe-filejoe.cer-keystoresusanstore
//运转policytool发生满意Susan请求的policy文件
policytool
//用appletviewer运转之,或在扫瞄器中安装javaplugin来运转之.
关于署名applet在JavaPlugin中的部署请参考以下网页:
http://java.sun.com/security/signExample12/
注:以上的例子为复杂起见,利用了keytool发生的自署名证书.实在,用户也能够
利用keytool-certreq向贸易CA中央请求电子证书.
问: 若经由过程ObjectOutputStream向一个文件中屡次以追加体例写进object,为何用ObjectInputStream读取这些object时会发生StreamCorruptedException?
答: 利用缺省的serializetion的完成时,一个ObjectOutputStream的机关和一个ObjectInputStream的机关必需逐一对应.ObjectOutputStream的机关函数会向输入流中写进一个标识头,而ObjectInputStream会起首读进这个标识头.因而,屡次以追加体例向一个文件中写进object时,该文件将会包括多个标识头.以是用ObjectInputStream来deserialize这个ObjectOutputStream时,将发生StreamCorruptedException.一种办理办法是能够机关一个ObjectOutputStream的子类,并掩盖writeStreamHeader()办法.被掩盖后的writeStreamHeader()办法应判别是不是为初次向文件中写进object,羰?则挪用super.writeStreamHeader();若否,即以追加体例写进object时,则应挪用ObjectOutputStream.reset()办法.
问: 对象的序列化(serialization)类是面向流的,应怎样将对象写进到随机存取文件中?
答: 今朝,没有间接的办法能够将对象写进到随机存取文件中. 可是可使用ByteArray输出/输入流作为中介,来向随机存取文件中写进或从随机存取文件中读出字节,而且能够使用字撙节来创立对象输出/输入流,以用于读写对象.必要注重的是在字撙节中要包括一个完全的对象,不然读写对象时将产生毛病.比方,java.io.ByteArrayOutputStream可用于猎取ObjectOutputStream的字撙节,从中可失掉byte数组并可将之写进到随机存取文件中.相反,我们能够从随机存取文件中读出字节数组,使用它可机关ByteArrayInputStream,进而机关出ObjectInputStream,以读取对象.
问: 运转RMI使用时,可不成以不手工启动名字服务rmiregistry,而是从程序中启动之?
答: 能够.java.rmi包中供应了类java.rmi.registry.LocateRegistry,用于猎取名字服务或创立名字服务.挪用LocateRegistry.createRegistry(intport)办法能够在某一特定端口创立名字服务,从而用户无需再手工启动rmiregistry.别的,LocateRegistry.getRegistry(Stringhost,intport)办法可用于猎取名字服务.
问: 利用类PrintJob举行打印操纵时,应怎样设置打印机名等打印属性?
答: 利用以下办法能够取得PrintJob的实例用于把持打印操纵:
Toolkit.getPrintJob(Framef,Stringjobtitle,Propertiesprop)
那末关于打印属性的设置能够经由过程对prop的属性设置来完成,打印属性包含:
awt.print.destination:能够是"printer"或"file"
awt.print.printer:打印机名
awt.print.fileName:打印文件名
awt.print.numCopies:打印份数
awt.print.options:打印命令的打印选项
awt.print.orientation:打印偏向,能够是"portrait"或"landscape"
awt.print.paperSize:纸张巨细,能够是"letter","legal","executive"或"a4"
问: 在JDK1.1中Thread类界说了suspend()和resume()办法,可是在JDK1.2中已过期,应利用甚么办法来替换之?
答: Thread.suspend自己易于发生逝世锁.假如一个方针线程对某一关头体系资本举行了加锁操纵,然后该线程被suspend,那末除非该线程被resume,不然别的线程都将没法会见该体系资本.假如别的一个线程将挪用resume,使该线程持续运转,而在此之前,它也必要会见这一体系资本,则将发生逝世锁.
因而,在Java2中,对照盛行的体例是界说线程的形态变量,并使方针线程轮询该形态变量,当形态为吊挂形态时,可使用wait()办法使的地方于守候形态.一旦必要该线程持续运转,别的线程会挪用notify()办法来关照它.
问: 利用JDBC编程,应怎样把持了局集ResultSet的指针,使之可以高低挪动,和挪动到了局集的第一行和最初一行?
答: 在JDK1.1中,ResultSet类中只界说了next()办法撑持数据指针的下移.但在Java2中,ResultSet类增添了以下办法撑持数据指针的挪动,包含:
ResultSet.first():将数据指针移到了局集的第一行
ResultSet.last():将数据指针移到了局集的最初一行
ResultSet.previous():将数据指针上移一行
以上的办法界说在JDBC2.0的标准中,一切撑持JDBC2.0的JDBC驱动程序都能够撑持上述办法.今朝Intersolv和OpenLink等JDBC驱动程序厂商均有产物撑持JDBC2.0.
问: 哪几种WebServer撑持Servlet?怎样使IIS撑持Servlet?
答: 今朝,撑持Servlet的服务器端产物次要有:Sun公司的JavaWebServer,LotusDominoGoWebServer,BEAweblogicTengahServer,Jigsaw,NetForge,AcmeServer和MotBaysJetty等.
别的,一些第三方厂商也开辟了Servletengine,以使别的WebServer(如NetscapeWebServer,IIS等)可以运转Servlet,如LiveSoftware的Jrun(http://www.livesoftware.com/products/jrun/)等.
问: 怎样在Java使用中将图象存储到图象文件中?
答: JavaAdvancedImagingAPI(包括在JavaMediaAPI中)同意在Java使用中实行庞大的,高功能的图象处置.JAIAPI供应了存储图象的才能.今朝,JAIAPI撑持以下几种图象文件格局:BMP,JEPG,PNG,PNM,TIFF.上面给出了将图象存储到BMP文件的一段代码:
OutputStreamos=newFileOutputStream(fileToWriteTo);
BMPEncodeParamparam=newBMPEncodeParam();
ImageEncoderenc=ImageCodec.createImageEncoder("BMP",os,param);
enc.encode(img);
os.close();
有关存储图象文件的编程指南请参考以下网页:
http://java.sun.com/products/java-media/jai/forDevelopers/jai-guide/
问: 怎样用Java言语向串口读写数据?font>
答: Sun公司的JavaCommunicationAPI2.0可用于读写串口,它撑持RS232串口和IEEE1284并口,供应了一种与平台有关的串/并口通讯机制.
首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
页:
[1]