失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 系统登录界面的验证码

系统登录界面的验证码

时间:2022-10-02 20:53:00

相关推荐

系统登录界面的验证码

一、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);

}

}

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

如果觉得《系统登录界面的验证码》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。