天天看点

java--servlet重点讲解

生成随机验证码

public classidentfify extends HttpServelet{

public statcifinal char[] chars={'2','3','9','a','z'};//随机字符串

public staticRandom random=new Random();//随机数

public static StringgetRandomString()//获取6位随机数字符串

{

 StringBuffer buffer=newStringBuffer();//random.nextInt(5)返回从0-4

 for(int i=0;i<6;i++)

{

 buffer.append(chars[random.nextInt(chars.length)]);

}

returnbuffer.toString();

}

public staticColor getRandomColor()//获取随机眼色

{

 return newColor(random.nextInt(255),random.next(255),random.netInt(255));

}

public staticColor getReverseColor(Color c)//返回某颜色的反色

{

  return newColor(255-c.getRed(),255-c.getGreen(),255-c.getBlue());//红 绿 蓝

}

public void doGet(HttpServletRequestrequest,HttpServletResponse response) throws ServletException,IOException

{

response.setContentType("image/jpeg");//设置输出类型

StringrandomString=getRandomString();//调用方法获取随机字符串

request.getSession(true).setAttribute("randomString",randomString);

intwidth=100;int height=30;

Colorcolor=getRandomColor();

Colorreverse=getReverseColor();//反色,用于前景色

BufferedImage bi=new BufferedImage(width,height,BufferedImage.TYPE_INT_REG);//创建一个不带透明色的图片

Graphics2D g=bi.createGraphics();//创建一个 Graphics2D,可以将它绘制到此 BufferedImage 中

g.setFont(newFont(Font.SANS_SERIF,Font.Bold,16));//设置字体

g.setColor(color);

g.filRect(0,0,width,height);//起始坐标,大小,绘制了一个背景色

g.setColor(reverse);

g.drawString(randomString,18,20);//使用当前颜色,当前字体在18,20处的位置编写一个字符串

for(inti=0,n=random.nextInt(100);i<n;i++)

{

 g.drawRect(random.nextInt(width),random.nextInt(height),1,1);//在随机位置上画一个1,1的正方形

}

//转换成图片并输出

ServletOutPutStreamout=response.getOutPutStream();

JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);

encoder.encode(bi);

out.flush();

}

}

html代码:

<html>

<head>

<scripttype="text/javascript">

functionreload(){

document.getElementById('imga').src='yanzheng?date='+newDate().toString();

}

</script></head>

<body>

<imgsrc="yanzheng" id="imga"/> <button id="a"οnclick="reload()" >换一张</button>

</body>

</html>

扩展:

getSubimage方法是进行图片裁剪。

举例:

public staticvoid main(String[] args) {

try {

//从特定文件载入

BufferedImage bi= ImageIO.read(new File("c:\\test.jpg"));

bi.getSubimage(0,0, 10, 10);//前两个值是坐标位置X、Y,后两个是长和宽

} catch(IOException e) {

e.printStackTrace();

}

}

ImageIO.write(BufferedImageimage,String format,OutputStream out);方法可以很好的解决问题;

参数image表示获得的BufferedImage;

参数format表示图片的格式,比如“gif”等;

参数out表示输出流,如果要转成Byte数组,则输出流为ByteArrayOutputStream即可;

举例:

BufferedImageimage = ImageIO.read(new File("1.gif"));

      ByteArrayOutputStream out = newByteArrayOutputStream();

      boolean flag = ImageIO.write(image,"gif", out);

      byte[] b = out.toByteArray();

将字符串转化为日期

dateformatformat = new SimpleDateFormat("yyyy-mm-dd");

date b=format.parse(request.getParameter("time"));

J2SE 提供的最后一个批注是 @SuppressWarnings。该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。

Javaweb文件结构

java--servlet重点讲解

注解preconstruct

java--servlet重点讲解

Httprensponse状态码

java--servlet重点讲解

Page属性

java--servlet重点讲解
java--servlet重点讲解

Include属性

java--servlet重点讲解

Plugin属性

java--servlet重点讲解