struts2+hibernate 实现B2C电子商务网站的登录 、注册中验证码的实现(源码)

下边只在注册中实现

1、首先是在Action中写出生成验证码所需的方法(下边是在MemberAction.java中写)

  1. package www.csdn.dbshop.action;  
  2.   
  3. import org.apache.struts2.ServletActionContext;  
  4.   
  5. import www.csdn.dbshop.domain.Admin;  
  6. import www.csdn.dbshop.domain.Member;  
  7. import www.csdn.dbshop.service.BaseService;  
  8. import www.csdn.dbshop.service.MemberService;  
  9. import www.csdn.dbshop.service.impl.BaseServiceImpl;  
  10. import www.csdn.dbshop.service.impl.MemberServiceImpl;  
  11. import www.csdn.dbshop.util.Pagination;  
  12. import www.csdn.dbshop.util.StringUtil;  
  13.   
  14. import java.awt.Color;  
  15.   
  16. import java.awt.Font;  
  17.   
  18. import java.awt.Graphics;  
  19.   
  20. import java.awt.image.BufferedImage;  
  21.   
  22. import java.io.IOException;  
  23.   
  24. import java.util.Random;  
  25.   
  26. import javax.imageio.ImageIO;  
  27.   
  28. import javax.servlet.http.HttpServletRequest;  
  29.   
  30. import javax.servlet.http.HttpServletResponse;  
  31.   
  32. import javax.servlet.http.HttpSession;  
  33.   
  34. public class MemberAction extends BaseAction{  
  35.     private BaseService baseService = new BaseServiceImpl();  
  36.     private MemberService memberService = new MemberServiceImpl();  
  37.     private String cuemail;  
  38.     private boolean cueflag;  
  39.     private Member member;  
  40.     private String acodet;  
  41.     private boolean cacodet;  
  42.     private String sRand = "";  
  43.     private String acode;  
  44.   
  45.     public void setAcode(String acode) {  
  46.         this.acode = acode;  
  47.     }  
  48.   
  49.     public boolean isCacodet() {  
  50.         return cacodet;  
  51.     }  
  52.   
  53.     public void setAcodet(String acodet) {  
  54.         this.acodet = acodet;  
  55.     }  
  56.   
  57.     public void setMember(Member member) {  
  58.         this.member = member;  
  59.     }  
  60.   
  61.     public Member getMember() {  
  62.         return member;  
  63.     }  
  64.   
  65.     public boolean isCueflag() {  
  66.         return cueflag;  
  67.     }  
  68.   
  69.     public void setCacodet(boolean cacodet) {  
  70.         this.cacodet = cacodet;  
  71.     }  
  72.   
  73.     public void setCuemail(String cuemail) {  
  74.         this.cuemail = cuemail;  
  75.     }  
  76.   
  77.     public String checkuemail() {  
  78.   
  79.         cueflag = baseService.checkProperty(Member.class"email", cuemail,  
  80.                 null);  
  81.         return "cuemail";  
  82.     }  
  83.   
  84.     public void setCueflag(boolean cueflag) {  
  85.         this.cueflag = cueflag;  
  86.     }  
  87.   
  88.     public String register() {  
  89.         if (((String) ServletActionContext.getRequest().getSession()  
  90.                 .getAttribute("checkcode")).equalsIgnoreCase(acode)) {  
  91.             Member user = new Member();  
  92.             user.setEmail(member.getEmail());  
  93.             user.setPass(member.getPass());  
  94.             boolean sflag = baseService.saveObject(user);  
  95.             if (sflag) {  
  96.                 return "register";  
  97.             } else {  
  98.                 return "registererror";  
  99.             }  
  100.         } else {  
  101.             ServletActionContext.getRequest().setAttribute("register",  
  102.                     "acerror");  
  103.             return "registererror";  
  104.         }  
  105.     }  
  106.   
  107.     public String login() {  
  108.         if (((String) ServletActionContext.getRequest().getSession()  
  109.                 .getAttribute("checkcode")).equalsIgnoreCase(acode)) {  
  110.             Member user = memberService.login(member.getEmail(),  
  111.                     member.getPass());  
  112.   
  113.             if (user == null) {  
  114.                 ServletActionContext.getRequest()  
  115.                         .setAttribute("login""error");  
  116.                 return "loginerror";  
  117.             } else {  
  118.                 ServletActionContext.getRequest().getSession()  
  119.                         .setAttribute("user", user);  
  120.                 return "login";  
  121.             }  
  122.         } else {  
  123.             ServletActionContext.getRequest().getSession()  
  124.                     .setAttribute("login""acerror");  
  125.             return "loginerror";  
  126.         }  
  127.   
  128.     }  
  129.   
  130.     public String checkAcodet() {  
  131.         if (((String) ServletActionContext.getRequest().getSession()  
  132.                 .getAttribute("checkcode")).equalsIgnoreCase(acodet)) {  
  133.             cacodet = true;  
  134.         } else {  
  135.             cacodet = false;  
  136.         }  
  137.   
  138.         return "checkacode";  
  139.     }  
  140.   
  141.           
  142.       
  143.       
  144. /** 
  145.      * ****************** * Action生成验证码* ****************** 
  146.      */  
  147.     private Font imgFont = new Font("Times New Roman", Font.BOLD, 17);  
  148.   
  149.     Color getRandColor(int fc, int bc) {  
  150.   
  151.         Random random = new Random();  
  152.   
  153.         if (fc > 255) {  
  154.   
  155.             fc = 255;  
  156.   
  157.         }  
  158.   
  159.         if (bc > 255) {  
  160.   
  161.             bc = 255;  
  162.   
  163.         }  
  164.   
  165.         int r = fc + random.nextInt(bc - fc);  
  166.   
  167.         int g = fc + random.nextInt(bc - fc);  
  168.   
  169.         int b = fc + random.nextInt(bc - fc);  
  170.   
  171.         return new Color(r, g, b);  
  172.   
  173.     }  
  174.   
  175.     public void checkCodeImage() {  
  176.   
  177.         HttpServletRequest request = ServletActionContext.getRequest();  
  178.   
  179.         HttpServletResponse response = ServletActionContext.getResponse();  
  180.   
  181.         response.setHeader("Pragma""No-cache");  
  182.   
  183.         response.setHeader("Cache-Control""no-cache");  
  184.   
  185.         response.setDateHeader("Expires"0);  
  186.   
  187.         response.setContentType("image/jpeg");  
  188.   
  189.         int width = 75, height = 20;  
  190.   
  191.         BufferedImage image = new BufferedImage(width, height,  
  192.   
  193.         BufferedImage.TYPE_INT_RGB);  
  194.   
  195.         Graphics g = image.getGraphics();  
  196.   
  197.         Random random = new Random();  
  198.   
  199.         g.setColor(getRandColor(200250));  
  200.   
  201.         g.fillRect(11, width - 1, height - 1);  
  202.   
  203.         g.setColor(new Color(102102102));  
  204.   
  205.         g.drawRect(00, width - 1, height - 1);  
  206.   
  207.         g.setFont(imgFont);  
  208.   
  209.         g.setColor(getRandColor(160200));  
  210.   
  211.         for (int i = 0; i < 155; i++) {  
  212.   
  213.             int x = random.nextInt(width - 1);  
  214.   
  215.             int y = random.nextInt(height - 1);  
  216.   
  217.             int xl = random.nextInt(6) + 1;  
  218.   
  219.             int yl = random.nextInt(12) + 1;  
  220.   
  221.             g.drawLine(x, y, x + xl, y + yl);  
  222.   
  223.         }  
  224.   
  225.         for (int i = 0; i < 70; i++) {  
  226.   
  227.             int x = random.nextInt(width - 1);  
  228.   
  229.             int y = random.nextInt(height - 1);  
  230.   
  231.             int xl = random.nextInt(12) + 1;  
  232.   
  233.             int yl = random.nextInt(6) + 1;  
  234.   
  235.             g.drawLine(x, y, x - xl, y - yl);  
  236.   
  237.         }  
  238.   
  239.         for (int i = 0; i < 4; i++) {  
  240.   
  241.             int itmp = 0;  
  242.   
  243.             if (random.nextInt(2) == 1) {  
  244.   
  245.                 itmp = random.nextInt(26) + 65;  
  246.   
  247.                 char ctmp = (char) itmp;  
  248.   
  249.                 sRand += String.valueOf(ctmp);  
  250.   
  251.                 g.setColor(new Color(20 + random.nextInt(110), 20 + random  
  252.   
  253.                 .nextInt(110), 20 + random.nextInt(110)));  
  254.   
  255.                 g.drawString(String.valueOf(ctmp), 15 * i + 1016);  
  256.   
  257.             } else if (random.nextInt(3) == 1) {  
  258.   
  259.                 itmp = random.nextInt(26) + 97;  
  260.   
  261.                 char ctmp = (char) itmp;  
  262.   
  263.                 sRand += String.valueOf(ctmp);  
  264.   
  265.                 g.setColor(new Color(20 + random.nextInt(110), 20 + random  
  266.   
  267.                 .nextInt(110), 20 + random.nextInt(110)));  
  268.   
  269.                 g.drawString(String.valueOf(ctmp), 15 * i + 1016);  
  270.   
  271.             } else {  
  272.   
  273.                 itmp = random.nextInt(9);  
  274.   
  275.                 sRand += String.valueOf(itmp);  
  276.   
  277.                 g.setColor(new Color(20 + random.nextInt(110), 20 + random  
  278.   
  279.                 .nextInt(110), 20 + random.nextInt(110)));  
  280.   
  281.                 g.drawString(String.valueOf(itmp), 15 * i + 1016);  
  282.   
  283.             }  
  284.   
  285.         }  
  286.   
  287.         HttpSession session = request.getSession(true);  
  288.   
  289.         session.setAttribute("checkcode", sRand);  
  290.   
  291.         g.dispose();  
  292.   
  293.         try {  
  294.   
  295.             ImageIO.write(image, "JPEG", response.getOutputStream());  
  296.   
  297.         } catch (IOException e) {  
  298.   
  299.             e.printStackTrace();  
  300.   
  301.         }  
  302.   
  303.     }  
  304.   
  305.   
  306. }  
package www.csdn.dbshop.action;

import org.apache.struts2.ServletActionContext;

import www.csdn.dbshop.domain.Admin;
import www.csdn.dbshop.domain.Member;
import www.csdn.dbshop.service.BaseService;
import www.csdn.dbshop.service.MemberService;
import www.csdn.dbshop.service.impl.BaseServiceImpl;
import www.csdn.dbshop.service.impl.MemberServiceImpl;
import www.csdn.dbshop.util.Pagination;
import www.csdn.dbshop.util.StringUtil;

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.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class MemberAction extends BaseAction{
    private BaseService baseService = new BaseServiceImpl();
    private MemberService memberService = new MemberServiceImpl();
    private String cuemail;
    private boolean cueflag;
    private Member member;
    private String acodet;
    private boolean cacodet;
    private String sRand = "";
    private String acode;

    public void setAcode(String acode) {
        this.acode = acode;
    }

    public boolean isCacodet() {
        return cacodet;
    }

    public void setAcodet(String acodet) {
        this.acodet = acodet;
    }

    public void setMember(Member member) {
        this.member = member;
    }

    public Member getMember() {
        return member;
    }

    public boolean isCueflag() {
        return cueflag;
    }

    public void setCacodet(boolean cacodet) {
        this.cacodet = cacodet;
    }

    public void setCuemail(String cuemail) {
        this.cuemail = cuemail;
    }

    public String checkuemail() {

        cueflag = baseService.checkProperty(Member.class, "email", cuemail,
                null);
        return "cuemail";
    }

    public void setCueflag(boolean cueflag) {
        this.cueflag = cueflag;
    }

    public String register() {
        if (((String) ServletActionContext.getRequest().getSession()
                .getAttribute("checkcode")).equalsIgnoreCase(acode)) {
            Member user = new Member();
            user.setEmail(member.getEmail());
            user.setPass(member.getPass());
            boolean sflag = baseService.saveObject(user);
            if (sflag) {
                return "register";
            } else {
                return "registererror";
            }
        } else {
            ServletActionContext.getRequest().setAttribute("register",
                    "acerror");
            return "registererror";
        }
    }

    public String login() {
        if (((String) ServletActionContext.getRequest().getSession()
                .getAttribute("checkcode")).equalsIgnoreCase(acode)) {
            Member user = memberService.login(member.getEmail(),
                    member.getPass());

            if (user == null) {
                ServletActionContext.getRequest()
                        .setAttribute("login", "error");
                return "loginerror";
            } else {
                ServletActionContext.getRequest().getSession()
                        .setAttribute("user", user);
                return "login";
            }
        } else {
            ServletActionContext.getRequest().getSession()
                    .setAttribute("login", "acerror");
            return "loginerror";
        }

    }

    public String checkAcodet() {
        if (((String) ServletActionContext.getRequest().getSession()
                .getAttribute("checkcode")).equalsIgnoreCase(acodet)) {
            cacodet = true;
        } else {
            cacodet = false;
        }

        return "checkacode";
    }

        
    
    
/**
     * ****************** * Action生成验证码* ******************
     */
    private Font imgFont = new Font("Times New Roman", Font.BOLD, 17);

    Color getRandColor(int fc, int bc) {

        Random random = new Random();

        if (fc > 255) {

            fc = 255;

        }

        if (bc > 255) {

            bc = 255;

        }

        int r = fc + random.nextInt(bc - fc);

        int g = fc + random.nextInt(bc - fc);

        int b = fc + random.nextInt(bc - fc);

        return new Color(r, g, b);

    }

    public void checkCodeImage() {

        HttpServletRequest request = ServletActionContext.getRequest();

        HttpServletResponse response = ServletActionContext.getResponse();

        response.setHeader("Pragma", "No-cache");

        response.setHeader("Cache-Control", "no-cache");

        response.setDateHeader("Expires", 0);

        response.setContentType("image/jpeg");

        int width = 75, height = 20;

        BufferedImage image = new BufferedImage(width, height,

        BufferedImage.TYPE_INT_RGB);

        Graphics g = image.getGraphics();

        Random random = new Random();

        g.setColor(getRandColor(200, 250));

        g.fillRect(1, 1, width - 1, height - 1);

        g.setColor(new Color(102, 102, 102));

        g.drawRect(0, 0, width - 1, height - 1);

        g.setFont(imgFont);

        g.setColor(getRandColor(160, 200));

        for (int i = 0; i < 155; i++) {

            int x = random.nextInt(width - 1);

            int y = random.nextInt(height - 1);

            int xl = random.nextInt(6) + 1;

            int yl = random.nextInt(12) + 1;

            g.drawLine(x, y, x + xl, y + yl);

        }

        for (int i = 0; i < 70; i++) {

            int x = random.nextInt(width - 1);

            int y = random.nextInt(height - 1);

            int xl = random.nextInt(12) + 1;

            int yl = random.nextInt(6) + 1;

            g.drawLine(x, y, x - xl, y - yl);

        }

        for (int i = 0; i < 4; i++) {

            int itmp = 0;

            if (random.nextInt(2) == 1) {

                itmp = random.nextInt(26) + 65;

                char ctmp = (char) itmp;

                sRand += String.valueOf(ctmp);

                g.setColor(new Color(20 + random.nextInt(110), 20 + random

                .nextInt(110), 20 + random.nextInt(110)));

                g.drawString(String.valueOf(ctmp), 15 * i + 10, 16);

            } else if (random.nextInt(3) == 1) {

                itmp = random.nextInt(26) + 97;

                char ctmp = (char) itmp;

                sRand += String.valueOf(ctmp);

                g.setColor(new Color(20 + random.nextInt(110), 20 + random

                .nextInt(110), 20 + random.nextInt(110)));

                g.drawString(String.valueOf(ctmp), 15 * i + 10, 16);

            } else {

                itmp = random.nextInt(9);

                sRand += String.valueOf(itmp);

                g.setColor(new Color(20 + random.nextInt(110), 20 + random

                .nextInt(110), 20 + random.nextInt(110)));

                g.drawString(String.valueOf(itmp), 15 * i + 10, 16);

            }

        }

        HttpSession session = request.getSession(true);

        session.setAttribute("checkcode", sRand);

        g.dispose();

        try {

            ImageIO.write(image, "JPEG", response.getOutputStream());

        } catch (IOException e) {

            e.printStackTrace();

        }

    }


}


 

2.在struts.xml中

  1. <result name="checkacode" type="json">  
  2.                <param name="root">cacodet</param>  
  3.            </result>  
  4.            <result name="register">/login.jsp</result>  
  5.            <result name="registererror">/personreg.jsp</result>  
  6.            <result name="login">/index.jsp</result>  
  7.            <result name="loginerror">/login.jsp</result>  
 <result name="checkacode" type="json">
                <param name="root">cacodet</param>
            </result>
            <result name="register">/login.jsp</result>
            <result name="registererror">/personreg.jsp</result>
            <result name="login">/index.jsp</result>
            <result name="loginerror">/login.jsp</result>


 

3.在register.jsp中

  1. <script type="text/javascript">    
  2.         function reImg(){    
  3.             var img = document.getElementById("picture");    
  4.             img.src=img.src + "?";   
  5.         }    
  6.     </script>   
  7.   
  8.   
  9.   
  10.     <TR>  
  11.   
  12.         <TD class=mustcontent><SPAN>*</SPAN>验证码:</TD>  
  13.   
  14.         <td><input type="text" id="acodet" name="acode" style="width:110px" value="${randomCode}"><span id="acode"><a href="javascript:void(0);" onclick="reImg();" class="changeacode"><img id="picture"        src="${pageContext.request.contextPath }/csdn/MemberAction_checkCodeImage.action?nowtime="                  style="position:relative;top:5px;border:0;"></a> </span><span  
  15.     style="font-size:12px;color:rgb(150,150,150);margin-left:5px">看不清?<a class="changeacode"              href="javascript:void(0);" onclick="reImg();">换一张</a></span>  
  16.                                                   
  17.         </td>  
  18.   
  19.     </TR>  
<script type="text/javascript">  
        function reImg(){  
            var img = document.getElementById("picture");  
            img.src=img.src + "?"; 
        }  
    </script> 



    <TR>

        <TD class=mustcontent><SPAN>*</SPAN>验证码:</TD>

        <td><input type="text" id="acodet" name="acode" style="width:110px" value="${randomCode}"><span id="acode"><a href="javascript:void(0);" οnclick="reImg();" class="changeacode"><img id="picture"        src="${pageContext.request.contextPath }/csdn/MemberAction_checkCodeImage.action?nowtime="                  style="position:relative;top:5px;border:0;"></a> </span><span
    style="font-size:12px;color:rgb(150,150,150);margin-left:5px">看不清?<a class="changeacode"              href="javascript:void(0);" οnclick="reImg();">换一张</a></span>
                                                
        </td>

    </TR>


 

4.效果如下:

希望能给大家带来帮助

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值