java用户邮件激活
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用户邮件激活相关推荐
- 注册时给用户发邮件激活码 , 以及登录操作
注册页面会有如下信息 而在数据库中,其实还有用户uid, 激活码code, 还有state表示用户的状态,如果state=1表示用户已激活,可以正常登陆, state的默认值是0,这个是在user这个 ...
- 用java实现邮件发送验证码
java实现邮件发送验证码 网易邮箱开通POP3SMTP服务的步骤 java实现邮件发送验证码 建议不要用qq邮箱,我使用qq邮箱直接一直给我报530错误,我一直认为我代码写的有错误或者POP3/SM ...
- 用java实现邮件发送
电子邮件 1.基础知识铺垫 要在网络上实现邮件功能,必须要有专门的邮件服务器. 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过的邮件,并把邮件投递到邮件接收者的电子邮箱中. SMTP服 ...
- 旅游网小案例:注册(邮件激活)
注册 分析 前端js //当表单提交时,调用所有的校验方法$("#registerForm").submit(function () {//表单校验if (checkUsernam ...
- 一文教你学会实现以邮件激活的注册账户代码
实现思路 通常,我们在进行各大平台进行注册账户时,都会在邮箱收到一封激活邮件,而在点击其中的激活链接之后,我们就能够激活账户,否则,我们将无法正常使用账户,这使得服务平台所拥有的激活用户的邮件信息真实 ...
- java用户注册邮箱激活
电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等.但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送.本 ...
- java局域网邮件_Java内网发送邮件
最近为单位的系统增加了一个新的功能,为用户定期发送邮件,用了了Javaweb 发送邮件功能,所以对遇到的问题进行整理,为以后遇到同样问题的同志提供一些参考. Java发送邮件的方式有两种,一种是通过j ...
- 使用Cucumber+Rspec玩转BDD(2)——邮件激活
使用Cucumber+Rspec玩转BDD(2)--邮件激活 2009年3月2日 星期一 ### 温故知新 ### 前面我们已经完成了新用户注册功能的开发,为了方便我们后面的开发工作且不扰乱之前的工作 ...
- 发送邮件(注册用户并激活邮箱)
发送邮件(注册用户并激活邮箱) 注册用户 并激活邮箱 的逻辑 1 获得用户数据 2 验证 非空.格式 3 验证 图形验证码 4 判断 用户是否存在,需要不存在 5 判断 邮箱是否已激活使用,需要未激活 ...
- java web 邮件_Javaweb_邮件发送
邮件服务器 简单理解: 用户A给用户B发邮件,A把邮件发送到A所用的邮件服务器(简称a服务器),然后,a服务器确定收件人(B)的邮件服务器(b服务器),a服务器就可以将用户A的邮件发送到b服务器上,到 ...
最新文章
- python基础教程书-7本Python必读的入门书籍
- 5 个最受人喜爱的开源 Django 包
- 我的Ubuntu体验
- PHPStorm的命令行配置成为Git bash的
- (1) 漂亮的日期控件
- LeetCode——maximal-rectangle
- 从linux刷到windows,我为什么从Linux重新回归到Windows平台
- There is no Action mapped for namespace / and action name accredit.
- [JZOJ5553][20190625]谜
- 设置 jetbrains 的背景颜色和字体。
- 彻底卸载VS2015
- ASP发送邮件的代码
- 机器学习项目 - ctr 电商点击率预估
- 常见的导数公式和积分公式
- 工业元宇宙的价值和发展
- 关于高数中导数极限与函数可导性的关系
- 115846-45-2、二肽标记肽Suc-GP-对硝基苯胺、 Suc-Gly-Pro-pNA
- unity3d优化收集摘录
- 【JAVA-Mybatis】MyBatis 常用逻辑符号转换
- 每日访问量统计的一种实现