一、java后台生成随机验证码

package com.code;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@SuppressWarnings("serial")
public class Check extends HttpServlet {

public String suijima(){
  char [] str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
  Random rd=new Random();
  String suiji="";
  int temp=0;
  for(int i=0;i<4;i++){
  temp=rd.nextInt(36);
  suiji+=str[temp];
  }
  return suiji; 
}

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

String sjm=suijima();
  HttpSession session=request.getSession();
  session.setAttribute("check",sjm); //在登录验证的时候会首先检查验证码是否输入正确
    
  BufferedImage buffimg=new BufferedImage(60,20,BufferedImage.TYPE_INT_RGB);
  Graphics g=buffimg.createGraphics();
  Random rd=new Random();
  int cr,cg,cb;
  cr=rd.nextInt(255);
  cg=rd.nextInt(255);
  cb=rd.nextInt(255);
  Color mycolor=new Color(cr,cg,cb);
  //干扰线
  g.setColor(mycolor);
  for (int i = 0; i < 10; i++){
            int x1 = rd.nextInt(60);
            int x2 = rd.nextInt(60);
            int y1 = rd.nextInt(20);
            int y2 = rd.nextInt(20);
            g.drawLine(x1, y1, x2, y2);
        } 
   //显示随机码
        Font myfont=new Font("times new roman",Font.PLAIN,19);
        g.setFont(myfont);   
        g.setColor(Color.WHITE);
        g.drawString(sjm,5,15);
   //将图像输出到servlet输出流中。
        ServletOutputStream sos=response.getOutputStream();
        ImageIO.write(buffimg, "jpeg",sos);
        sos.close();
        g.dispose();
}
}

二、jsp页面,用jquery验证

<body>
   <form method="post">
    用户名:<input type="text" name="username" id="username"/> <br> 
密  码: <input type="password" name="pwd" id="pwd"/><br>
验证码:<input type="text" name="yzm" id="yzm"/>
<img id="code" src="http://localhost:8080/javacode/check.do" οnclick="javascript:change()" title="点击刷新验证码"><br>
<input type="button" οnclick="check()" value="登录"/>
<input type="reset" name="reset" value="重置" />
<div id="result"></div>
</form>
  </body>
  <script language="javascript">
function check()
{
var jqueryobj = $("#username");    
   var username = jqueryobj.val();
var jqueryobj1 = $("#pwd");    
   var pwd = jqueryobj1.val();
   var jqueryobj2 = $("#yzm");    
   var yzm = jqueryobj2.val();
   var object =username+","+pwd+","+yzm;
  
   $.get("checkcode.do?object="+object,null,callback);   
}
function callback(data){
  if(data==1){
  data = "验证码出错,请重新输入!";
  }else if(data==2){
  data = "验证码正确!";
  }
  var resultObj = $("#result");   
  resultObj.html("<font color=red>"+data+"</font>");   

function change(){
   var dt = new Date();
  var img=document.getElementById("code");
  img.src="http://localhost:8080/javacode/check.do?dt"+dt;  //意思是让图片重新加载一次 效果类似与直接刷新yanzhengma.jsp有了这个,就能让图片重新加载了
  }
</script>
</html>

三、后台验证

package com.code;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class Checkcode extends HttpServlet{
public void doPost(HttpServletRequest request,HttpServletResponse  response) throws IOException, ServletException{
String strYzm=request.getParameter("object"); //用户输入的验证码
String [] str = strYzm.split(",");
   String stryz=(String)request.getSession().getAttribute("check"); //servlet中生成的验证码
   int error;
   response.setContentType("text/html;charset=GBK");
   str[2]=str[2].toUpperCase();
        PrintWriter out=response.getWriter(); 
        if(!str[2].equals(stryz)){
        error=1;
        }else{
        error=2;
        }
        out.println(error);
   
}
public void doGet(HttpServletRequest request,HttpServletResponse  response) throws IOException, ServletException{
doPost(request,response);
}

}

这样就可以完成登录页面的验证!

转载于:https://www.cnblogs.com/javaTest/archive/2012/05/10/2589101.html

系统登录界面的验证码相关推荐

  1. linux 新用户 界面登录,如何在Linux系统登录界面加入个性化提示信息

    如何在Linux系统登录界面加入个性化提示信息 Linux字符界面看久了容易乏味,如果在登录时加点个性化显示看着也比较舒服,下面小编就给大家介绍下如何在Linux系统登录界面加入个性化提示信息,一起来 ...

  2. win7系统登录界面出现“其他用户” (登录界面显示多个用户)

    今天偶尔注销了下系统,突然发现系统登录界面多了一个莫名其妙的"其他用户",头像空白,点击后要求输入用户名和密码,还以为是安装office2013后的微软账户,但输入账户和密码又不对 ...

  3. DIY高手自制Vista系统登录界面

    DIY高手自制Vista系统登录界面 1.下载 ResHacker 2.用 ResHacker 打开 Vista盘符/Windows/System32/p_w_picpathres.dll 文件,点击 ...

  4. 计算机登录界面怎么切换用户名,win10系统登录界面切换用户的方法

    在使用win10系统的时候,许多用户为了方便使用会在电脑中创建多个用户,而在登录界面的时候,会显示某个用户,但是想要切换其他用户的话要怎么操作呢,下面小编就给大家讲解一下win10系统登录界面切换用户 ...

  5. ASP .NET登录界面用户验证码代码

    //ASP .NET用户登录界面经常用到验证码代码如下 private void Page_Load(object sender, System.EventArgs e)   {    // 在此处放 ...

  6. python练习—用户登录界面输入验证码测试

    用户登录界面输入验证码测试--Python import random s="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234 ...

  7. 麒麟系统登录界面开启root用户登录

    文章转自:https://blog.csdn.net/qq_33427869/article/details/123639654,全文转发,主要用于后续使用中可快速查阅. 编者目前使用的麒麟4.0.2 ...

  8. ASP.NET 实现登录界面(生成验证码)

    这周末也没干啥,真正开始ASP,做了个学籍管理系统的登录界面,登录界面主要包括用户名.密码.验证码,界面字体用了<font size="5" color="blue ...

  9. 03——驾校科目一考试系统——登录界面

    文章目录 需求分析 添加标签 添加输入框 添加按钮 运行项目--初始版本 问题:设计界面和生成大小不同的. 解决方案 运行,成功解决 添加功能--补充背景图 做好准备,添加标签 添加资源 运行项目-- ...

最新文章

  1. TIOBE 1 月编程语言:Python 摘得 2020 年度编程语言!
  2. python语言用途-python编程语言有什么用途
  3. Windows平台Android开发环境搭建几个注意点
  4. Google 首次引入数据中心液体冷却
  5. 字符串搜索。HOJ1530 Compound Words。
  6. 推动Windows的限制:句柄
  7. vue 指令 v-on 函数传参
  8. python的config模块_python中ConfigParse模块的用法
  9. switch开关 ~ 学习记录
  10. 前端向后台发送请求有几种方式?
  11. 安卓地图的实现附源码
  12. 3DMax导出FBX文件贴图丢失
  13. 如何在kylo中添加数据源
  14. [豆瓣8.1]《教养的迷思》父母的教养方式能否决定孩子的人格发展? 【美】朱迪斯•哈里斯...
  15. SQL语句 SQL Server中Text类型操作
  16. 小福利,用Excel VBA编程制作一个变色小游戏
  17. dpdk环境搭建+创建dpdk项目,并连接dpdk库
  18. LeetCode680删除一个字符后是否还是回文字符串
  19. 对于区块链的曲解和误会,多半停留在人们对于其呈现方式的狭隘的认识上
  20. 快速构建后台管理系统-GUNS学习系列之guns-lite-代码生成工具

热门文章

  1. JAVA基础知识(3)
  2. Performance Prism
  3. air display的实践
  4. Hdoj Minimize The Difference
  5. 正则表达式-趣现象一则
  6. Flask的多app应用,多线程如何体现
  7. vue-router 中导航守卫问题
  8. java设计模式(六)--观察者模式
  9. 【APUE】Chapter17 Advanced IPC sign extension 结构体内存对齐
  10. 美国国家航空航天局宣布发现地球2.0