精华内容
下载资源
问答
  • Java邮箱验证注册功能

    2018-10-15 15:35:22
    Java语言开发,利用javax.mail的jar包配置邮箱发送信息,zip包里有邮箱配置Java类文件和对应用到的jar包。
  • java邮箱验证

    2019-08-26 21:16:24
    java邮箱验证功能: 1.前台页面注册 2.成功发送验证邮件 3.点击邮件进行验证
  • java邮箱注册验证实现

    2013-04-21 15:30:02
    javabean+servlet+jsp+mysql实现邮箱注册验证
  • Java邮箱验证

    2018-12-07 21:28:23
    注册时需要对用户填写邮箱进行验证,以下为qq邮箱验证代码。需要注意,要先将发送者的邮箱 POP3/SMTP服务和IMAP/SMTP服务设置开启,否则发送失败。邮箱的密码不是登陆密码,是开启pop3后生成的密码。 public ...

    在注册时需要对用户填写邮箱进行验证,以下为qq邮箱验证代码。需要注意,要先将发送者的邮箱 POP3/SMTP服务和IMAP/SMTP服务设置开启,否则发送失败。邮箱的密码不是登陆密码,是开启pop3后生成的密码。

    public class Sendmail extends Thread {
    	// 用于给用户发送邮件的邮箱
    	private String from = "xxxx@qq.com";
    	// 邮箱的用户名
    	private String username = "xxxx@qq.com";
    	// 邮箱的密码
    	private String password = "xxx";//pop3密码
    	// 发送邮件的服务器地址
    	private String host = "smtp.qq.com";
    	
    	private MemberDO member;//用户注册实体
    	
    	public Sendmail(MemberDO member){
    		this.member = member;
    	}
    	
    	@Override
    	public void run() {
    		try {
    			Properties prop = new Properties();
    			prop.setProperty("mail.host", host);
    			prop.setProperty("mail.transport.protocol", "smtp");
    			prop.setProperty("mail.smtp.auth", "true");
    			Session session = Session.getInstance(prop);
    			session.setDebug(true);
    			Transport ts = session.getTransport();
    			ts.connect(host, username, password);
    			Message message = createEmail(session, member);
    			ts.sendMessage(message, message.getAllRecipients());
    			ts.close();
    		} catch (Exception e) {
    			throw new RuntimeException(e);
    		}
    	}
    	
    	
    	/**
    	 * 创建邮箱
    	 * @param session
    	 * @param member
    	 * @return
    	 * @throws Exception
    	 */
    	public Message createEmail(Session session, MemberDO member) throws Exception {
    		String code  = "123456";
    		MimeMessage message = new MimeMessage(session);
    		message.setFrom(new InternetAddress(from));
    		message.setRecipient(Message.RecipientType.TO, new InternetAddress(member.getEmail()));
    		message.setSubject("注册学习空间邮箱验证");
    
    		String info = "您好<font size =\'3\' face=\'arial\' color=\'#33507b\'>"+member.getEmail()+"</font>!<br/>" 
    				+ "欢迎注册学习空间,请将验证码填写到注册页面。<br/>验证码:<font size =\'3\' face=\'arial\' color=\'#33507b\'>"+code+"</font>";
    		message.setContent(info, "text/html;charset=UTF-8");
    		message.saveChanges();
    		return message;
    	}
    }
    展开全文
  • java 实现邮箱验证注册

    千次阅读 2017-03-07 20:18:50
    这是一个imooc网上的一个项目,感觉老师讲的还行,现在理理思路,我觉得难点是在...//获取非共享的session对象,在真正使用创建的过程中,往往会让我们验证密码 Session session =Session.getInstance(prop,new Authe

    这是一个imooc网上的一个项目,感觉老师讲的还行,现在理理思路,我觉得难点是在Maill工具类的编写。

    第一:创建连接对象,连接服务器

    //实例化属性
    Properties prop=new Properties();
    //获取非共享的session对象,在真正使用创建的过程中,往往会让我们验证密码
    Session session =Session.getInstance(prop,new Authenticator(){
     protected  PasswordAuthentication getPasswordAuthentication(){
    return  new PasswordAuthentication("xxx@xx.com", password);
    }
    });

    // 第二 创建邮箱对象

    Message message=new MimeMessage(session);

    // 设置邮箱的message的相关操作

    //1设置发件人
    message.setFrom(new InternetAddress(xxx@xx.com));
    //2设置收件人 to:目标邮箱地址  
    message.setRecipient(RecipientType.TO,  new InternetAddress(to) ) ;
    //3设置主题
    message.setSubject(String);
    //4设置邮件的内容  code :通过uuid随机生成的号码
    message.setContent("<h1>XXXXX</h1><h3><a href='http://localhost:8080/XXX/XXXServlet?code="+code+"'></a>localhost:8080/xxx/XXXServlet?code="+code+"<`这里写代码片`/h3>","text/html;charset=UTF-8");
    //第三 发送一封激活邮件
    ransport.send(message);
    

    根据上述的方法基本上可以保证发送一段链接地址给我们目标邮箱了,结果下所示

    来自学习网站的激活邮件,激活请点击下面的链接:

    localhost:8080/mail/Active?code=6e050f349c214cb0934e98cd02c3f760dff4cd4a4efb4c82a6df95f0c7e6c187

    在完成激活码的发送之后,重点在于实现验证激活码是否有误,如果激活码在与数据库的保存的码一致,则
    将用户状态更新,跳转到登录页面。

    User user=us.findByCode(code);
    if(user!=null){
    //查询到了,更改状态
    user.setState(1);
    user.setCode(null);//保证code只用一次只能用一次
    us.update(user);
    展开全文
  • java实现邮箱注册验证

    2018-10-31 15:48:19
    java实现邮箱验证的功能 在日常生活中,我们在一个网站中注册一个账户时,往往在提交个人信息后,网站还要我们通过手机或邮件来验证,邮件的话大概会是下面这个样子的:   用户通过点击链接从而完成注册,然后...

    java实现邮箱验证的功能

    在日常生活中,我们在一个网站中注册一个账户时,往往在提交个人信息后,网站还要我们通过手机或邮件来验证,邮件的话大概会是下面这个样子的:

     

    用户通过点击链接从而完成注册,然后才能登录。

    也许你会想,为什么要这么麻烦直接提交注册不就行了吗?这其中很大一部分原因是为了防止恶意注册。接下来让我们一起来使用最简单的JSP+Servlet的方式来完成一个通过邮箱验证注册的小案例吧。

    准备工作

    前提知识

    动手实践之前,你最好对以下知识有所了解:

    如果对邮件收发过程完全不了解的话,可以花三分钟的时间到慕课网了解一下,讲得算是非常清楚了,这里就不赘述了。放张图回忆一下:

     

    
     

    邮箱准备

    在了解的上述内容之后,要实现这个案例,首先我们还得有两个邮箱账号,一个用来发送邮件,一个用来接收邮件。本案例使用QQ邮箱向163邮箱发送激活邮件,因此需要登录QQ邮箱,在设置->账户面板中开启POP3/SMTP服务,以允许我们通过第三方客户端发送邮件:

     

     

    还要注意的是,登录以下服务: POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务时,需要用到授权码而不是QQ密码,授权码是用于登录第三方邮件客户端的专用密码。因此我们需要获得授权码,以在后面的程序中使用。

    好了,到此准备工作就差不多了,下面开始动手吧。

    实现注册Demo

    创建Maven工程

    本次案例基于Maven,因此你要先创建一个Maven的Web工程,并引入相关依赖:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    <dependencies>

            <!-- JavaEE依赖 -->

            <dependency>

                <groupId>javaee</groupId>

                <artifactId>javaee-api</artifactId>

                <version>5</version>

                <scope>test</scope>

            </dependency>

            <dependency>

                <groupId>taglibs</groupId>

                <artifactId>standard</artifactId>

                <version>1.1.2</version>

            </dependency>

            <!-- mysql驱动依赖 -->

            <dependency>

                <groupId>mysql</groupId>

                <artifactId>mysql-connector-java</artifactId>

                <version>5.1.40</version>

            </dependency>

            <!-- c3p0依赖 -->

            <dependency>

                <groupId>c3p0</groupId>

                <artifactId>c3p0</artifactId>

                <version>0.9.1.2</version>

            </dependency>

            <!-- JavaMail相关依赖 -->

            <dependency>

                <groupId>javax.mail</groupId>

                <artifactId>mail</artifactId>

                <version>1.4.7</version>

            </dependency>

            <dependency>

                <groupId>javax.activation</groupId>

                <artifactId>activation</artifactId>

                <version>1.1.1</version>

            </dependency>

     

    </dependencies>

    创建数据库表

    接下来使用MySQL创建一张简单的用户表:

    1

    2

    3

    4

    5

    6

    7

    8

    create table `user`(

        id int(11) primary key auto_increment comment '用户id',

        username varchar(255) not null comment '用户名',

        email varchar(255) not null comment '用户邮箱',

        password varchar(255) not null comment '用户密码',

        state int(1) not null default 0 comment '用户激活状态:0表示未激活,1表示激活',

        code varchar(255) not null comment '激活码'

    )engine=InnoDB default charset=utf8;

    其中要注意的地方是state字段(用来判断用户账号是否激活)和code字段(激活码)。

    创建注册页面

    使用JSP创建一个最简单的注册页面(请自行忽略界面):

    嗯,果然够简单。

    主要的业务逻辑

    先想一下,我们的整个流程应该是这样的:

    1. 用户填写相关信息,点击注册按钮
    2. 系统先将用户记录保存到数据库中,其中用户状态为未激活
    3. 系统发送一封邮件并通知用户去验证
    4. 用户登录邮箱并点击激活链接
    5. 系统将用户状态更改为已激活并通知用户注册成功

    搞清楚了整个流程,实现起来应该就不难了。下图是我建立的包结构:

    ps:完整代码请见后文链接,这里只讨论主要的思路

    首先是,用户提交注册信息后,相应的servlet会将相关信息传给service层去处理,在service中需要做的就是讲记录保存到数据库中(调用dao层),然后再给用户发送一封邮件,UserServiceImpl相关代码如下:

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    public boolean doRegister(String userName, String password, String email) {

        // 这里可以验证各字段是否为空

         

        //利用正则表达式(可改进)验证邮箱是否符合邮箱的格式

        if(!email.matches("^\\w+@(\\w+\\.)+\\w+$")){

            return false;

        }

        //生成激活码

        String code=CodeUtil.generateUniqueCode();

        User user=new User(userName,email,password,0,code);

        //将用户保存到数据库

        UserDao userDao=new UserDaoImpl();

        //保存成功则通过线程的方式给用户发送一封邮件

        if(userDao.save(user)>0){

            new Thread(new MailUtil(email, code)).start();;

            return true;

        }

        return false;

    }

      

    需要注意的是,应该新建一个线程去执行发送邮件的任务,不然被骂估计是免不了了。
    数据库的操作比较简单,此处就不贴出来了,无非是将用户记录插到数据库中。值得一提的是,此处使用c3p0来作为数据源来替代DriverManager,在频繁获取释放数据库连接时效率会大大提高,c3p0最简单的配置如下:

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    <?xml version="1.0" encoding="UTF-8"?>

    <c3p0-config>

        <named-config name="mysql">

            <property name="driverClass">com.mysql.jdbc.Driver</property>

            <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/test1?useSSL=false</property>

            <property name="user">root</property>

            <property name="password">123456</property>

            <!-- 初始化时一个连接池尝试获得的连接数量,默认是3,大小应该在maxPoolSize和minPoolSize之间 -->

            <property name="initialPoolSize">5</property>

            <!-- 一个连接最大空闲时间(单位是秒),0意味着连接不会过时 -->

            <property name="maxIdleTime">30</property>

            <!-- 任何指定时间的最大连接数量 ,默认值是15 -->

            <property name="maxPoolSize">20</property>

            <!-- 任何指定时间的最小连接数量 ,默认值是3 -->

            <property name="minPoolSize">5</property>

        </named-config>

    </c3p0-config>

     

    提供一个工具类DBUtil以获取,释放连接:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    public class DBUtil {

    private static ComboPooledDataSource cpds=null;

     

    static{

        cpds=new ComboPooledDataSource("mysql");

    }

     

    public static Connection getConnection(){

        Connection connection=null;

        try {

            connection = cpds.getConnection();

        catch (SQLException e) {

            e.printStackTrace();

        }

        return connection;

    }

     

    public static void close(Connection conn,PreparedStatement pstmt,ResultSet rs){

        try {

            if(rs!=null){

                rs.close();

            }

            if(pstmt!=null){

                pstmt.close();

            }

            if(rs!=null){

                rs.close();

            }

        catch (SQLException e) {

            e.printStackTrace();

        }

         

    }

     

    }

      

    要特别注意的一点是:即使是使用连接池,使用完Connection后调用close方法,当然这不意味着关闭与数据库的TCP 连接,而是将连接还回到池中去,如果不close掉的话,这个连接将会一直被占用,直到连接池中的连接耗尽为止。

    使用JavaMail发送邮件

    使用JavaMail发送邮件非常简单,也是三步曲:

    1. 创建连接对象javax.mail.Session
    2. 创建邮件对象 javax.mail.Message
    3. 发送邮件

    直接看代码,详细的注释在代码中,MailUtil代码如下:

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    public class MailUtil implements Runnable {

        private String email;// 收件人邮箱

        private String code;// 激活码

     

        public MailUtil(String email, String code) {

            this.email = email;

            this.code = code;

        }

     

        public void run() {

            // 1.创建连接对象javax.mail.Session

            // 2.创建邮件对象 javax.mail.Message

            // 3.发送一封激活邮件

            String from = "xxx@qq.com";// 发件人电子邮箱

            String host = "smtp.qq.com"// 指定发送邮件的主机smtp.qq.com(QQ)|smtp.163.com(网易)

     

            Properties properties = System.getProperties();// 获取系统属性

     

            properties.setProperty("mail.smtp.host", host);// 设置邮件服务器

            properties.setProperty("mail.smtp.auth""true");// 打开认证

     

            try {

                //QQ邮箱需要下面这段代码,163邮箱不需要

                MailSSLSocketFactory sf = new MailSSLSocketFactory();

                sf.setTrustAllHosts(true);

                properties.put("mail.smtp.ssl.enable""true");

                properties.put("mail.smtp.ssl.socketFactory", sf);

     

     

                // 1.获取默认session对象

                Session session = Session.getDefaultInstance(properties, new Authenticator() {

                    public PasswordAuthentication getPasswordAuthentication() {

                        return new PasswordAuthentication("xxx@qq.com""xxx"); // 发件人邮箱账号、授权码

                    }

                });

     

                // 2.创建邮件对象

                Message message = new MimeMessage(session);

                // 2.1设置发件人

                message.setFrom(new InternetAddress(from));

                // 2.2设置接收人

                message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));

                // 2.3设置邮件主题

                message.setSubject("账号激活");

                // 2.4设置邮件内容

                String content = "<html><head></head><body><h1>这是一封激活邮件,激活请点击以下链接</h1><h3><a href='http://localhost:8080/RegisterDemo/ActiveServlet?code="

                        + code + "'>http://localhost:8080/RegisterDemo/ActiveServlet?code=" + code

                        "</href></h3></body></html>";

                message.setContent(content, "text/html;charset=UTF-8");

                // 3.发送邮件

                Transport.send(message);

                System.out.println("邮件成功发送!");

            catch (Exception e) {

                e.printStackTrace();

            }

        }

    }

     

    ps:需要把上面的账号、授权码进行相应修改。

    完成后,再有用户提交注册信息时,应该就能收到验证邮件了:

     

    用户点击链接后,我们要做的工作就是根据code(可以利用UUID生成)更改数据库中相应用户的状态,然后提示用户注册结果了。

    总结

    简单介绍了如何使用JavaMail完成了一个带邮箱验证的注册案例,当然在实际开发中还有许多细节要注意,例如对用户提交信息的校验,密码进行加密等,此处的简单案例并未详尽处理这些细节。

    代码 emailValidate

     

    原文:https://www.jianshu.com/p/8f8d7a46888f

     

     

    注:想要让别人能够成功的完成注册,需要提供一个公网ip,替换掉localhost

    展开全文
  • 主要介绍了Java注册邮箱激活验证实现代码,有需要的朋友可以参考一下
  • java 邮箱验证激活

    2016-04-04 22:54:10
    用户在注册页面,输入邮箱地址后台生成一个激活码,将用户信息保存,并发送激活邮件用户点击邮箱中的链接来激活 1.实体类 只有一个简单的User [java] view plain copy package ...

    前面转载了一篇用邮件激活账号的文章,这里简单实现了一下。

    简单的逻辑:

    1. 用户在注册页面,输入邮箱地址
    2. 后台生成一个激活码,将用户信息保存,并发送激活邮件
    3. 用户点击邮箱中的链接来激活

    1.实体类

    只有一个简单的User

    [java] view plain copy
    1. package org.ygy.model;  
    2.   
    3. import java.util.Calendar;  
    4. import java.util.Date;  
    5.   
    6. import javax.persistence.Column;  
    7. import javax.persistence.Entity;  
    8. import javax.persistence.GeneratedValue;  
    9. import javax.persistence.Id;  
    10. import javax.persistence.Table;  
    11. import javax.persistence.Temporal;  
    12. import javax.persistence.TemporalType;  
    13. import javax.persistence.Transient;  
    14.   
    15. @Entity  
    16. @Table(name = "t_user")  
    17. public class User {  
    18.     private Long id;  
    19.     private String email;//邮箱地址  
    20.     private Integer status;//状态,0-未激活;1-已激活  
    21.     private String validateCode;//激活码  
    22.     private Date registerTime;//注册时间  
    23.   
    24.     public User() {}  
    25.       
    26.     @Id  
    27.     @GeneratedValue  
    28.     public Long getId() {  
    29.         return id;  
    30.     }  
    31.   
    32.     public void setId(Long id) {  
    33.         this.id = id;  
    34.     }  
    35.   
    36.     @Column(nullable=false , unique=true)  
    37.     public String getEmail() {  
    38.         return email;  
    39.     }  
    40.   
    41.     public void setEmail(String email) {  
    42.         this.email = email;  
    43.     }  
    44.   
    45.     public Integer getStatus() {  
    46.         return status;  
    47.     }  
    48.   
    49.     public void setStatus(Integer status) {  
    50.         this.status = status;  
    51.     }  
    52.   
    53.     public String getValidateCode() {  
    54.         return validateCode;  
    55.     }  
    56.   
    57.     public void setValidateCode(String validateCode) {  
    58.         this.validateCode = validateCode;  
    59.     }  
    60.   
    61.     @Temporal(TemporalType.TIMESTAMP)  
    62.     @Column(nullable = false)  
    63.     public Date getRegisterTime() {  
    64.         return registerTime;  
    65.     }  
    66.   
    67.     public void setRegisterTime(Date registerTime) {  
    68.         this.registerTime = registerTime;  
    69.     }  
    70.       
    71.     @Transient  
    72.     public Date getLastActivateTime() {  
    73.         Calendar cl = Calendar.getInstance();  
    74.         cl.setTime(registerTime);  
    75.         cl.add(Calendar.DATE , 2);  
    76.           
    77.         return cl.getTime();  
    78.     }  
    79.   
    80. }  

    2.注册页面

    这里就只有一个邮箱,没有其他的信息。

    这里可用Ajax,验证一下邮箱是否已经被注册。

    3.控制层

    这里用Servlet处理一下

    [java] view plain copy
    1. package org.ygy.servlet;  
    2.   
    3. import java.io.IOException;  
    4.   
    5. import javax.servlet.ServletException;  
    6. import javax.servlet.http.HttpServlet;  
    7. import javax.servlet.http.HttpServletRequest;  
    8. import javax.servlet.http.HttpServletResponse;  
    9.   
    10. import org.ygy.service.ServiceException;  
    11. import org.ygy.service.UserService;  
    12.   
    13. public class UserServlet extends HttpServlet {  
    14.     private static final long serialVersionUID = 3202117956537528245L;  
    15.   
    16.     @Override  
    17.     protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
    18.             throws ServletException, IOException {  
    19.         doPost(req , resp);  
    20.     }  
    21.   
    22.     @Override  
    23.     protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
    24.             throws ServletException, IOException {  
    25.         String action = req.getParameter("action");  
    26.           
    27.         UserService service = new UserService();  
    28.         if("register".equals(action)) {  
    29.             //注册  
    30.             String email = req.getParameter("email");  
    31.             service.processRegister(email);  
    32.               
    33.             req.getRequestDispatcher("register_success.jsp").forward(req , resp);  
    34.         } else if("activate".equals(action)) {  
    35.             //激活  
    36.             String email = req.getParameter("email");  
    37.             String validateCode = req.getParameter("validateCode");  
    38.               
    39.             try {  
    40.                 service.processActivate(email , validateCode);  
    41.                 req.getRequestDispatcher("activate_success.jsp").forward(req , resp);  
    42.             } catch (ServiceException e) {  
    43.                 req.setAttribute("message" , e.getMessage());  
    44.                 req.getRequestDispatcher("activate_failure.jsp").forward(req , resp);  
    45.             }  
    46.               
    47.         }  
    48.     }  
    49.   
    50. }  

    4.业务逻辑层

    这里有两个方法,一个处理注册,一个处理激活

    在处理激活时,对链接的可以进行更严谨的验证

    [java] view plain copy
    1. package org.ygy.service;  
    2.   
    3. import java.util.Date;  
    4.   
    5. import org.ygy.dao.UserDao;  
    6. import org.ygy.model.User;  
    7. import org.ygy.util.MD5Util;  
    8. import org.ygy.util.MailUtil;  
    9.   
    10. public class UserService {  
    11.     private UserDao dao = null;  
    12.       
    13.     /** 
    14.      * 处理注册 
    15.      * @param email 
    16.      */  
    17.     public void processRegister(String email) {  
    18.         User user = new User();  
    19.         user.setEmail(email);  
    20.         user.setRegisterTime(new Date());  
    21.         user.setStatus(0);  
    22.         //这里可以将激活码设计的更复杂  
    23.         user.setValidateCode(MD5Util.encode2hex(email));  
    24.           
    25.         dao = new UserDao();  
    26.         dao.save(user);  
    27.           
    28.         //发送邮件  
    29.         StringBuffer sb = new StringBuffer("点击下面链接激活账号,48小时生效,否则重新注册账号,链接只能使用一次,请尽快激活!</br>");  
    30.         sb.append("<a href=\"http://localhost:8080/JavaMailDemo/user?action=activate&email=")  
    31.             .append(email)  
    32.             .append("&validateCode=")  
    33.             .append(user.getValidateCode())  
    34.             .append("\">http://localhost:8080/JavaMailDemo/user?action=activate&email=")  
    35.             .append(email)  
    36.             .append("&validateCode=")  
    37.             .append(user.getValidateCode())  
    38.             .append("</a>");  
    39.         MailUtil.send(email , sb.toString());  
    40.               
    41.     }  
    42.       
    43.     /** 
    44.      * 处理激活 
    45.      * @param email 邮箱地址 
    46.      * @param validateCode 验证码 
    47.      * @throws ServiceException  
    48.      */  
    49.     public void processActivate(String email , String validateCode)throws ServiceException {  
    50.         dao = new UserDao();  
    51.         User user = dao.findByEmail(email);  
    52.           
    53.         //验证用户是否存在  
    54.         if(user != null) {  
    55.             //验证用户状态  
    56.             if(user.getStatus() == 0) {  
    57.                 Date currentTime = new Date();  
    58.                 //验证链接是否过期  
    59.                 if(currentTime.before(user.getLastActivateTime())) {  
    60.                     //验证激活码是否正确  
    61.                     if(validateCode.equals(user.getValidateCode())) {  
    62.                         //激活成功,  
    63.                         dao.updateUserStatus(user.getId(), 1);  
    64.                     } else {  
    65.                         throw new ServiceException("激活码不正确");  
    66.                     }  
    67.                 } else {  
    68.                     throw new ServiceException("激活码已过期!");  
    69.                 }  
    70.             } else {  
    71.                 throw new ServiceException("邮箱已激活,请登录!");  
    72.             }  
    73.         } else {  
    74.             throw new ServiceException("该邮箱未注册(邮箱地址不存在)!");  
    75.         }  
    76.           
    77.     }  
    78.   
    79. }  

    5.持久层

    [java] view plain copy
    1. package org.ygy.dao;  
    2.   
    3. import org.hibernate.HibernateException;  
    4. import org.hibernate.Session;  
    5. import org.hibernate.Transaction;  
    6. import org.ygy.model.User;  
    7. import org.ygy.util.HibernateUtil;  
    8.   
    9. public class UserDao {  
    10.   
    11.     /** 
    12.      * 保存用户 
    13.      * @param user 
    14.      */  
    15.     public void save(User user) {  
    16.         Session session = HibernateUtil.getSession();  
    17.         Transaction tx = session.beginTransaction();  
    18.           
    19.         try {  
    20.             session.save(user);  
    21.             tx.commit();  
    22.         } catch (HibernateException e) {  
    23.             e.printStackTrace();  
    24.             tx.rollback();  
    25.         } finally {  
    26.             HibernateUtil.closeSession();  
    27.         }  
    28.           
    29.     }  
    30.   
    31.     /** 
    32.      * 根据Email查找用户 
    33.      * @param email 
    34.      * @return 
    35.      */  
    36.     public User findByEmail(String email) {  
    37.         Session session = HibernateUtil.getSession();  
    38.         session.beginTransaction();  
    39.           
    40.         User user = (User) session.createQuery("select u from User u where u.email=?")  
    41.                             .setString(0 , email)  
    42.                             .uniqueResult();  
    43.           
    44.         session.getTransaction().commit();  
    45.         HibernateUtil.closeSession();  
    46.           
    47.         return user;  
    48.     }  
    49.   
    50.     /** 
    51.      * 更新用户状态  
    52.      * @param status 
    53.      */  
    54.     public void updateUserStatus(Long id , int status) {  
    55.         Session session = HibernateUtil.getSession();  
    56.         Transaction tx = session.beginTransaction();  
    57.           
    58.         try {  
    59.             session.createQuery("update User u set u.status=? where u.id=?")  
    60.                     .setInteger(0 , status)  
    61.                     .setLong(1 , id)  
    62.                     .executeUpdate();  
    63.             tx.commit();  
    64.         } catch (HibernateException e) {  
    65.             e.printStackTrace();  
    66.             tx.rollback();  
    67.         } finally {  
    68.             HibernateUtil.closeSession();  
    69.         }  
    70.     }  
    71.   
    72. }  

    6.完整代码

    一些代码没有贴出来,已经将代码上传,希望有帮助!

    注:下载之后,记得将MailUtil中的邮箱地址和密码改一下:

    [java] view plain copy
    1. public static final String FROM = "xxx";  
    2. public static final String PWD = "xxx";  
    展开全文
  • java激活邮箱验证资料

    2018-12-17 10:16:21
    java激活邮箱验证功能,就是现如今注册网站时,需要激活邮箱验证的这个功能。
  • 在日常生活中,我们在一个网站中注册一个账户时,往往在提交个人信息后,网站还要我们通过手机或邮件...接下来让我们一起来使用最简单的JSP+Servlet的方式来完成一个通过邮箱验证注册的小案例吧。 准备工作 前提知...
  • Java实现注册邮箱激活验证 置顶 2013年12月26日 18:05:07 kenhins 阅读数:25706 标签: 邮箱 邮件 java hashmap 加密 更多 个人分类: Java web 版权声明:本文为博主原创文章,未经博主允许不得转载。 ...
  • 一.前言: 学习技术对于我们来说是无止境的,只有不断地学习,...1.在邮箱中开启 POP3/SMTP/IMAP 2.设置授权码(163邮箱授权码是没有时效性的) 3.配置pom.xml <dependency> <groupId>org.springframew...
  • 场景: 用户在注册的时候,会在用户的邮箱中发送一个带有链接的邮箱,用户点击邮箱之后,完成验证。 1. 发送的邮件中带有一个 url 链接。 链接中参数中需要有用户的id,还有随机生成唯一的一个 序列码 2. ...
  • Java实现邮箱验证

    2019-04-25 22:35:38
    1.我们首先要实现一个简单的注册功能,然后再实现邮箱验证功能; 2.邮箱验证功能实现:整个功能的核心是创建一个邮件工具类,这需要导入mail.jar。具体代码如下: package com.imooc.utils; import java.util....
  • JAVA邮箱验证重要代码

    2017-09-20 17:19:14
    RegServlet类 Post方法 添加如下代码: if(isRegSuccess){ //发送激活邮件 String emailMsg = "恭喜您注册成功,请点击下面的连接进行激活账户" + " +activeCode+"'>"+"http://localho
  • 昨天用阿里云上线部署我的一个项目,部署成功之后进行功能测试,发现注册功能用不了。最后查找资料发现是因为阿里云默认将25端口号屏蔽了,而我的应用程序中注册功能的实现就是用的25端口号。据阿里云提示需要改成...
  • 大坑 一定要先下jar包,javax.mail的jar包 jar包链接 随便你下那个版本的应该都可以的~~~~ 思路分析 ...import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Me..
  • java mail邮箱验证

    2017-11-21 10:23:54
    java mail邮箱验证 常见的比如注册账号的时候需要邮箱来激活账号然后才能正常登陆。1,整体思路 整体可分为两部分功能,一是给注册的邮箱发送一封激活邮件,二是激活邮件中有一链接用来激活账号。  发送邮件的...
  • java实现用户注册邮箱激活验证

    千次阅读 2020-02-13 11:19:27
    功能:通过邮箱注册账号,注册成功会向邮箱发送激活邮件。提示用户登录邮箱进行账户激活,方可使用账号。 流程:本质上就是向user表里新增一条数据,user表中应有一个code字段存放随机串。code在添加用户时随机生成...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 380
精华内容 152
关键字:

java邮箱验证注册

java 订阅