天天看點

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重點講解