`
sillycat
  • 浏览: 2552170 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

servlet实现校验码

    博客分类:
  • JAVA
阅读更多
同事找的代码,关键是如下的这个CheckCodeServlet.java文件:

   
package com.megaeyes.web.util;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
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 CheckCodeServlet extends HttpServlet{
    private static int WIDTH=56;
    private static int HEIGHT=18;
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException{
        HttpSession session = request.getSession();   
        response.setContentType("image/jpeg");
        ServletOutputStream sos = response.getOutputStream();
       
        response.setHeader("Pragma", "No-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);
        response.setHeader("P3P", "CP=CAO PSA OUR");
       
        BufferedImage image = new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
        Graphics g=image.getGraphics();
       
        char[] rands = generateCheckCode();
        drawBackground(g);
        drawRands(g,rands);
        g.dispose();
       
        ByteArrayOutputStream bos= new ByteArrayOutputStream();
        ImageIO.write(image,"JPEG",bos);
        byte[] buf = bos.toByteArray();
        response.setContentLength(buf.length);
        sos.write(buf);
        bos.close();
        sos.close();
        session.setAttribute("check_code", new String(rands));
    }
   
    private void drawBackground(Graphics g){
        g.setColor(new Color(0xDCDCDC));
        g.fillRect(0, 0, WIDTH, HEIGHT);
        for(int i=0;i<120;i++){
            int x = (int)(Math.random()*WIDTH);
            int y = (int)(Math.random()*HEIGHT);
            int red = (int)(Math.random()*255);
            int green = (int)(Math.random()*255);
            int blue = (int)(Math.random()*255);
            g.setColor(new Color(red,green,blue));
            g.drawOval(x, y, 1, 0);
        }
    }

    private void drawRands(Graphics g, char[] rands) {
        g.setColor(Color.BLACK);
        g.setFont(new Font(null,Font.ITALIC|Font.BOLD,17));
        g.drawString(""+rands[0], 1, 15);
        g.drawString(""+rands[1], 16, 15);
        g.drawString(""+rands[2], 31, 18);
        g.drawString(""+rands[3], 45, 16);
    }

    private char[] generateCheckCode(){
        String chars = "0123456789";
        char[] rands = new char[4];
        for(int i=0;i<4;i++){
            int rand = (int)(Math.random()*10);
            rands[i]=chars.charAt(rand);
        }
        return rands;
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doGet(request, response);
    }
}


在web.xml上要配置一下:
<servlet>
    <servlet-name>CheckCodeServlet</servlet-name>
    <servlet-class>com.megaeyes.web.util.CheckCodeServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>CheckCodeServlet</servlet-name>
    <url-pattern>/check</url-pattern>
</servlet-mapping>

页面上调用这个servlet:
<li id="yzm">验证码:<input name="" type="text" class="inputstyle2" />
<img id="validcode" src="check" onClick="refresh(this)" title="<fmt:message key='login.userCodeTip'/>" /></li>

src="check"就会去调用那个servlet了。另外点击refresh(this);的时候:
function refresh(obj){   
   obj.src="check";    
}

再调用一次servlet,重新生成一个图片

登录的时候,校验一下这个CODE
呵呵。从session中取:
if (!checkCode.equals((String) session.getAttribute("check_code"))
分享到:
评论

相关推荐

    用servlet实现验证码功能

    二、Servlet实现验证码 1. **生成随机字符串** 使用`java.util.Random`类和`java.security.SecureRandom`类可以生成随机字符串。例如,我们可以选择大小写字母、数字组成一个字符集,然后随机选取一定数量的字符...

    servlet实现简单登录验证

    在本教程中,我们将探讨如何使用Servlet实现一个简单的登录验证系统。 首先,理解Servlet的生命周期是关键。Servlet在服务器启动时并不自动加载,而是当首次接收到请求时被创建。然后,它会经历初始化、服务和销毁...

    jsp+Servlet实现简单的登陆

    在提供的压缩包文件"Customer-Support-v3"中,可能包含了实现这个简单登录功能的源代码,包括Servlet和JSP文件。解压并查看这些文件可以提供更具体的实现细节,如数据库连接、错误处理、安全性考虑等。 总的来说,...

    Servlet实现增删改查功能

    在本项目中,"Servlet实现增删改查功能"意味着我们将探讨如何使用Servlet来处理网页上的数据操作,包括添加(Add)、删除(Delete)、修改(Update)和查询(Query)数据。这里我们将主要涉及以下几个知识点: 1. *...

    Servlet实现登录验证

    在“Servlet实现登录验证”这个主题中,我们将深入探讨如何利用Servlet进行用户身份验证,确保只有合法用户能够访问受保护的资源。 首先,我们需要了解Servlet的基本生命周期。Servlet在首次接收到请求时被实例化,...

    servlet中实现请求转发,用户登录

    本文将详细讲解如何在Servlet中实现请求转发以及用户登录验证。 首先,我们来理解请求转发(Request Forward)。在Servlet中,请求转发是一种在服务器内部将一个请求从一个资源传递到另一个资源的技术。这种方式是...

    mybatis+servlet实现web登陆界面

    【标题】"mybatis+servlet实现web登陆界面"涉及到的核心技术是MyBatis和Servlet,它们在Web开发中扮演着重要角色。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,而Servlet则是Java Web...

    servlet+jsp+验证注册功能

    在IT行业中,Servlet和JSP(JavaServer Pages)是Java Web开发中的重要组成部分,常用于构建动态网页应用。本项目“servlet+jsp+验证注册功能”旨在教授如何使用这两种技术来实现用户注册功能,这对于刚入行的IT从业...

    jsp+servlet 简单实现注册,登录,购物车功能

    本项目“jsp+servlet 简单实现注册,登录,购物车功能”提供了一个基础的Web应用实例,非常适合初学者了解和学习这些技术。以下是关于这个项目及其涉及知识点的详细说明: **1. JSP (JavaServer Pages)** JSP是一...

    JSP+JavaBean+Servlet技术实现某网站用户注册和登录功能( 源码打包)

    在这个用户注册和登录的示例中,JSP用于前端展示和用户交互,JavaBean用于数据封装和业务逻辑,而Servlet则作为后端处理中心,负责处理HTTP请求和响应,共同协作实现功能的完整流程。通过深入理解和掌握这些技术,...

    Servlet+MySQL实现登录功能.zip

    在本项目"Servlet+MySQL实现登录功能.zip"中,开发者使用了Servlet技术与MySQL数据库来构建一个基础的用户登录系统。这是一个经典的Web开发场景,它涵盖了服务器端编程和数据库交互的关键概念。以下是对这个项目中...

    jsp+servlet实现最基本的注册登陆功能

    参考链接提供的博客文章(http://www.cnblogs.com/biehongli/p/6424406.html),可以详细学习如何结合JSP和Servlet实现注册登录功能的具体步骤和代码示例。在实际项目中,通常还会涉及到MVC设计模式、会话管理、安全...

    ajax+java+servlet+mysql实现用户注册输入校验结课设计实例

    除了使用AJAX和Servlet实现服务器端的校验外,前端也可以使用JavaScript进行基本的客户端校验,例如检查邮箱格式、密码长度等,这可以减少无效请求,提高系统效率。 具体实现步骤可能包括以下几点: 1. 创建HTML...

    基于jsp+servlet实现的教材征订与发放管理系统.zip

    【标题】:基于jsp+servlet实现的教材征订与发放管理系统 这个系统是Web应用程序开发的一个实例,主要利用JavaServer Pages (JSP) 和Servlet技术来构建一个完整的教材征订与发放管理流程。JSP是一种动态网页技术,...

    MyBatis+Servlet实现简单的登陆和注册案例

    在本项目中,"MyBatis+Servlet实现简单的登陆和注册案例"是一个基础的Web应用程序,它结合了MyBatis框架、Servlet技术以及前端页面来完成用户登录和注册功能。以下将详细介绍涉及的关键知识点。 首先,MyBatis是一...

    servlet+jsp实现的有验证码和MD5加密的登陆

    3. Servlet接收到数据后,首先校验验证码,如果验证码正确,则继续。 4. 接着,Servlet使用MD5算法对用户输入的密码进行加密,然后与数据库中存储的MD5密码进行比对。 5. 如果密码匹配,用户成功登录;如果不匹配,...

    java servlet jsp技术实现博客功能

    1. 安全性:确保用户输入的数据经过过滤和校验,防止SQL注入和跨站脚本攻击。 2. 性能优化:合理使用缓存技术,如Redis,减少对数据库的频繁访问;启用HTTP缓存,减轻服务器压力。 3. 响应式设计:使博客系统适应...

    jsp+javabean+servlet实现用户登录与注册.pdf

    3. Servlet接收到请求,对数据进行校验。 4. 如果是登录,Servlet会查询数据库,比对用户名和密码。 5. 如果是注册,Servlet会检查用户名是否已存在,如果不存在则将新用户信息存入数据库。 6. 根据处理结果,...

    Java Servlet API2.1中文文档

    通过实现Filter接口并配置在web.xml中,可以实现数据校验、日志记录、字符编码转换等功能。 9. **监听器Listener**:Listener是Servlet API中的事件监听接口,如ServletContextListener、ServletRequestListener等...

Global site tag (gtag.js) - Google Analytics