【JavaMailWeb】用户注册通过邮箱激活案例(2)

简介: 【JavaMailWeb】用户注册通过邮箱激活案例

过滤器-实现全站编码

过滤器,很强悍的一个技术。这个必须要会。

package cn.hncu.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class CharsetFilter implements Filter{
    private String charset=null;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        charset = filterConfig.getInitParameter("charset");
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        request.setCharacterEncoding(charset);
        response.setContentType("text/html;charset="+charset);
        chain.doFilter(request, response);
    }
    @Override
    public void destroy() {
    }
}

点击邮件激活地址后的页面:result.jsp

这个就是点击注册链接后的返回页面。

根据DAO层的不同返回值,实现了分别对用户显示不同的提示。

添加了网页自动跳转!

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>带邮箱激活的注册模块</title>
    <script type="text/javascript">
        var tm;     
        var i=5;
        function time(){
            i--;
            div1.innerHTML = i+"秒钟以后,自动去登录!";
            if(i<1){
                window.clearInterval(tm);//将定时器清除
                window.location.href="<c:url value='index.jsp'/>";      
            }
        }
        onload=function(){
            tm = window.setInterval(time, 1000);
        };
    </script>
  </head>
  <body>
   <c:if test="${count==-1}">
             服务器异常,请重新激活!<br/>
      <a href="<c:url value='/index.jsp'/>">登录</a>
      <br/>
      <div id="div1">
      </div>
   </c:if>   
   <c:if test="${count==0}">
             激活地址错误,请使用正确的激活地址!<br/>
      <a href="<c:url value='/index.jsp'/>">登录</a>
      <br/>
      <div id="div1">
      </div>
   </c:if>   
   <c:if test="${count==1}">
            你已经激活过,请勿重复激活!<br/>
      <a href="<c:url value='/index.jsp'/>">登录</a>
      <br/>
      <div id="div1">
      </div>
   </c:if>   
   <c:if test="${count==2}">
            激活成功,欢迎去登录!<br/>
      <a href="<c:url value='/index.jsp'/>">登录</a>
      <br/>
      <div id="div1">
      </div>
   </c:if>   
  </body>
</html>

LoginDaoJdbc-用户登录DAO实现类

这里用到了c3p0和dbutils,在query方法中,new BeanHandler<User>(User.class) 此句可以直接给我们返回一个User对象!

package cn.hncu.login.dao;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import cn.hncu.domain.User;
import cn.hncu.pubs.C3p0Pool;
public class LoginDaoJdbc implements LoginDAO{
    public User login(User u){
        String sql = "select * from users where name=? and pwd=? and active='1' ";
        QueryRunner run = new QueryRunner(C3p0Pool.getDataSource());
        try {
            User user = run.query(sql, new BeanHandler<User>(User.class) , u.getName(),u.getPwd());
            return user;
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }
}

还有很多代码,就不一一列出了,

项目应用MVC框架思想,注意分层。

演示结果:

image.png



激活的原理很简单,我们链接后面向我们的ActiveServlet传递了一个acode参数,用这个参数的值(UUID生成的)到后台去校验,以让用户通过验证!

完整的项目源代码链接:

https://github.com/chenhaoxiang/Java/tree/master/myMailWeb

目录
相关文章
|
6月前
|
安全 API 数据安全/隐私保护
email邮箱登录入口,5大邮箱分析
在数字化时代,电子邮件是不可或缺的沟通工具。本文分析了五大主流邮箱:Gmail以其强大搜索和稳定性受欢迎,QQ邮箱因与QQ平台整合深受年轻人喜爱,网易邮箱以专业服务和稳定性赢得用户,Outlook以简洁高效著称,雅虎邮箱则以安全防护见长。此外,AokSend提供高效验证码发送服务。选择合适的邮箱能提升效率,各邮箱特点各异,希望能帮您找到最佳选择。
|
存储 前端开发 PHP
构建一个简单的网站,包括用户注册、登录功能
构建一个简单的网站,包括用户注册、登录功能
284 1
|
1月前
|
数据安全/隐私保护
(只需五步)注册谷歌账号详细步骤,解决“此电话号码无法验证”问题
注册google一直不方便,因为如果直接去google官网注册,那么它大概率会显示“此电话号码无法用于进行验证”接下来,按着教程来一步步做,就可以实现跳过此限制,成功用手机号注册google了。很简单的。
312 1
|
5月前
|
SQL 数据可视化 数据库
基于jsp+servlet的javaweb实现最基本的用户注册登陆注销功能
基于jsp+servlet的javaweb实现最基本的用户注册登陆注销功能
23 0
|
6月前
|
存储 前端开发 Java
①实现基于session的登录流程:发送验证码、登录注册、校验登陆状态
①实现基于session的登录流程:发送验证码、登录注册、校验登陆状态
184 0
|
API 数据安全/隐私保护
漏刻有时忘记超级管理员密码的解决方案:通过API接口设置超级管理员
漏刻有时忘记超级管理员密码的解决方案:通过API接口设置超级管理员
82 0
|
数据安全/隐私保护 数据库管理 Python
用python实现用户注册登陆系统
用python实现用户注册登陆系统
220 0
|
存储 前端开发 Java
一文教你学会实现以邮件激活的注册账户代码
通常,我们在进行各大平台进行注册账户时,都会在邮箱收到一封激活邮件,而在点击其中的激活链接之后,我们就能够激活账户,否则,我们将无法正常使用账户,这使得服务平台所拥有的激活用户的邮件信息真实有了保证。
164 0
|
存储 SQL 关系型数据库
|
数据安全/隐私保护
今天将用户注册,登陆的三个界面界面及其倒计时。 注册和登录分别有三个界面,原理都类似。如下:
今天将用户注册,登陆的三个界面界面及其倒计时。 注册和登录分别有三个界面,原理都类似。如下:
117 0