|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你对java乐观有点盲目。java的关键就是在服务器上表现优异,而且它提供了整个开发所需要的工具。应该是说,看哪天。net网页编程有没有机会赶上java。
Java作为最开放的言语,已愈来愈遭到收集程序员的喜爱。但这一喜爱族有着一样的履历——已经都为收集上通讯的Java数据格局而烦脑。
笔者也不破例,已经为此而查阅了良多文档,经由重复测试才得以办理,现在笔者已在所处置的良多电子政务项目中顺遂的使用。明天笔者写此文,先容用Java剖析收集数据的三种特别办法,但愿对正在追求这方面成绩谜底的读者有所匡助。
UTF8转换成GB2312当我们在基于HTTP协定的JSP或Servlet的使用中猎取数据或发送哀求时,JVM会把保送的数据编码成UTF8格局。假如我们间接从HTTP流中提取中文数据,提取的了局为“????”(大概更多问号),为转换成我们可以了解的中笔墨符,我们必要把UTF8转换成GB2312,借助ISO-8859-1尺度编码可以容易的完成,上面的代码完成了这一功效:
byte[]b;
Stringutf8_value;
utf8_value=request.getParameter("NAME");//从HTTP流中取"NAME"的UTF8数据
b=utf8_value.getBytes("8859_1");//两头用ISO-8859-1过渡
Stringname=newString(b,"GB2312");//转换成GB2312字符
在晓得流长度的情形下将输出流转换成字节数组Java中的输出流笼统类InputStream有intread(byte[]b,intoff,intlen)办法,参数中byte[]b是用来寄存从InputStream中读取的数据,intoff指定命组b的偏移地点,也就是数组b的肇端下标,intlen指定必要读取的长度,办法前往实践读取的字节数。刚学Java的伴侣大概要说:先界说一个与流长度等长的字节数组,挪用read办法,指定肇端下标为0,指定读取长度与数组长度等长,不是一会儿能够读出来了吗?说的没错,笔者已经也试着如许读取数据,但厥后发明在读取收集数据时很不平安,我们想一想在收集上猎取数据大概并没那末流利,数据流的传送大概会断断续续,以是其实不能包管一次就可以读取全体数据,出格是在读取年夜容量数据时更是云云,以是我们必需在读取数据时检测实践读到的长度,假如没有读完已知长度的数据就应当再次读取,以此轮回检测,直到实践读取的长度累加与已知的长度相称,上面的代码完成了这一功效:
ServletInputStreaminStream=request.getInputStream();//取HTTP哀求流
intsize=request.getContentLength();//取HTTP哀求流长度
byte[]buffer=newbyte[size];//用于缓存每次读取的数据
byte[]in_b=newbyte[size];//用于寄存了局的数组
intcount=0;
intrbyte=0;
while(count<size){//轮回读取
rbyte=inStream.read(buffer);//每次实践读取长度存于rbyte中
for(inti=0;i<rbyte;i++){
in_b[count+i]=buffer[i];
}
count+=rbyte;
}
在不晓得流长度的情形下将输出流转换成字节数组后面先容了已知流长度的情形下的转换办法,那末当我们不晓得流有多长时,也就是说不克不及断定转换后的字节数组有多年夜时,该怎样处置呢?笔者检察了JDK文档以后发明ByteArrayOutputStream有一个byte[]toByteArray()办法,该办法会主动创立一个字节数组,然后前往。因而就奇妙的用ByteArrayOutputStream来作两头过渡完成转换,别的处置跟下面所先容已知长度的情形差未几。假定必要被转换的流已放在inStream里了,我们能够用以下的代码完成这一功效:
ByteArrayOutputStreamswapStream=newByteArrayOutputStream();
byte[]buff=newbyte[100];//buff用于寄存轮回读取的一时数据
intrc=0;
while((rc=inStream.read(buff,0,100))>0){
swapStream.write(buff,0,rc);
}
byte[]in_b=swapStream.toByteArray();//in_b为转换以后的了局
下面先容了三种对照有用的Java数据转换,有乐趣的伴侣可经由过程nbDeveloper@hotmail.com与笔者获得接洽,进一步交换别的有关XML使用、程序计划形式、J2EE开辟和UML等常识。
但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是net网页编程beans,谢谢。 |
|