博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
estore商城案例(一)------用户注册&邮件激活(上)
阅读量:4327 次
发布时间:2019-06-06

本文共 4509 字,大约阅读时间需要 15 分钟。

学习javaweb时间不长,也是第一次发博客,有写的不好的地方请大家多多指出.最近,根据老师上课讲的和自己的想法最终是把estore这个网上商城小案例完成了,所以总结一下放到博客上,希望对像我一样的初学者有所帮助.好了,下面开始正题.

涉及到的功能:

1、注册&邮箱激活

2、登录&添加商品&商品列表

3、过滤器:自动登录&权限管理

4、添加购物车&购物车显示

5、生成订单&在线支付

一、注册&邮箱激活

先展示一下效果:

1、注册首页的用户名、邮箱、验证码都做了ajax提交到服务器去验证。

2、提交注册信息,激活邮件.哦哦,下面的页面没显示多少秒,待会再解决.

数据库中看到刚才注册的用户状态为0,还未激活

 

打开Foxmail接收邮件,点击激活,激活后数据库中的状态将变为1,然后跳转到登陆界面登陆.

二、数据库涉及到的表

1、users表:

create database estoresystem;use estoresystem;create user estore identified by 'estore';grant all on estoresystem.* to estore;CREATE TABLE users (  id int(11) NOT NULL AUTO_INCREMENT,  username varchar(100) NOT NULL,  password varchar(100) NOT NULL,  nickname varchar(100) DEFAULT NULL,  email varchar(100) NOT NULL,  state int(11) DEFAULT NULL,  role varchar(10) DEFAULT NULL,  activecode varchar(100) DEFAULT NULL,  registtime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (id))

  三、在myeclipse中创建工程,开始撸代码。

1、创建数据库连接,使用c3p0连接池,在utils包装创建JdbcUtils类,负责调用数据库资源。当然使用c3p0需要先在src下创建和配置c3p0的xml文件.

public class JdbcUtils {	private static DataSource dataSource = new ComboPooledDataSource();	public static Connection getConnection()	{		try {			 return dataSource.getConnection();		} catch (SQLException e) {						e.printStackTrace();		}		return null;	}	public static DataSource getDataSource()	{		return dataSource;	}

  

2、在domain包里创建users表的实体类User,以及操作users的dao。dao包下存放interface UserDao,dao.impl包下存放UserDao接口的实现类UserDaoImpl。

接口:

public interface UserDao {	//增删改	public abstract boolean executeUpate(String sql, Object... param);	public abstract boolean add(User u);	public abstract boolean deleteByActivecode(User u);	public abstract boolean updateState(User u);	//单查询	public abstract User queryUser(String key, String values);	public abstract User querUserByActivecode(User u);	public abstract User loginByUser(User u);}

  接口实现类

public class UserDaoImpl implements UserDao {    //增删改通用方法	@Override	public boolean executeUpate(String sql,Object...param)	{		QueryRunner runner=new QueryRunner(JdbcUtils.getDataSource());		int i=0;		try {			i=runner.update(sql, param);		} catch (SQLException e) {						e.printStackTrace();		}		return i>0?true:false;	}	//增	@Override	public boolean add(User u)	{	String sql="insert into users values(null,?,?,?,?,0,'user',?,null)";	Object[] param={u.getUsername(),MD5.getMD5(u.getPassword()),u.getNikename(),u.getEmail(),u.getActivecode()};	return executeUpate(sql, param);//使用的上面的增删改通用方法	}		//单查询通用方法				@Override		public User queryUser(String key,String values)		{			QueryRunner runner=new QueryRunner(JdbcUtils.getDataSource());			String sql="select * from users where "+key+"=?";			try {				return runner.query(sql, new BeanHandler
(User.class), values); } catch (SQLException e) { e.printStackTrace(); throw new MyRuntimeException(e); } } //根据激活码查询用户 @Override public User querUserByActivecode(User u) { return queryUser("activecode", u.getActivecode());//使用的上面的单查询通用方法 } //用户登录时使用 @Override public User loginByUser(User u) { QueryRunner runner=new QueryRunner(JdbcUtils.getDataSource()); String sql="select * from users where username=? and password=?"; try { return runner.query(sql, new BeanHandler
(User.class), u.getUsername(),u.getPassword()); } catch (SQLException e) { e.printStackTrace(); throw new MyRuntimeException(e); } }}

  四、下面开始写web层

1、注册页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>注册首页//这个js文件是ajax
用户注册

用户名
密码
重复密码
昵称
邮箱
验证码 验证码

  

function validate(key,values){	var xmlHttp=ajaxFunction();//这里是获取ajax对象的方法,我没写	xmlHttp.onreadystatechange=function()	{		if(xmlHttp.readyState==4&&xmlHttp.status==200)		{			var b=xmlHttp.responseText;			document.getElementById("hidden").value=b;//对于这里的问题是,我本来是想直接把responseText的值回传给主调函数的,但是始终无法获得,问题的原因还未知,待查证.最后我在form表单中添加了一个hidden标签,把responseText的值传给hidden的value,然后主调函数直接调用hidden的value就可以了		}	}	xmlHttp.open("get","/myestore/regist?"+key+"="+values,false);	xmlHttp.send(null);}

  明天继续......

转载于:https://www.cnblogs.com/cmds/p/3900331.html

你可能感兴趣的文章
小D课堂 - 新版本微服务springcloud+Docker教程_4-05 微服务调用方式之feign 实战 订单调用商品服务...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-02 Netflix开源组件断路器
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-01分布式核心知识之熔断、降级
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-04 feign结合hystrix断路器开发实战下...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-03 feign结合hystrix断路器开发实战上...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_6-01 微服务网关介绍和使用场景
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_6-03 高级篇幅之zuul常用问题分析
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-08 断路器监控仪表参数
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_6-02 springcloud网关组件zuul
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-1.快速搭建SpringBoot项目,采用Eclipse...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-4.在线教育后台数据库设计...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-3.热部署在Eclipse和IDE里面的使用...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-3.在线教育站点需求分析和架构设计...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-4.后端项目分层分包及资源文件处理...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-2.快速搭建SpringBoot项目,采用IDEA...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-5.PageHelper分页插件使用
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-6.微信扫码登录回调本地域名映射工具Ngrock...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-8.用户模块开发之保存微信用户信息...
查看>>
Linux下Nginx安装
查看>>