JAVA网站制作之怎样用ServletJSP静态天生图象考证码
轮性能微软曾做过一个例子,就是同一个项目用java和.net来作,结果开发周期,.net是java的一半,性能java是.net的十分之一,代码量java是.net的三倍。呵呵,这说明了什么,.net的全方位比java好。但是有的人说.net不能跨平台,这个问题我和我同学曾讨论过,都认为微软的.net很可能早都可以跨平台了,但是微软为了保护他们的操作系统,所以才没有推出跨平台的.net,只是推出了跨语言的.net,js|servlet|静态|考证码如今有很多网站在用户填写表单时,同时请求填写考证码,考证码的一个目标就是提防一些歹意的网站下载软件,这些软件能经由过程遍历链接而将网站的一切网页下载。还能够避免用户不经由本网站的页面而利用网站的资本。以是如今有很多网站都利用了考证码手艺,考证码一般是一个在WEB服务器上天生的随机字符串,同时以某种体例保留起来,好比保留到与以后的Session中,然后在用户提交网页时与用户输出的考证对照是不是分歧,但是假如间接以明文的体例,仍是不克不及提防一些功效较强的主动填写表格的软件。以是一样平常将考证码以图片的情势显现出来,同时能够将在图片中显现的字符串举行一些处置,好比利用扭转字符,增加背景纹理等手艺以增年夜被软件辨认的难度。上面扼要先容一下假如完成这类考证码:起首完成一个servlet用来天生图片(固然也能够用jsp完成):
importjavax.servlet.*;
importjavax.servlet.http.*;
importjava.io.*;
importjava.util.*;
importcom.sun.image.codec.jpeg.*;
importjava.awt.*;
importcom.sun.image.codec.jpeg.*;
importjava.awt.image.BufferedImage;
importjava.awt.image.DataBuffer;
importjava.awt.geom.GeneralPath;
importjavax.swing.*;
importjava.math.*;
publicclassServlet1
extendsHttpServlet{
//ProcesstheHTTPGetrequest
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throws
ServletException,IOException{
response.setContentType(CONTENT_TYPE);
response.setContentType("image/jpeg");//必需设置ContentType为image/jpeg
intlength=4;//设置默许天生4个数字
Dated=newDate();
longlseed=d.getTime();
java.util.Randomr=newRandom(lseed);//设置随机种子
if(request.getParameter("length")!=null){
try{
length=Integer.parseInt(request.getParameter("length"));
}
catch(NumberFormatExceptione){
}
}
StringBufferstr=newStringBuffer();
for(inti=0;i<length;i++){
str.append(r.nextInt(9));//天生随机数字
}
//能够在此到场保留考证码的代码
//创立内存图象
BufferedImagebi=newBufferedImage(40,16,BufferedImage.TYPE_INT_RGB);
Graphics2Dg=bi.createGraphics();
g.clearRect(0,0,16,40);
g.setColor(Color.green.CYAN);
g.drawString(str.toString(),4,12);
try{
//利用JPEG编码,输入到response的输入流
JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(response.
getOutputStream());
JPEGEncodeParamparam=encoder.getDefaultJPEGEncodeParam(bi);
param.setQuality(1.0f,false);
encoder.setJPEGEncodeParam(param);
encoder.encode(bi);
}
catch(Exceptionex){
}
}
}
然后在需求显现考证码的到场以下代码就能够了
将/WebModule1/servlet1交换成你用来天生考证码的servlet的全路径。
进而能拉拢大多数程序员用windows产品。并且从ASP.NETAJAX可以跨平台这一点上,间接证明了我们的推断,至少证明了微软做过这方面的研究。所以如果哪一天突然听说了.net可以跨平台了,那么请不要吃惊,如果这一天真的到来,java就到了真正和.net决战的时刻。因为不到万不得以的时候微软是不会推出跨平台的.net的,如果跨平台的.net还不足以对抗java的话,那么微软还剩的手段就是开源了,呵呵。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 是一种为 Internet发展的计算机语言 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 是一种语言,用以产生「小应用程序(Applet(s)) 是一种使网页(Web Page)产生生动活泼画面的语言
页:
[1]
2