java用戶郵件激活

MailUitls.javahtml

package cn.itcast.shop.utils;java

import java.util.Properties;spring

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() {apache

            @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");
    }
}session

二、UserService.javaapp

package cn.itcast.shop.user.service;異步

import java.util.List;ide

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);
    }
}
 

三、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";
    }

}

四、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);
    }
}

五、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;
    }
    
}

六、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>

七、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";     } }  

相關文章
相關標籤/搜索