zoukankan      html  css  js  c++  java
  • java验证码问题

    AuthImageServlet.java

    package com.util.servlet;

    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.Random;

    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;

    public class AuthImageServlet extends HttpServlet {

     /**
      * Constructor of the object.
      */
      private static final String CONTENT_TYPE = "text/html; charset=gb2312";  
         //设置字母的大小,大小  
         private Font mFont = new Font("Times New Roman", Font.PLAIN, 17);  
         public void init() throws ServletException  
         {  
             super.init();  
         }  
         Color getRandColor(int fc,int bc)  
         {  
             Random random = new Random();  
             if(fc>255) fc=255;  
             if(bc>255) bc=255;  
             int r=fc+random.nextInt(bc-fc);  
             int g=fc+random.nextInt(bc-fc);  
             int b=fc+random.nextInt(bc-fc);  
             return new Color(r,g,b);  
         }  
      
         public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
         {  
             response.setHeader("Pragma","No-cache");  
             response.setHeader("Cache-Control","no-cache");  
             response.setDateHeader("Expires", 0);  
             //表明生成的响应是图片  
             response.setContentType("image/jpeg");  
               
             int width=100, height=18;  
             BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);  
               
             Graphics g = image.getGraphics();  
             Random random = new Random();  
             g.setColor(getRandColor(200,250));  
             g.fillRect(1, 1, width-1, height-1);  
             g.setColor(new Color(102,102,102));  
             g.drawRect(0, 0, width-1, height-1);  
             g.setFont(mFont);  
      
             g.setColor(getRandColor(160,200));  
      
             //画随机线  
             for (int i=0;i<155;i++)  
             {  
                 int x = random.nextInt(width - 1);  
                 int y = random.nextInt(height - 1);  
                 int xl = random.nextInt(6) + 1;  
                 int yl = random.nextInt(12) + 1;  
                 g.drawLine(x,y,x + xl,y + yl);  
             }  
      
             //从另一方向画随机线  
             for (int i = 0;i < 70;i++)  
             {  
                 int x = random.nextInt(width - 1);  
                 int y = random.nextInt(height - 1);  
                 int xl = random.nextInt(12) + 1;  
                 int yl = random.nextInt(6) + 1;  
                 g.drawLine(x,y,x - xl,y - yl);  
             }  
      
             //生成随机数,并将随机数字转换为字母  
             String codeList = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
             String sRand="";    
             for (int i=0;i<6;i++){
                int a=random.nextInt(codeList.length()-1);
                String rand=codeList.substring(a,a+1);
                sRand+=rand;

                   g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));    
                   g.drawString(rand,15*i+10,16);    
             }
                    
             System.out.println("-----------------------------------"+sRand);
             HttpSession session = request.getSession(true); 
             session.setAttribute("rand",sRand);  
             g.dispose(); 
               OutputStream os =response.getOutputStream();
            ImageIO.write(image, "JPEG", os);
         }  

    }

    CheckServlet.java

    package com.util.servlet;

    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.mail.Session;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;

    public class CheckServlet extends HttpServlet {

     /**
      * Constructor of the object.
      */
     public CheckServlet() {
      super();
     }

     /**
      * Destruction of the servlet. <br>
      */
     public void destroy() {
      super.destroy(); // Just puts "destroy" string in log
      // Put your code here
     }

     
     public void doGet(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {

      this.doPost(request, response);
     }

     
     public void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {

      request.setCharacterEncoding("utf-8");
      String yzm=request.getParameter("yzm");
      HttpSession session=request.getSession(true);
      String xt=session.getAttribute("rand").toString();
      if(yzm.equals(xt)){
       System.out.println("验证码相同");
      }else{
       System.out.println("验证码不同11111111111111111111");
      }
      System.out.println("yzm:"+yzm);
      System.out.println("XT:"+xt);
      //string account = context.Session["rand"].ToString();
      //String user = session.getAttribute("rand");
     }

     /**
      * Initialization of the servlet. <br>
      *
      * @throws ServletException if an error occurs
      */
     public void init() throws ServletException {
      // Put your code here
     }

    }

    index.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
       
        <title>My JSP 'index.jsp' starting page</title>
     <meta http-equiv="pragma" content="no-cache">
     <meta http-equiv="cache-control" content="no-cache">
     <meta http-equiv="expires" content="0">   
     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
     <meta http-equiv="description" content="This is my page">
     <!--
     <link rel="stylesheet" type="text/css" href="styles.css">
     -->
     <script type="text/javascript">
     function changeCode() {
      var imgNode = document.getElementById("vimg");
      imgNode.src="servlet/AuthImageServlet?"+Math.random();
     }
     </script>
      </head>
     
      <body>
     
       <form action="servlet/CheckServlet" method="post">
        <label>输入验证码</label><br>
        <input type="text" name="yzm"/><img alt="yzm" id="vimg" title="点击更换" onclick="changeCode()"
         src="servlet/AuthImageServlet"><br>
         <input type="submit" name="submit"/>
       </form>
        This is my JSP page. <br>
      </body>
    </html>

  • 相关阅读:
    前端学习笔记2017.6.12 DIV布局网页
    前端学习笔记2017.6.12 HTML的结构以及xhtml、html、xml的区别
    前端学习笔记2017.6.21-html和浏览器的关系以及开发工具
    前端学习笔记2017.6.21-html是个什么东西
    前端学习笔记2017.6.21-引入JS文件的方法
    学习一下阿里技术文档的写作方法
    PS中图层混合模式的计算方法
    3dsmax里面的喷射器spray和超级喷射器superspray是个什么东西
    案例14-实现注册功能和激活功能
    012-MD5Utils工具类模板
  • 原文地址:https://www.cnblogs.com/zjiacun/p/3379321.html
Copyright © 2011-2022 走看看