程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java生成二維碼,java生成

java生成二維碼,java生成

編輯:JAVA綜合教程

java生成二維碼,java生成


@RequestMapping(value="/123.html")
    public void yaz(HttpServletResponse response,HttpServletRequest request) throws Exception{
        
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("text/html;charset=utf-8");
        int width=80;int height=40;
        //畫板
        BufferedImage b =new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
        //工具
        Graphics g= b.getGraphics();
        
        g.setColor(new Color(40, 200, 255));
        g.fillRect(0, 0, width, height);
        
        char[] ch="QWERTYUIOPASDFGHJKLZXCVBNM1234567890".toCharArray();
        Random random = new Random();
        int len = ch.length,index;
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < 4; i++) {
            index = random.nextInt(len);
            g.setColor(new Color(random.nextInt(88), random.nextInt(188), random.nextInt(255)));
            g.setFont(new Font("微軟雅黑", Font.BOLD, 18));
            g.drawString(ch[index]+"", i*15+3, 18);
            sb.append(ch[index]);
        
        }
        //干擾線
        for(int i=1;i<10000;i++){
            g.setColor(new Color(random.nextInt(88), random.nextInt(188), random.nextInt(255)));
            g.drawLine(random.nextInt(i*3+2), random.nextInt(i*5+1), random.nextInt(i*3+1),random.nextInt(i*9));
        }
        
        //結束
        g.dispose();
        b.flush();
        //保存
        request.getSession().setAttribute("yzm", sb.toString());
        try {
            //輸出圖片到頁面
            ImageIO.write(b, "png", response.getOutputStream());
        } catch (IOException e) {
            
        }
        
        
    }

前台頁面怎麼用?

<body>

<!-- 圖片的路徑直接是驗證碼的請求路徑即可 -->
<img alt="" src="<%=request.getContextPath()%>/123.html" id="reload" onclick="reload2()">

<script type="text/javascript">
function reload2(){
    var time = new Date().getTime();
    document.getElementById("reload").src="<%=request.getContextPath()%>/123.html?d="+time;
}
//為什麼請求多了一個參數呢?  是為了告訴浏覽器這是一個不同的請求,否則驗證碼不刷新


</script>



</body>

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved