在前面的博客中,小编主要结合SSH网上商城这个项目,简单的介绍了如何实现邮件发送的这个功能,邮件发送了,接下来就是激活了,为什么呢?现在大多网站都要通过对账号进行激活,然后才能注册成功,这是防止恶性注册的措施,只要在注册账号时所填写的邮箱找到注册网站发来的邮件,并点击激活链接就可以完成激活。在上篇博客中,激活邮件已经发送完毕,接下来要做的就是点击邮箱里面的激活邮件,完成激活实现登录,那么这个功能该如何实现呢?今天这篇博客,小编就主要简单的来介绍一下如何实现用户激活这个功能,希望对有需要的小伙伴有帮助,还请各位大牛多多指教哦`(*∩_∩*)′!

首先第一步,我们在UserAction.java类里面编写一个用户激活的方法,代码如下所示:

/**
	 * 用户激活的方法
	 * author 丁国华
	 */
	public String active(){
		//根据激活码查询用户:
		User existUser=userService.findByCode(user.getCode());
		//判断
		if(existUser==null){
			//激活码错误
			this.addActionMessage("激活失败:激活码错误!");
		}else{
			//激活成功
			//修改用户的状态
			existUser.setState(1);
			existUser.setCode(null);
			userService.update(existUser);
			this.addActionMessage("激活成功:请去登录!");

		}
		return "msg";

	}

接着,第二步,我们来编写UserService.java类中方法,根据激活码查询用户,具体代码如下所示:

package cn.itcast.shop.user.service;

import org.springframework.transaction.annotation.Transactional;

import cn.itcast.shop.user.dao.UserDao;
import cn.itcast.shop.user.vo.User;
import cn.itcast.shop.utils.MailUitls;
import cn.itcast.shop.utils.UUIDUtils;

/**
 * 用户模块业务层代码
 * @author 丁国华
 *
 */

@Transactional

public class UserService {

	//注入UserDao
	private UserDao userDao;

	public void setUserDao(UserDao userDao){
		this.userDao =userDao;

	}

	//按用户名查询用户的方法
	public User findByUsername (String username){
		return userDao.findByUsername(username);
	}

	//业务层完成用户注册代码
	public void save(User user) {
		//将数据存入到数据库
		user.setState(0); //0代表用户激活  1代表用户已经激活
		String code = UUIDUtils.getUUID()+UUIDUtils.getUUID();
		user.setCode(code);
		userDao.save(user);

		//发送激活邮件
		MailUitls.sendMail(user.getEmail(), code);

	}

	//业务层根据激活码查询用户
	public User findByCode(String code) {

		return userDao.findByCode(code);

	}
    //修改用户的状态的方法
	public void update(User existUser) {
		userDao.update(existUser);

	}

}

接着,第三步,我们来编写UserDao.java类中的方法,具体代码如下所示:

package cn.itcast.shop.user.dao;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import java.util.List;

import cn.itcast.shop.user.vo.User;

/**
 * 用户模块持久层代码
 * @author 丁国华
 *
 */

public class UserDao extends  HibernateDaoSupport {

	//按名次查询是否有该用户
	public User findByUsername (String username){
		String hql ="from User where username= ?";
		List <User> list=this.getHibernateTemplate().find(hql,username);
		if(list !=null && list.size() > 0){
			return list.get(0);
		}
		 return null;

		}

	//注册用户存入数据库代码实现
	public void save(User user) {
		// TODO Auto-generated method stub
		this.getHibernateTemplate().save(user);

	}

	//根据激活码查询用户
	public User findByCode(String code) {
		String hql = "from User where code =?";
		List<User> list=this.getHibernateTemplate().find(hql,code);
		if(list !=null && list.size() > 0){
			return list.get(0);
		}
		 return null;

		}

	//修改用户状态的方法
	public void update(User existUser) {

		this.getHibernateTemplate().update(existUser);
	}
	}

至此,我们的代码部分就已经编写完毕了,我们来看一下运行效果,首先我们来注册一个用户,如下图所示:


       点击同意以下协议并注册,出现如下界面:

接着,来看一下小编的邮箱是否收到激活邮件,如下图所示:

点击激活链接,我们来看一下会有怎么样的奇迹nie,如下图所示:

小编寄语:该博文,小编主要简单介绍了如何激活用户,总的来说,实现的思路就是在邮箱客户端中点击激活链接,然后根据传递激活码进行用户查询,如果用户不为空,我们就修改用户的状态;如果用户为空,那就证明激活码被篡改了,SSH网上商城,精彩未完待续~~~~~~

SSH网上商城---用户激活的更多相关文章

  1. SSH网上商城---邮件发送

    注册网站账号的时候,都需要发送激活邮件,然后让注册的用户点击激活链接方可完成注册,不过话说回来,为什么注册的时候需要发送邮件呢?为什么不注册的时候直接激活呢?一定要收一封激活帐号的邮件?网站这样做的好 ...

  2. SSH网上商城---需求分析+表关系分析

    SSH---小编初次接触的时候傻傻的以为这个跟SHE有什么关系呢?又是哪路明星歌手,后来才知道小编又土鳖了,原来SSH是这个样子滴,百度百科对她这样阐述,SSH即 Spring + Struts +H ...

  3. 《SSH网上商城》-视频目录--代码可以跑起来

    本课程是2015年2月份的,就是14年底的. 课程第一天的代码-添加 jsp-api.jar   servlet-api.jar就可以跑起来,环境 JDK1.7 和tomcat8, SSH网上商城\S ...

  4. SSH网上商城一

    Java高级项目之SSH网上商城项目实战: 1.采用目前最主流的三大框架开发即Struts2+Spring+Hibernate框架整合开发.2.通过AJAX技术提供良好的用户体验.3.提供了邮箱激活的 ...

  5. SSH网上商城---使用ajax完成用户名是否存在异步校验

    小伙伴在上网的时候,需要下载或者观看某些视频资料,更或者是在逛淘宝的时候,我们都需要注册一个用户,当我们填写好各种信息,点击确定的时候,提示用户名已经存在,小编就想,为什么当我们填写完用户名的时候,她 ...

  6. [Java]ssh网上商城总结 标签: hibernatessh 2016-05-15 21:03 1099人阅读 评论(32)

    前几日敲完了ssh网上商城,虽然现在已经敲完了整个系统,却发现自己对于ssh,了解的一点都不多,什么是struts2,什么是spring,什么是hibernate,自己都是稀里糊涂,然后看了一下后面的 ...

  7. 【SSH网上商城项目实战25】使用java email给用户发送邮件

       转自: https://blog.csdn.net/eson_15/article/details/51475046 当用户购买完商品后,我们应该向用户发送一封邮件,告诉他订单已生成之类的信息, ...

  8. 【SSH网上商城项目实战30】项目总结

      转自:https://blog.csdn.net/eson_15/article/details/51479994 0. 写在前面 项目基本完成了,加上这个总结,与这个项目相关的博客也写了30篇了 ...

  9. 【SSH网上商城项目实战30】项目总结(附源码下载地址)

    项目基本完成了,加上这个总结,与这个项目相关的博客也写了30篇了,积少成多,写博客的过程是固化思路的一个过程,对自己很有用,同时也能帮助别人.顺便说个题外话,在学习的过程中肯定会遇到很多异常出现,我们 ...

随机推荐

  1. [ZJOI 2007]Hide 捉迷藏

    Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩捉迷藏游戏.他们的家很大且构造很奇特,由N个屋子和N-1条双 ...

  2. ●SCOI2018 AFO

    Day2 T3代码: #include<cstdio> #include<cstring> #include<iostream> using namespace s ...

  3. bzoj 1085: [SCOI2005]骑士精神

    Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士,且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵 ...

  4. bzoj 2440 (莫比乌斯函数)

    bzoj 2440 完全平方数 题意:找出第k个不是完全平方数的正整数倍的数. 例如 4  9  16  25 36什么的 通过容斥原理,我们减去所有完全数  4有n/4个,但是36这种会被重复减去, ...

  5. bzoj4517排列计数 错排+组合

    4517: [Sdoi2016]排列计数 Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 1491  Solved: 903[Submit][Statu ...

  6. django rest-framework 3.类 实现restful

    上节提到过,REST框架分别提供了对函数和类的装饰器,之前已经都是通过函数来写视图函数的,现在来尝试使用class 类来实现视图函数 使用基于类编写API视图,允许重用常用的功能,减少代码重复. 一. ...

  7. ds4700更换控制器导致磁盘无法识别-处理方法

    更换DS4700控制器的悲与喜 机型:DS4700     原微码:06.23.xx 更换部件:控制器 (使用的控制器微码07.60.52.00) 误操作过程: 1,关掉存储换控制器 --(兄弟们千万 ...

  8. GC机制

    java虚拟机中的垃圾回收机制是,一个类,当该对象没有更多的应用指向它时,就会被垃圾回收器给回收,从而释放资源.该机制不可以程序员手动调用去回收某个对象,系统自动会去调用,当然程序员可以建议垃圾回收器 ...

  9. Spring @Component的作用详细介绍

    @component 作用 1.@controller 控制器(注入服务)2.@service 服务(注入dao)3.@repository dao(实现dao访问)4.@component (把普通 ...

  10. Map value类型不同的写法

    Map value类型不同的写法 Map<String, Object> accountMap=new HashMap<String, Object>(); int userI ...