日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

2020.3.31Java学习笔记

發布時間:2024/3/13 java 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2020.3.31Java学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

利用java生成帶有干擾線的網頁驗證碼圖片以及測試源根的初體驗

  • 在java–>controller–>新建CaptcheController類作為今天實驗的容器。
  • 繼承HttpServlet類,重寫其service方法。
  • 我把自己需要注意的代碼都做了注釋,方便自己日后查看。

  • package cn.edu.mju.project1.controller;import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Arrays; import java.util.Random;@WebServlet("captche") public class CaptcheController extends HttpServlet {private final int WIDTH = 100;//設置int型常量值,常量值不可更改,名稱一般全大寫private final int HEIGHT= 80;@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {BufferedImage img = new BufferedImage(100,80,BufferedImage.TYPE_INT_RGB);//申請內存空間,創建圖片對象Graphics g =img.getGraphics();//得到畫筆對象Random r=new Random();//設置一個隨機變量g.setColor(new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256)));//獲取隨機一顏色g.fillRect(0,0,WIDTH,HEIGHT);//創建字體,字體的大小應該根據圖片的高度來定g.setFont(new Font("黑體",Font.BOLD, 18));//字體為黑體,字體加粗,大小為18g.setColor(Color.RED);//設置其為紅色String code = ranString(4);//調用ranString方法,通過更改count數目可以控制其生成個數g.drawString(code,10,20);//1.輸出內容,2.在哪里輸出 code為調用ranString的變量for(int i=0;i<12;i++){g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));//畫線,干擾線的生成g.drawLine(r.nextInt(60), r.nextInt(30), r.nextInt(60), r.nextInt(30));}g.dispose();//將其合并,圖片生成ServletOutputStream out = resp.getOutputStream();//輸出為二進制數據流(用記事本打開為亂碼)ImageIO.write(img,"jpg",out);//將圖片以jpg格式輸出到管道try{out.flush();//將緩沖區的東西全部刷到out中去,若沒有這句話數據傳到一半,數據口關閉}finally {out.close();//關閉}}public String ranString(int count){//定義方法,返回字符串 public對比private 在類外也可以訪問StringBuilder builder =new StringBuilder();String str = "abcdefghijklmnpqrstuvwxy01234567890";//z,o不推薦用,容易和數字0,2混淆Random rnd = new Random();//生成隨機變量for(int i =0;i<count;i++){//可以隨機生成4個變量 count為傳入的參數int pos = rnd.nextInt(str.length());//得到str的位置String s = str.substring(pos,pos+1);//0-19,取一個builder.append(s);}return builder.toString();//返回}}

    實驗結果

    測試源根

  • 作用:檢驗需要上傳代碼的可用性,提交遠程倉庫時,不會被提交。
  • 在目錄底下新建test文件,并將其標記為測試源根,否則在其底下無法創建java類。
    .
  • import cn.edu.mju.project1.controller.CaptcheController; import org.junit.Test;public class TestCaptche {@Testpublic void testRandomString(){CaptcheController c = new CaptcheController();System.out.println(c.ranString(4));} }

    這個代碼可以測試CaptcheController中的ranString方法。

    public String ranString(int count){//定義方法,返回字符串 public對比private 在類外也可以訪問StringBuilder builder =new StringBuilder();String str = "abcdefghijklmnpqrstuvwxy01234567890";//z,o不推薦用,容易和數字0,2混淆Random rnd = new Random();//生成隨機變量for(int i =0;i<count;i++){//可以隨機生成4個變量 count為傳入的參數int pos = rnd.nextInt(str.length());//得到str的位置String s = str.substring(pos,pos+1);//0-19,取一個builder.append(s);}return builder.toString();//返回}

    點擊下面的運行的小綠標即可開始測試

    成功生成四個隨機范圍內的字符,測試成功。

    總結

    以上是生活随笔為你收集整理的2020.3.31Java学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。