有关验证码的收藏代码

public class FindPasswordController extends BaseController {
    private static final long serialVersionUID = 1L;
    
     // 验证码图片的宽度。        
    private int width = 60;        
    // 验证码图片的高度。        
    private int height = 20;        
    // 验证码字符个数        
    private int codeCount = 4;        
    private int x = 0;        
    // 字体高度        
    private int fontHeight;        
    private int codeY;        
    char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',        
            'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',        
            'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; 
@RequestMapping("/image.do")
    public void email(HttpServletRequest req, HttpServletResponse resp)        
        throws ServletException, java.io.IOException {
        initxuan();
        // 定义图像buffer        
        BufferedImage buffImg = new BufferedImage(width, height,        
                BufferedImage.TYPE_INT_RGB);        
        Graphics2D g = buffImg.createGraphics();        
        // 创建一个随机数生成器类        
        Random random = new Random();        
        // 将图像填充为白色        
        g.setColor(Color.WHITE);        
        g.fillRect(0, 0, width, height);        
        // 创建字体,字体的大小应该根据图片的高度来定。        
        Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);        
        // 设置字体。        
        g.setFont(font);        
        // 画边框。        
        g.setColor(Color.BLACK);        
        g.drawRect(0, 0, width - 1, height - 1);        
        // 随机产生160条干扰线,使图象中的认证码不易被其它程序探测到。        
        g.setColor(Color.BLACK);        
        for (int i = 0; i < 10; i++) {        
            int x = random.nextInt(width);        
            int y = random.nextInt(height);        
            int xl = random.nextInt(12);        
            int yl = random.nextInt(12);        
            g.drawLine(x, y, x + xl, y + yl);        
        }        
        // randomCode用于保存随机产生的验证码,以便用户登录后进行验证。        
        StringBuffer randomCode = new StringBuffer();        
        int red = 0, green = 0, blue = 0;        
        // 随机产生codeCount数字的验证码。        
        for (int i = 0; i < codeCount; i++) {        
            // 得到随机产生的验证码数字。        
            String strRand = String.valueOf(codeSequence[random.nextInt(36)]);        
            // 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。        
            red = random.nextInt(255);        
            green = random.nextInt(255);        
            blue = random.nextInt(255);        
            // 用随机产生的颜色将验证码绘制到图像中。        
            g.setColor(new Color(red, green, blue));        
            g.drawString(strRand, (i + 1) * x, codeY);        
            // 将产生的四个随机数组合在一起。        
            randomCode.append(strRand);        
        }        
        // 将四位数字的验证码保存到Session中。        
        HttpSession session = req.getSession();        
        session.setAttribute("validateCode", randomCode.toString());        
        // 禁止图像缓存。        
        resp.setHeader("Pragma", "no-cache");        
        resp.setHeader("Cache-Control", "no-cache");        
        resp.setDateHeader("Expires", 0);        
        resp.setContentType("image/jpeg");        
        // 将图像输出到Servlet输出流中。        
        ServletOutputStream sos = resp.getOutputStream();        
        ImageIO.write(buffImg, "jpeg", sos);        
        sos.close();        

        }

public void initxuan() throws ServletException {               
        // 宽度        
        String strWidth ="80";        
        // 高度        
        String strHeight ="30";        
        // 字符个数        
        String strCodeCount = "4";        
        // 将配置的信息转换成数值        
        try {        
            if (strWidth != null && strWidth.length() != 0) {        
                width = Integer.parseInt(strWidth);        
            }        
            if (strHeight != null && strHeight.length() != 0) {        
                height = Integer.parseInt(strHeight);        
            }        
            if (strCodeCount != null && strCodeCount.length() != 0) {        
                codeCount = Integer.parseInt(strCodeCount);        
            }        
        } catch (NumberFormatException e) {        
        }        
        x = width / (codeCount + 1);        
        fontHeight = height - 2;        
        codeY = height - 4;
    }
    @RequestMapping("/checkimage.do")
    public void checkImage(HttpServletRequest request, HttpServletResponse response)        
        throws ServletException, IOException {        
        response.setContentType("text/html;charset=utf-8");        
        String validateC = (String) request.getSession().getAttribute("validateCode");        
        String veryCode = request.getParameter("c");        
        PrintWriter out = response.getWriter();        
        if(veryCode==null||"".equals(veryCode)){        
            out.println("验证码为空");        
        }else{        
            if(validateC.equals(veryCode)){   
                 out.println("");
            }else{        
                out.println("验证码错误");        
            }        
        }        
        out.flush();        
        out.close();        
        }     

    
}



</pre><p><pre name="code" class="javascript">function changeImg(){    
    var imgSrc = $("#image");    
    var src = imgSrc.attr("src");    
    imgSrc.attr("src",chgUrl(src));    
} 

document.onkeydown = function(evt){   
 var evt = window.event?window.event:evt;   
     if(evt.keyCode==13){
            document.forms["myForm"].submit();   
     }
 }

 $(function(){ 

$("#captcha").blur(function(){
                var code = $("#captcha").val();    
                code = "c=" + code;    
                $("#captcha").load("/register/checkimage.do",{data:code},function(text,status,xhr)  
                {    
                       $("#captchaerror").html(text);    
                });
            });
 });
//时间戳    
//为了使每次生成图片不一致,即不让浏览器读缓存,所以需要加上时间戳    
function chgUrl(url){    
    var timestamp = (new Date()).valueOf();    
    baseurl = "/register/image.do"
    url = baseurl + "?timestamp=" + timestamp;    
    return url;    
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Django招聘网的代码需要涵盖招聘信息的展示、搜索、发布和管理等功能。在搭建网站时,需要首先安装Django框架,创建Django项目和应用,并在数据库中创建相应的数据表。 在代码编写方面,应该结合Django的MVT(Model-View-Template)模式进行开发。在招聘信息的展示方面,应该建立好相应的模型和视图,并使用模板进行展现。在搜索方面,可以使用Django自带的过滤器、查询语句和分页功能,让用户可以快速查找自己需要的招聘信息。 在发布和管理功能方面,需要使用Django自带的表单功能和验证机制,以及一些常用的第三方插件,比如django-crispy-forms和django-cleanup等。同时,可以考虑使用Django的admin后台来管理招聘信息,方便管理员进行招聘信息的发布和管理。 在代码规范方面,应该遵循Django团队的官方文档和PEP8代码规范,保持代码的可读性和一致性。同时,应该考虑到网站的安全性,加强对用户输入数据的验证和安全处理,避免出现漏洞和数据泄露等问题。 综上所述,Django招聘网的代码需要软件开发者的深度理解和巧妙运用,以实现网站高效、稳定和安全的运行。 ### 回答2: 如果要开发一个Django招聘网站,我们需要考虑很多方面,如用户注册、身份认证、职位搜索、发布、投递、收藏等功能。在这些功能的实现过程中,我们需要用到如Django ORM、模板渲染、表单验证、验证码、邮件发送等技术。 首先,我们需要建立用户系统,包括用户注册、登录和退出功能,同时实现相关的安全性验证。其次,我们需要建立一个职位信息系统,包括职位搜索、浏览、发布、投递和收藏等功能,这需要我们建立相关的数据表,同时使用Django ORM实现数据的增删改查操作。 在实现这些功能时,我们需要使用到模板渲染技术,将数据与模板相结合进行页面的呈现;此外,我们还需要注意表单的验证手段,保证用户输入的信息符合要求,增强网站的安全性。 为了提升用户体验,我们还需加入一些辅助功能,例如验证码、分页、数据缓存、邮件发送等等。 最后,我们要保证网站的性能和稳定性,这需要结合前端、后端技术,对代码进行优化。 总之,Django招聘网站的搭建需要考虑许多功能和技术,要从用户需求出发,推陈出新,打造一款高质量的招聘网站。 ### 回答3: Django招聘网代码是一套基于Python代码语言和Django框架开发的网站源码,其目的是用于搭建一个招聘网站,供企业和求职者使用。该网站代码实现了用户登录、注册、简历填写、职位搜索、发布职位等常见的招聘网站功能。 在Django招聘网代码中,首先需要通过Django框架创建数据库,建立包括企业、职位和用户等信息的数据表。在此基础上,可以通过Django自带的用户认证机制实现用户注册和登录功能。 对于企业用户,可以通过页面填写职位信息并发布到网站上供求职者搜索。求职者可以通过网站上的搜索功能进行职位匹配,并可以根据搜索结果进行简历提交。在提交后,企业用户可以查看求职者提交的简历,并决定是否邀请面试。 在代码实现过程中,需要注意对数据的合理性进行检查并进行错误处理。此外,为了满足用户使用体验上的需求,还需要进行网站界面的设计和美化。最后还要对网站的稳定性和安全性进行测试和优化,确保网站能够稳定、安全地运行。 总而言之,Django招聘网代码是一套支持企业招聘和个人求职的网站源码,可以作为快速搭建一个招聘网站的基础,进一步满足人才市场的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值