起航学习网

- 让每个人都能学到最前沿新知识、新技能!
起航学习网
当前位置: 起航学习网 > 短期培训 > 编程语言 > 实现Java验证码验证功能

实现Java验证码验证功能

时间:2022-06-08 14:16:56来源:IT培训网 作者:Java学习网 已有: 名学员访问该课程

  快捷搜索:java验证码验证

前言: IT培训网小编来告诉大家验证码的校验功能如何实现,在平时总会有一些闲杂人等,会找一些网站进行暴力注册。而

IT培训网小编来告诉大家验证码的校验功能如何实现,在平时总会有一些闲杂人等,会找一些网站进行暴力注册。而验证码就是防止恶意注册的一种方式。

首先在前台导入验证码图片

jsp方式

<label for="img">验证码:</label>
<input type="text" name="verifycode" id="verifycode"/>
<img id="img" src="${pageContext.request.contextPath}/checkCode" title="看不清点击刷新"/>
然后用原生js加一个点击时刷新的效果
 <script type="text/javascript">
window.οnlοad=function () {
         document.getElementById("img").οnclick=function () {
              this.src="${pageContext.request.contextPath}/checkCode?time="+new Date().getTime();
   }
}
  </script>

后台Servlet

//获取用户传递的验证码参数和Session中的验证码参数

//用户传递参数

String checkcode=request.getParameter("verifycode");
 HttpSession session=request.getSession();

//Session中的验证码 该参数是通过工具类在Session中赋的参数

String checkcode_server= (String) session.getAttribute("CHECKCODE_SERVER");

//删除session中的验证码,确保验证码的一次性

//参数为工具类中session存储的name值

session.removeAttribute(“CHECKCODE_SERVER”);

//判断验证码

if (checkcode_server==null&&!checkcode_server.equalsIgnoreCase(checkcode)){

//验证码不正确

//提示信息

 request.setAttribute("login_msg","验证码错误!");
//跳转登陆页面
request.getRequestDispatcher("/login.jsp").forward(request,response);
return;
  }

Servlet方式验证

//验证码校验
    String check=request.getParameter("check");
    //从session中获取验证码
    HttpSession session=request.getSession();
    String checkcode_server= (String) session.getAttribute("CHECKCODE_SERVER");
    //保证验证码唯一 参数为工具类中session存储的name值
    session.removeAttribute("CHECKCODE_SERVER");
    //比较
    if (checkcode_server==null||!checkcode_server.equalsIgnoreCase(check)){
        //验证码错误
        ResultInfo info=new ResultInfo();
        //注册失败
        info.setFlag(false);
        info.setErrorMsg("验证码错误!");
        //将info对象序列化为json
        ObjectMapper mapper=new ObjectMapper();
        String json=mapper.writeValueAsString(info);
        response.setContentType("application/json;charset=utf-8");
        response.getWriter().write(json);
        return ;
    }

//验证码工具类

package cn.easyArch.web.Servlet;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
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.Random;
/**
验证码
*/
@WebServlet("/checkCode")
public class CheckCodeServlet extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
//服务器通知浏览器不要缓存
response.setHeader(“pragma”,“no-cache”);
response.setHeader(“cache-control”,“no-cache”);
response.setHeader(“expires”,“0”);
//在内存中创建一个长80,宽30的图片,默认黑色背景
//参数一:长
//参数二:宽
//参数三:颜色
int width = 80;
int height = 30;
BufferedImage image = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);
//获取画笔
Graphics g = image.getGraphics();
//设置画笔颜色为灰色
g.setColor(Color.GRAY);
//填充图片
g.fillRect(0,0, width,height);
//产生4个随机验证码,12Ey
String checkCode = getCheckCode();
//将验证码放入HttpSession中
request.getSession().setAttribute(“CHECKCODE_SERVER”,checkCode);
//设置画笔颜色为黄色
g.setColor(Color.YELLOW);
//设置字体的小大
g.setFont(new Font(“黑体”, Font.BOLD,24));
//向图片上写入验证码
g.drawString(checkCode,15,25);
//将内存中的图片输出到浏览器
//参数一:图片对象
//参数二:图片的格式,如PNG,JPG,GIF
//参数三:图片输出到哪里去
ImageIO.write(image,“PNG”,response.getOutputStream());
}
/**
* 产生4位随机字符串
*/
private String getCheckCode() {
String base = “0123456789ABCDEFGabcdefg”;
int size = base.length();
Random r = new Random();
StringBuffer sb = new StringBuffer();
for(int i=1;i<=4;i++){
//产生0到size-1的随机值
int index = r.nextInt(size);
//在base字符串中获取下标为index的字符
char c = base.charAt(index);
//将c放入到StringBuffer中去
sb.append©;
}
return sb.toString();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request,response);
}
}

以上就是关于“实现Java验证码验证功能”的介绍,大家如果想了解更多相关知识,不妨来关注一下IT培训网的Java在线学习,里面的课程从入门到精通,细致全面,通俗易懂,适合小白学习,希望对大家能够有所帮助。

文章出自:http://qh.itpxw.cn/peixun/software/2022121614.html

文章标题:实现Java验证码验证功能



免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉

你也许会喜欢如下的文章?
(责任编辑:深圳学历教育网)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
培训学校
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员 用户级别:10 机构名称:IT培训网 联 系 人:罗老师 联系电话:13783581536 联系手机:13783581536 在线客服:起航学习网客服 在 线 QQ:起航学习网客服 电子邮件: 网站域名:http://www.itpxw.cn 注册时间:2016-07-18 11:07 最后登录:2024-02-20 13:02
推荐内容