如何在注册时使用验证码注册(servlet源码)

【1】书写CheckCodeServlet类

package com.hyxy.servlet.session;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class CheckCodeServlet extends HttpServlet {

  
    private static final long serialVersionUID = 1L;

    public void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //创建图片对象
        BufferedImage image = new BufferedImage(80, 30,BufferedImage.TYPE_INT_RGB);
        //获取画笔
        Graphics  g = image.getGraphics();
        Random r = new Random();
        //给画笔上色
        g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
        //绘制方形
        g.fillRect(0, 0, 80, 30);
        g.setColor(new Color(0,0,0));
        g.setFont(new Font(null,Font.BOLD,30));//设置字体大小
        //真实的验证码
        String number = getNumber(4);
        System.out.println("checkcode:"+number);
        //获取session对象
        HttpSession session = request.getSession();
        //保存验证码
        
        session.setAttribute("number", number);
        //将验证码绘制到图片上
        g.drawString(number, 1, 24);
        //绘制5条干扰线
        for(int i=0;i<5;i++){
            g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
            g.drawLine(r.nextInt(80),r.nextInt(30),r.nextInt(80),r.nextInt(30));
        }
        //设置响应头
        response.setContentType("image/jpeg");
        OutputStream os = response.getOutputStream();
        javax.imageio.ImageIO.write(image, "jpeg", os);
    }
    public static String getNumber(int n){
        String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        String number ="";
        Random ran = new Random();
        for(int i = 0 ;i<n;i++){
            number+=str.charAt(ran.nextInt(str.length()));
        }
        return number;
    }

}
 

我们需要的jar包有(自行百度哦):

 

记得配置web.xml文件哦

我们直接在浏览器直接访问CheckCodeServlet

启动tomcat服务器后,在浏览器输入url:http://localhost:8080/emp_jsp02/CheckCodeServlet

我们可以看到结果:

【2】书写regist.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'regist.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    </head>
    <body>
        <div id="wrap">
            <div id="top_content">
                    <div id="header">
                        <div id="rightheader">
                            <p>
                                2009/11/20
                                <br />
                            </p>
                        </div>
                        <div id="topheader">
                            <h1 id="title">
                                <a href="#">main</a>
                            </h1>
                        </div>
                        <div id="navigation">
                        </div>
                    </div>
                <div id="content">
                    <p id="whereami">
                    </p>
                    <h1>
                        注册
                    </h1>
                    <form action="RegisterServlet" method="post">
                        <table cellpadding="0" cellspacing="0" border="0"
                            class="form_table">
                            <tr>
                                <td valign="middle" align="right">
                                    用户名:
                                </td>
                                <td valign="middle" align="left">
                                    <input type="text" class="inputgri" name="username" />
                                </td>
                            </tr>
                            <tr>
                                <td valign="middle" align="right">
                                    真实姓名:
                                </td>
                                <td valign="middle" align="left">
                                    <input type="text" class="inputgri" name="realName" />
                                </td>
                            </tr>
                            <tr>
                                <td valign="middle" align="right">
                                    密码:
                                </td>
                                <td valign="middle" align="left">
                                    <input type="password" class="inputgri" name="password" />
                                </td>
                            </tr>
                            <tr>
                                <td valign="middle" align="right">
                                    性别:
                                </td>
                                <td valign="middle" align="left">
                                    男
                                    <input type="radio" class="inputgri" name="sex" value="m" checked="checked"/>
                                    女
                                    <input type="radio" class="inputgri" name="sex" value="f"/>
                                </td>
                            </tr>
                            
                            <tr>
                                <td valign="middle" align="right">
                                    验证码:
                                    <img id="num" src="CheckCodeServlet" />
                                    <a href="javascript:;" οnclick="document.getElementById('num').src = 'image?'+(new Date()).getTime()">换一张</a>
                                </td>

                                <td valign="middle" align="left">
                                    <input type="text" class="inputgri" name="number" />
                                </td>
                            </tr>
                        </table>
                        <p>
                            <input type="submit" class="button" value="Submit &raquo;" />
                        </p>
                    </form>
                </div>
            </div>
            <div id="footer">
                <div id="footer_bg">
                ABC@126.com
                </div>
            </div>
        </div>
    </body>
</html>

在浏览器上访问:http://localhost:8080/emp_jsp02/regist.jsp

显示结果:

 【3】从后台中获取登录数据(书写RegisterServlet类)

package com.hyxy.servlet.test;

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;
import javax.servlet.http.HttpSession;

import com.hyxy.servlet.bean.User;
import com.hyxy.servlet.interfaces.impl.UserDaoImpl;

public class RegisterServlet extends HttpServlet {

    
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String realName = request.getParameter("realName");
        String sex = request.getParameter("sex");
        //获取浏览器端的验证码
        String number = request.getParameter("number");
        //获取session对象
        HttpSession session = request.getSession();
        String checkCode = (String)session.getAttribute("number");

        //System.out.println("校验ma:"+checkCode);
        if(checkCode.equalsIgnoreCase(number)) {
        User user = new User( username, password, realName, sex);
        UserDaoImpl dao = new UserDaoImpl();
        
        dao.addUser(user);
        request.getRequestDispatcher("login.jsp").forward(request, response);
    }else{
        request.getRequestDispatcher("fail.jsp").forward(request, response);
     }
    }

}

【4】注册成功后我们就进入登录界面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值