文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Java四大美女

Java四大美女

时间:2010-08-16  来源:老 陈

古代有四大美人,各位热爱Java的大侠,可知Java也有四大美女?

如果被我问得一头雾水,那你就是有点out了。Java从开天辟地,进化到今天,可谓历尽苍桑,但是还是免费的。那为什么甲骨文还要花重金购买呢?原因很简单,甲骨文已经发现了Java的价值千金所在了。千金者,美女也。

Java发展至今天,也有点历史了,却很少有人为其四大美女著书立说,鄙人不才,看不过眼,就硬着头皮献美了,四大美女出场:

小可爱Applet;

后台老板Servlet;

掌门人Portlet;

小家碧玉MIDlet。

做为美女,难免骚首弄姿,所以她们的出场可能有不同的姿态,暂安排如下 :

  1. 害羞的小可爱——Applet刷卡器
  2. 无限风情的小甜甜——Applet聊天室
  3. 通情达理的接线生——Applet软电话
  4. 后台老板——无所不能的Servlet
  5. 惊现掌门人——Portlet闪亮登场
  6. 小家碧玉——智能设备MIDlet

各位香味相投的朋友,是不是心痒痒,想尽快一睹美女的芳容了?好吧,让小可爱先给大家亮一个pose。

一、害羞的小可爱——Applet刷卡器

用IC卡在刷卡器一放,"嘟"的一响,就刷了卡了。那么刷卡的程序是怎么设计的,下面我们用一个在WEB上的刷卡器作一介绍,Applet程序:

 

package dcrf; 



//import java.awt.*;

import java.applet.*;

import java.net.URL;

import java.net.MalformedURLException;



/**

* 读卡器

*
@author Chen

*
@since 2007-04-29

*/



public class ReadCard extends Applet implements Runnable{

private boolean isStandalone = false;

private String urlroot = null;

private String urlfor = null;

private Thread readCard;

private String forward = null;



public String getParameter(String key, String def) {

return isStandalone ? System.getProperty(key, def) :

(getParameter(key)
!= null ? getParameter(key) : def);

}



public void init() {

this.urlroot = getDocumentBase().toString().substring(0,getDocumentBase().toString().lastIndexOf("/")+1);

this.urlfor = getDocumentBase().toString().substring(getDocumentBase().toString().lastIndexOf("/"));

this.forward = getParameter("forward");

}



public void start() {

readCard
= new Thread(this);

readCard.start();

}



public void stop() {

log(
"");

readCard
= null;

}



public void run() {

Thread me
= Thread.currentThread();

while (readCard == me) {

try {

ReadCardBean rc
= new ReadCardBean();

CardActionForm card
= new CardActionForm();

card
= rc.getFromCard();

if(card.getDevice() <= 0){

log(
"读卡器初始化失败!");

}
else if(card.getStatus() == 1){

log(
"请使用正确IC卡!");

}
else if(card.getStatus() == 2){

log(
"装入密码失败!");

}
else if(card.getStatus() == 3){

log(
"校验密码失败!");

}
else if(card.getStatus() == 4){

log(
"读卡失败!");

}
else if(card.getStatus() == 5){

log(
"读卡器退出失败!");

}
else if(card.getStatus() == 6){

log(
"蜂鸣失败!");

}
else{

log(
"");

card.setRand(java.lang.Math.random());

sendToClient(card);

}

Thread.currentThread().sleep(
700);

}

catch (InterruptedException e) {

log(
"Run Error:"+e.toString());

}

catch (Exception et) {

log(
"RunOther Error:"+et.toString());

}

}



}



public void sendToClient(CardActionForm card){

try {

if(forward != null && "accept".equals(forward))

urlfor
= "dealAcceptAction.do?method=acceptCard";

else if(forward != null && "flower".equals(forward))

urlfor
= "dealAction.do?method=acceptCard";

else if(forward != null && "test".equals(forward))

urlfor
= "readCardAction.do?method=startRead";



String prBuffer
= "";

if(card.getPrBuffer() != null)

prBuffer
= new String(card.getPrBuffer());



URL newurl
= new URL(urlroot+urlfor+"&prBuffer="+prBuffer+"&j"+card.getRand()+"=");

getAppletContext().showDocument(newurl,
"_self");

}
catch(MalformedURLException g){

log(
"Send Error:"+g.toString());

}

}



public void log(String str){

getAppletContext().showStatus(str);

}



}

 

 

这个Applet运用了一个线程,等待刷卡操作,一旦刷卡成功,发出蜂鸣声并转到其它应用界面,否则在浏览器的状态栏中打出错误信息。Applet还调用了一个读卡程序和一个数据结构。

 

/** 

* 读取刷卡器

*
@author Chen

*
@since 2007-04-28

*/

package dcrf;



class ReadCardBean

{

public void ReadCardBean(){



}



public CardActionForm getFromCard()

{

short status;

int lDevice = 0;

int[] pSnr = new int[1];

char[] pSBuffer = new char[16];

char[] pRBuffer = new char[16];

JavaRD800 rd
= new JavaRD800();

CardActionForm form
= new CardActionForm();

form.setStatus((
short)0);

form.setDevice(
1);

//初始化读卡器

lDevice
= rd.dc_init(100,115200);



if(lDevice <= 0)

{

form.setDevice(lDevice);

return form;

}

//检查卡类型

status
= rd.dc_card(lDevice,(short)0,pSnr);

if(status != 0)

{

form.setStatus((
short)1);

rd.dc_exit(lDevice);

return form;

}

form.setPsnr(pSnr);

//发出蜂鸣声

status
= rd.dc_beep(lDevice,(short)10);

if(status != 0)

{

form.setStatus((
short)6);

rd.dc_exit(lDevice);

return form;

}

//装入密码

pSBuffer[
0] = 0xCC;

...

pSBuffer[
6] = 0x00;



status
= rd.dc_load_key(lDevice,(short)0,(short)1,pSBuffer);

if(status != 0)

{

form.setStatus((
short)2);

rd.dc_exit(lDevice);

return form;

}

form.setPsBuffer(pSBuffer);

//验证密码

status
= rd.dc_authentication(lDevice,(short)0,(short)1);

if(status != 0)

{

form.setStatus((
short)3);

rd.dc_exit(lDevice);

return form;

}

//读出编码

status
= rd.dc_read(lDevice,(short)4,pRBuffer);

if(status != 0)

{

form.setStatus((
short)4);

rd.dc_exit(lDevice);

return form;

}

form.setPrBuffer(pRBuffer);

//退出

status
= rd.dc_exit(lDevice);

if(status != 0)

{

form.setStatus((
short)5);

rd.dc_exit(lDevice);

return form;

}

return form;

}

}

 

 

 

/** 

* 读卡数据结构

*
@author Chen

*
@since 2007-04-19

*/

package dcrf;



public class CardActionForm implements java.io.Serializable{



private short status;

private int device;

private int[] psnr;

private char[] psBuffer;

private char[] prBuffer;

private String owner_code;

private double rand;



public short getStatus() { return status; }

public void setStatus(short status) { this.status = status; }



public int getDevice() { return device; }

public void setDevice(int device) { this.device = device; }



public int[] getPsnr() { return psnr; }

public void setPsnr(int[] psnr) { this.psnr = psnr; }



public char[] getPsBuffer() { return psBuffer; }

public void setPsBuffer(char[] psBuffer) { this.psBuffer = psBuffer; }



public char[] getPrBuffer() { return prBuffer; }

public void setPrBuffer(char[] prBuffer) { this.prBuffer = prBuffer; }



public String getOwner_code() { return owner_code; }

public void setOwner_code(String owner_code) { this.owner_code = owner_code; }



public double getRand() { return rand; }

public void setRand(double rand) { this.rand = rand; }





}

 

 

读卡程序还调用了IC卡的Api:

 

/* 

* @(#)JavaRD800.java 1.0 03/11/27

*

*/

package dcrf;



public class JavaRD800

{

public JavaRD800()

{

}

static

{

System.loadLibrary(
"javaRD800");

}

public native int dc_init(int lPort,int lBaud);

public native short dc_exit(int lDevice);

public native short dc_card(int lDevice,short iMode,int[] pSnr);

public native short dc_authentication(int lDevice,short iMode,short iSecNr);

public native short dc_halt(int lDevice);

public native short dc_read(int lDevice,short iAdr,char[] pData);

public native short dc_write(int lDevice,short iAdr,char[] pData);

public native short dc_increment(int lDevice,short iAdr,int lValue);

public native short dc_decrement(int lDevice,short iAdr,int lValue);

public native short dc_initval(int lDevice,short iAdr,int lValue);

public native short dc_readval(int lDevice,short iAdr,int[] pValue);

public native short dc_transfer(int lDevice,short iAdr);

public native short dc_restore(int lDevice,short iAdr);

public native short dc_load_key(int lDevice,short iMode,short iSecNr,char[] pKey);

public native short dc_beep(int lDevice,short iMsec);

public native short dc_high_disp(int lDevice,short iOffset,short iDispLen,char[] pDispStr);

public native short dc_request(int lDevice,short iMode,int[] pTagType);

public native short dc_anticoll(int lDevice,short iBcnt,int[] pSnr);

public native short dc_select(int lDevice,int lSnr,short[] pSize);

public native short dc_gettime(int lDevice,char[] pTimeStr);

public native short dc_gettimehex(int lDevice,char[] pTimeStr);

public native short dc_settime(int lDevice,char[] pTimeStr);

public native short dc_settimehex(int lDevice,char[] pTimeStr);

public native short dc_setbright(int lDevice,short iBright);

public native short dc_ctl_mode(int lDevice,short iMode);

public native short dc_disp_mode(int lDevice,short iMode);

public native short dc_cpureset(int lDevice,short[] pLen,char[] pData);

public native short dc_cpuapdu(int lDevice,short iLen,char[] pSData,short[] pLen,char[] pRData);

public native short dc_cpuapdusource(int lDevice,short iLen,char[] pSData,short[] pLen,char[] pRData);

public native short dc_cpudown(int lDevice);

public native short dc_swr_eeprom(int lDevice,int lOffset,int lLen,char[] pBuffer);

public native short dc_srd_eeprom(int lDevice,int lOffset,int lLen,char[] pBuffer);

public native short dc_disp_str(int lDevice,char[] pDispStr);

}

 

 

把上面程序编译打包为:card.jar,然后在页面上调用:

 

<script language="JavaScript" type="text/JavaScript"> 

<!--

function showapplet(){

objecttext
="<OBJECT classid='clsid:8AD9C840-044E-11D1-B3E9-00805F499D93' width='0' height='0' codebase='flower/java_card_driver.exe'>";

objecttext
+="<PARAM name='java_code' value='dcrf.ReadCard.class'>";

objecttext
+="<PARAM name='java_codebase' value='.'>";

objecttext
+="<PARAM name='java_archive' value='flower/card.jar'>";

objecttext
+="<PARAM name='type' value='application/x-java-applet;version=1.2'>";

objecttext
+="<PARAM name='forward' value='accept'>";

objecttext
+="<COMMENT>";

objecttext
+="<EMBED type='application/x-java-applet;version=1.2' width='0' height='0' pluginspage='flower/java_card_driver.exe' java_code='dcrf.ReadCard.class' java_codebase='.' java_archive='flower/card.jar' forward='accept'/>";

objecttext
+="<NOEMBED>";

objecttext
+=" Plugin tag OBJECT or EMBED not supported by browser.";

objecttext
+="</NOEMBED>";

objecttext
+="</COMMENT>";

objecttext
+="</OBJECT>";

myapplet.innerHTML
= objecttext;

}

showapplet();

-->

</script>

 

 

从这个调用上我们可以看到,这个Applet没有显示在页面上,因为它的长和宽都设为:"0"了,width='0' height='0'。

这个小可爱可不是一般的"犹抱琵琶半遮面"的害羞,简直是只闻其声,不见其影。看来今天美女芳容还是难得一见,哈哈...

Tag标签: Java,美女
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载