2019独角兽企业重金招聘Python工程师标准>>>

MailUitls.java

package cn.itcast.shop.utils;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * 邮件发送工具类
 *
 */
public class MailUitls {
    /**
     * 发送邮件的方法
     * @param to    :收件人
     * @param code    :激活码
     */
    public static void sendMail(String to,String code){
        /**
         * 1.获得一个Session对象.
         * 2.创建一个代表邮件的对象Message.
         * 3.发送邮件Transport
         */
        // 1.获得连接对象
        Properties props = new Properties();
        props.setProperty("mail.host", "localhost");
        Session session = Session.getInstance(props, new Authenticator() {

@Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("service@shop.com", "111");
            }
            
        });
        // 2.创建邮件对象:
        Message message = new MimeMessage(session);
        // 设置发件人:
        try {
            message.setFrom(new InternetAddress("service@shop.com"));
            // 设置收件人:
            message.addRecipient(RecipientType.TO, new InternetAddress(to));
            // 抄送 CC   密送BCC
            // 设置标题
            message.setSubject("来自购物天堂传智商城官方激活邮件");
            // 设置邮件正文:
            message.setContent("<h1>购物天堂传智商城官方激活邮件!点下面链接完成激活操作!</h1><h3><a href='http://192.168.36.103:8080/shop/user_active.action?code="+code+"'>http://192.168.36.103:8080/shop/user_active.action?code="+code+"</a></h3>", "text/html;charset=UTF-8");
            // 3.发送邮件:
            Transport.send(message);
        } catch (AddressException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        
    }
    //测试
    public static void main(String[] args) {
        sendMail("aaa@shop.com","11111111111111");
    }
}

2、UserService.java

package cn.itcast.shop.user.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import cn.itcast.shop.order.vo.Order;
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.PageBean;
import cn.itcast.shop.utils.UUIDUtils;

/**
 * 用户名模块业务层代码
 *
 */
@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);
    }

// 用户登录的方法
    public User login(User user) {
        return userDao.login(user);
    }

// 业务层用户查询所有
    public PageBean<User> findByPage(Integer page) {
        PageBean<User> pageBean = new PageBean<User>();
        // 设置当前页数:
        pageBean.setPage(page);
        // 设置每页显示记录数:
        // 显示5个
        int limit = 5;
        pageBean.setLimit(limit);
        // 设置总记录数:
        int totalCount = 0;
        totalCount = userDao.findCount();
        pageBean.setTotalCount(totalCount);
        // 设置总页数
        int totalPage = 0;
        if(totalCount % limit == 0){
            totalPage = totalCount / limit;
        }else{
            totalPage = totalCount / limit + 1;
        }
        pageBean.setTotalPage(totalPage);
        // 设置每页显示数据集合:
        int begin = (page - 1)*limit;
        List<User> list = userDao.findByPage(begin,limit);
        pageBean.setList(list);
        return pageBean;
    }

public User findByUid(Integer uid) {
        return userDao.findByUid(uid);
    }

public void delete(User existUser) {
        userDao.delete(existUser);
    }
}

3、UserActon.java

package cn.itcast.shop.user.action;

import java.io.IOException;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

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

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

/**
 * 用户模块Action的类
 * 
 * 
 */
public class UserAction extends ActionSupport implements ModelDriven<User> {
    // 模型驱动使用的对象
    private User user = new User();

public User getModel() {
        return user;
    }
    // 接收验证码:
    private String checkcode;
    
    public void setCheckcode(String checkcode) {
        this.checkcode = checkcode;
    }
    // 注入UserService
    private UserService userService;

public void setUserService(UserService userService) {
        this.userService = userService;
    }

/**
     * 跳转到注册页面的执行方法
     */
    public String registPage() {
        return "registPage";
    }

/**
     * AJAX进行异步校验用户名的执行方法
     * 
     * @throws IOException
     */
    public String findByName() throws IOException {
        // 调用Service进行查询:
        User existUser = userService.findByUsername(user.getUsername());
        // 获得response对象,项页面输出:
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setContentType("text/html;charset=UTF-8");
        // 判断
        if (existUser != null) {
            // 查询到该用户:用户名已经存在
            response.getWriter().println("<font color='red'>用户名已经存在</font>");
        } else {
            // 没查询到该用户:用户名可以使用
            response.getWriter().println("<font color='green'>用户名可以使用</font>");
        }
        return NONE;
    }

/**
     * 用户注册的方法:
     */
    public String regist() {
        // 判断验证码程序:
        // 从session中获得验证码的随机值:
        String checkcode1 = (String) ServletActionContext.getRequest()
                .getSession().getAttribute("checkcode");
        if(!checkcode.equalsIgnoreCase(checkcode1)){
            this.addActionError("验证码输入错误!");
            return "checkcodeFail";
        }
        userService.save(user);
        this.addActionMessage("注册成功!请去邮箱激活!");
        return "msg";
    }

/**
     * 用户激活的方法
     */
    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";
    }

/**
     * 跳转到登录页面
     */
    public String loginPage() {
        return "loginPage";
    }

/**
     * 登录的方法
     */
    public String login() {
        User existUser = userService.login(user);
        // 判断
        if (existUser == null) {
            // 登录失败
            this.addActionError("登录失败:用户名或密码错误或用户未激活!");
            return LOGIN;
        } else {
            // 登录成功
            // 将用户的信息存入到session中
            ServletActionContext.getRequest().getSession()
                    .setAttribute("existUser", existUser);
            // 页面跳转
            return "loginSuccess";
        }
    
    }
    
    /**
     * 用户退出的方法
     */
    public String quit(){
        // 销毁session
        ServletActionContext.getRequest().getSession().invalidate();
        return "quit";
    }

}

4、UserDao.java

package cn.itcast.shop.user.dao;

import java.util.List;

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

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

/**
 * 用户模块持久层代码:
 * 
 */
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) {
        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);
    }

// 用户登录的方法
    public User login(User user) {
        String hql = "from User where username = ? and password = ? and state = ?";
        List<User> list = this.getHibernateTemplate().find(hql,
                user.getUsername(), user.getPassword(), 1);
        if (list != null && list.size() > 0) {
            return list.get(0);
        }
        return null;
    }

public int findCount() {
        String hql = "select count(*) from User";
        List<Long> list = this.getHibernateTemplate().find(hql);
        if (list != null && list.size() > 0) {
            return list.get(0).intValue();
        }
        return 0;
    }

public List<User> findByPage(int begin, int limit) {
        String hql = "from User";
        List<User> list = this.getHibernateTemplate().execute(
                new PageHibernateCallback<User>(hql, null, begin, limit));
        return list;
    }

public User findByUid(Integer uid) {
        return this.getHibernateTemplate().get(User.class, uid);
    }

public void delete(User existUser) {
        this.getHibernateTemplate().delete(existUser);
    }
}

5、User.java

package cn.itcast.shop.user.vo;

import java.util.HashSet;
import java.util.Set;

import cn.itcast.shop.order.vo.Order;

/**
 * 用户名模块实体类:
 *CREATE TABLE `user` (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `addr` varchar(255) DEFAULT NULL,
  `state` int(11) DEFAULT NULL,
  `code` varchar(64) DEFAULT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
 */
public class User {
    private Integer uid;
    private String username;
    private String password;
    private String name;
    private String email;
    private String phone;
    private String addr;
    private Integer state;
    private String code;
    // 一个用户对应多个订单:
    private Set<Order> orders = new HashSet<Order>();
    public Integer getUid() {
        return uid;
    }
    public void setUid(Integer uid) {
        this.uid = uid;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getAddr() {
        return addr;
    }
    public void setAddr(String addr) {
        this.addr = addr;
    }
    public Integer getState() {
        return state;
    }
    public void setState(Integer state) {
        this.state = state;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public Set<Order> getOrders() {
        return orders;
    }
    public void setOrders(Set<Order> orders) {
        this.orders = orders;
    }
    
}

6、User.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
<hibernate-mapping>
    <class name="cn.itcast.shop.user.vo.User" table="user">
        <id name="uid">
            <generator class="native"/>
        </id>
        <property name="username"/>
        <property name="password"/>
        <property name="name"/>
        <property name="email"/>
        <property name="phone"/>
        <property name="addr"/>
        <property name="state"/>
        <property name="code"/>
        
        <set name="orders" cascade="delete">
            <key column="uid"/>
            <one-to-many class="cn.itcast.shop.order.vo.Order"/>
        </set>
    </class>
</hibernate-mapping>

7、UserAdminAction.java

package cn.itcast.shop.user.adminaction;

import cn.itcast.shop.user.service.UserService;
import cn.itcast.shop.user.vo.User;
import cn.itcast.shop.utils.PageBean;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
/**
 * 后台用户管理的Action类
 *
 */
public class UserAdminAction extends ActionSupport implements ModelDriven<User>{
    // 模型驱动使用的类
    private User user = new User();

public User getModel() {
        return user;
    }
    
    // 注入用户的Service
    private UserService userService;
    
    public void setUserService(UserService userService) {
        this.userService = userService;
    }

// 接受page参数
    private Integer page;

public void setPage(Integer page) {
        this.page = page;
    }

// 后台查询所有用户的方法带分页:
    public String findAll(){
        PageBean<User> pageBean = userService.findByPage(page);
        ActionContext.getContext().getValueStack().set("pageBean", pageBean);
        return "findAll";
    }
    
    // 后台用户的删除
    public String delete(){
        User existUser = userService.findByUid(user.getUid());
        userService.delete(existUser);
        return "deleteSuccess";
    }
    
    // 后台用户的编辑
    public String edit(){
        user = userService.findByUid(user.getUid());
        return "editSuccess";
    }
    
    // 后台用户的修改:
    public String update(){
        userService.update(user);
        return "updateSuccess";
    }
}

转载于:https://my.oschina.net/u/2433077/blog/707082

java用户邮件激活相关推荐

  1. 注册时给用户发邮件激活码 , 以及登录操作

    注册页面会有如下信息 而在数据库中,其实还有用户uid, 激活码code, 还有state表示用户的状态,如果state=1表示用户已激活,可以正常登陆, state的默认值是0,这个是在user这个 ...

  2. 用java实现邮件发送验证码

    java实现邮件发送验证码 网易邮箱开通POP3SMTP服务的步骤 java实现邮件发送验证码 建议不要用qq邮箱,我使用qq邮箱直接一直给我报530错误,我一直认为我代码写的有错误或者POP3/SM ...

  3. 用java实现邮件发送

    电子邮件 1.基础知识铺垫 要在网络上实现邮件功能,必须要有专门的邮件服务器. 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过的邮件,并把邮件投递到邮件接收者的电子邮箱中. SMTP服 ...

  4. 旅游网小案例:注册(邮件激活)

    注册 分析 前端js //当表单提交时,调用所有的校验方法$("#registerForm").submit(function () {//表单校验if (checkUsernam ...

  5. 一文教你学会实现以邮件激活的注册账户代码

    实现思路 通常,我们在进行各大平台进行注册账户时,都会在邮箱收到一封激活邮件,而在点击其中的激活链接之后,我们就能够激活账户,否则,我们将无法正常使用账户,这使得服务平台所拥有的激活用户的邮件信息真实 ...

  6. java用户注册邮箱激活

    电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等.但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送.本 ...

  7. java局域网邮件_Java内网发送邮件

    最近为单位的系统增加了一个新的功能,为用户定期发送邮件,用了了Javaweb 发送邮件功能,所以对遇到的问题进行整理,为以后遇到同样问题的同志提供一些参考. Java发送邮件的方式有两种,一种是通过j ...

  8. 使用Cucumber+Rspec玩转BDD(2)——邮件激活

    使用Cucumber+Rspec玩转BDD(2)--邮件激活 2009年3月2日 星期一 ### 温故知新 ### 前面我们已经完成了新用户注册功能的开发,为了方便我们后面的开发工作且不扰乱之前的工作 ...

  9. 发送邮件(注册用户并激活邮箱)

    发送邮件(注册用户并激活邮箱) 注册用户 并激活邮箱 的逻辑 1 获得用户数据 2 验证 非空.格式 3 验证 图形验证码 4 判断 用户是否存在,需要不存在 5 判断 邮箱是否已激活使用,需要未激活 ...

  10. java web 邮件_Javaweb_邮件发送

    邮件服务器 简单理解: 用户A给用户B发邮件,A把邮件发送到A所用的邮件服务器(简称a服务器),然后,a服务器确定收件人(B)的邮件服务器(b服务器),a服务器就可以将用户A的邮件发送到b服务器上,到 ...

最新文章

  1. python基础教程书-7本Python必读的入门书籍
  2. 5 个最受人喜爱的开源 Django 包
  3. 我的Ubuntu体验
  4. PHPStorm的命令行配置成为Git bash的
  5. (1) 漂亮的日期控件
  6. LeetCode——maximal-rectangle
  7. 从linux刷到windows,我为什么从Linux重新回归到Windows平台
  8. There is no Action mapped for namespace / and action name accredit.
  9. [JZOJ5553][20190625]谜
  10. 设置 jetbrains 的背景颜色和字体。
  11. 彻底卸载VS2015
  12. ASP发送邮件的代码
  13. 机器学习项目 - ctr 电商点击率预估
  14. 常见的导数公式和积分公式
  15. 工业元宇宙的价值和发展
  16. 关于高数中导数极限与函数可导性的关系
  17. 115846-45-2、二肽标记肽Suc-GP-对硝基苯胺、 Suc-Gly-Pro-pNA
  18. unity3d优化收集摘录
  19. 【JAVA-Mybatis】MyBatis 常用逻辑符号转换
  20. 每日访问量统计的一种实现

热门文章

  1. C#高级编程笔记(二)
  2. HTML不刷新,改数据
  3. Zsh和oh my zsh的安装和使用
  4. EL表达式判断条件要写在${}内
  5. OpenCV---膨胀与腐蚀
  6. StringBuffer、StringBuilder、冒泡与选择排序、二分查找、基本数据类型包装类_DAY13...
  7. 锁定非物质化的梦想,一切选择都会变简单!
  8. 无法远程连接SQLSERVER2000的解决方法
  9. 运行 ROS-Academy-for-Beginners
  10. EMS邮箱数据库常用命令(二)